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