mirror of
				https://github.com/therootcompany/greenlock-express.js.git
				synced 2024-11-16 17:28:59 +00:00 
			
		
		
		
	add more paragraph text to QuickStart
This commit is contained in:
		
							parent
							
								
									f2abc44601
								
							
						
					
					
						commit
						a025022fb2
					
				
							
								
								
									
										128
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								README.md
									
									
									
									
									
								
							@ -103,40 +103,63 @@ Serving sites with Free SSL is as easy as 1, 2, 3... 4
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 1. Create your Project
 | 
					## 1. Create your Project
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you need to install Node.js, do so:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mac, Linux:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# Install the latest node, if needed (Mac, Linux)
 | 
					 | 
				
			||||||
curl -fsS https://webinstall.dev/node | bash
 | 
					curl -fsS https://webinstall.dev/node | bash
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Windows 10
 | 
					Windows 10:
 | 
				
			||||||
# curl -fsSA "MS" https://webinstall.dev/node | powershell
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create your project, add Greenlock Express v4
 | 
					```pwsh
 | 
				
			||||||
 | 
					curl -fsSA "MS" https://webinstall.dev/node | powershell
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then create a directory for your project, and initialize it:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					mkdir -p my-sites
 | 
				
			||||||
 | 
					pushd my-sites
 | 
				
			||||||
npm init
 | 
					npm init
 | 
				
			||||||
npm install --save greenlock-express@v4
 | 
					npm install --save greenlock-express@v4
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can use **local file storage** or a **database**. The default is to use file storage.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 2. Initialize and Config (Dir or DB)
 | 
					## 2. Initialize and Config (Dir or DB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can use **local file storage** or a **database**. The default is to use file storage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You'll need to create `server.js` and `greenlock.d/config.json`. You can do so using the CLI, API, or by hand.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Using the CLI (simplest, recommended)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Anytime you install an npm module that contains an executable,
 | 
				
			||||||
 | 
					you can run it using `npx`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To initialize the Greenlock config, run `npx greenlock init`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# Note: you can use the CLI to create `server.js` and `greenlock.d/config.json`
 | 
					 | 
				
			||||||
npx greenlock init --config-dir ./greenlock.d --maintainer-email 'jon@example.com'
 | 
					npx greenlock init --config-dir ./greenlock.d --maintainer-email 'jon@example.com'
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### By Hand (for advanced users)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Create `server.js` like so:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`server.js`:
 | 
					`server.js`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```js
 | 
					```js
 | 
				
			||||||
"use strict";
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var app = require("./app.js");
 | 
					var app = require('./app.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require("greenlock-express")
 | 
					require('greenlock-express')
 | 
				
			||||||
    .init({
 | 
					    .init({
 | 
				
			||||||
        packageRoot: __dirname,
 | 
					        packageRoot: __dirname,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // contact for security and critical bug notices
 | 
					        // where to look for configuration
 | 
				
			||||||
        configDir: "./greenlock.d",
 | 
					        configDir: './greenlock.d',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // whether or not to run at cloudscale
 | 
					        // whether or not to run at cloudscale
 | 
				
			||||||
        cluster: false
 | 
					        cluster: false
 | 
				
			||||||
@ -146,27 +169,55 @@ require("greenlock-express")
 | 
				
			|||||||
    .serve(app);
 | 
					    .serve(app);
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Create `app.js` like so:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`app.js`:
 | 
					`app.js`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```js
 | 
					```js
 | 
				
			||||||
"use strict";
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Here's a vanilla HTTP app to start,
 | 
					// Here's a vanilla HTTP app to start,
 | 
				
			||||||
// but feel free to replace it with Express, Koa, etc
 | 
					// but feel free to replace it with Express, Koa, etc
 | 
				
			||||||
var app = function(req, res) {
 | 
					var app = function(req, res) {
 | 
				
			||||||
    res.end("Hello, Encrypted World!");
 | 
					    res.end('Hello, Encrypted World!');
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = app;
 | 
					module.exports = app;
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 3. Add Sites
 | 
					Greenlock uses `.greenlockrc` to figure out whether to use the file system or a database for config,
 | 
				
			||||||
 | 
					as well as where its root directory is.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`.greenlockrc`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```json
 | 
				
			||||||
 | 
					{"manager":{"module":"@greenlock/manager"},"configDir":"greenlock.d"}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `greenlock.d/config.json` is NOT intended to be edited by hand, as it is a substitute for a database, but it looks like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```json
 | 
				
			||||||
 | 
					{ "defaults": { "subscriberEmail": "john.doe@example.com" }, "sites": [] }
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 3. Add Sites
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For security, you must specify which sites you allow to request certificates. If you need this to be dynamic (i.e. checking a database or API, see the section below on custom site managers).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Every site has a "subject" (its primary domain name) and one or more "altnames" (secondary or related domain names on the same certificate).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Using CLI (simple, recommended)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Simply supply the names of sites that you manage and they will be added to the file system config, or database.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# Note: you can use the CLI to edit the config file
 | 
					 | 
				
			||||||
npx greenlock add --subject example.com --altnames example.com,www.example.com
 | 
					npx greenlock add --subject example.com --altnames example.com,www.example.com
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### By Hand (debugging only)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You should NOT edit `greenlock.d/config.json` with your own tools. Use `greenlock.manager.add({})` instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`greenlock.d/config.json`:
 | 
					`greenlock.d/config.json`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- TODO update manager to write array rather than object -->
 | 
					<!-- TODO update manager to write array rather than object -->
 | 
				
			||||||
@ -175,7 +226,15 @@ npx greenlock add --subject example.com --altnames example.com,www.example.com
 | 
				
			|||||||
{ "sites": [{ "subject": "example.com", "altnames": [ "example.com", "www.example.com" ] }] }
 | 
					{ "sites": [{ "subject": "example.com", "altnames": [ "example.com", "www.example.com" ] }] }
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 4. Hello, Encrypted World!
 | 
					## 4. Hello, Encrypted World!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					That was it! Now you can run your server!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When you run `npm start`, it will automatically run `node server.js` (or `package.json.scripts.start`).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For arguments that `npm start` should ignore, place them after `--`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Here we use `--staging` in order to tell greenlock to issue test certificates rather than real certificates.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
# Note: you can use npm start to run server.js with the --staging flag set
 | 
					# Note: you can use npm start to run server.js with the --staging flag set
 | 
				
			||||||
@ -190,7 +249,40 @@ Listening on 0.0.0.0:80 for ACME challenges and HTTPS redirects
 | 
				
			|||||||
Listening on 0.0.0.0:443 for secure traffic
 | 
					Listening on 0.0.0.0:443 for secure traffic
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Walkthrough
 | 
					If everything worked you can visit your site in your browser, and after a few seconds you'll see a "Hello World" message, and certificates will be saved in `greenlock.d/staging`. Run again without `--staging` and you will get real certificates.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Season to taste
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now you're ready to update `app.js` with your code. For example, try this next:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					npm install --save express
 | 
				
			||||||
 | 
					mkdir -p public
 | 
				
			||||||
 | 
					echo '<h1>Hello!</h1>' >> public/index.html
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`app.js`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```js
 | 
				
			||||||
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var path = require('path');
 | 
				
			||||||
 | 
					var express = require('express');
 | 
				
			||||||
 | 
					var app = express();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app.get('/', express.static(path.join(__dirname, "public")));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = app;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// for development and debugging
 | 
				
			||||||
 | 
					if (require.main === module) {
 | 
				
			||||||
 | 
					    require('http').createServer(app).listen(3000, function () {
 | 
				
			||||||
 | 
					        console.info("Listening for HTTP on", this.address());
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Walkthrough
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For a more detail read the full
 | 
					For a more detail read the full
 | 
				
			||||||
[WALKTHROUGH](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/WALKTHROUGH.md).
 | 
					[WALKTHROUGH](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/WALKTHROUGH.md).
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user