diff --git a/README.md b/README.md index bb9536a..a989040 100644 --- a/README.md +++ b/README.md @@ -194,17 +194,32 @@ For a more detail read the full # Examples -- [greenlock-express.js/examples/](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples) - - [Express](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/express/) - - [Node's **http2**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http2/) - - [Node's https](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/https/) - - [**WebSockets**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/websockets/) - - [Socket.IO](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/socket.io/) - - [Cluster](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/cluster/) - - [**Wildcards**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/) (coming soon) - - [**Localhost**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/) (coming soon) - - [**CI/CD**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/) (coming soon) - - [HTTP Proxy](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http-proxy/) +To see all of the examples, just browse [greenlock-express.js/examples/](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples) + +| Example | Location + Description | +| :--------------------: | :----------------------------------------------------------------------------------------------------------------------------------------- | +| Express | [./examples/express/][ex-express] how to export an express app | +| Node's **http2** | [./examples/http2/][ex-http2] how to use Node's built-in http2 server | +| Node's https | [./examples/https][ex-https] how to customize the https server | +| **WebSockets** | [./examples/websockets/][ex-websockets] how to use `on('upgrade')` | +| Socket.IO | [./examples/socket.io][ex-socketio] how to overcomplicate a persistent connection | +| Cluster | [./examples/cluster/][ex-cluster] how to use Node's built-in clustering with master and worker processes | +| **Wildcards** | [coming someday][ex-wildcards] (ask to help create this) how to use DNS-01 for wildcard certs | +| **Localhost** | [coming someday][ex-localhost] (ask to help create this) how to use DNS-01 for domains that resolve to private networks, such as 127.0.0.1 | +| **CI/CD** | [coming someday][ex-cicd] (ask to help create this) how to use the `--staging` environment for test deployments | +| HTTP Proxy | [examples/http-proxy][ex-http-proxy] how to (reverse) proxy decrypted traffic to another server | +| - | Build your own
Be sure to tell me about it (open an issue) | + +[ex-express]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/express/ +[ex-http2]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http2/ +[ex-https]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/https2/ +[ex-websockets]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/websockets/ +[ex-socketio]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/socketo.io/ +[ex-cluster]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/cluster/ +[ex-wildcards]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/ +[ex-localhost]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/ +[ex-cicd]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/ +[ex-http-proxy]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http-proxy/ # Troubleshooting @@ -257,15 +272,40 @@ See the section on **Custom** callbacks and plugins below. --> - [Custom Domain Management](https://git.rootprojects.org/root/greenlock-manager-test.js) - - `npx greenlock init --manager ./path-or-npm-name.js --manager-FOO 'set option FOO'` + - edit `server.js` and/or `.greenlockrc` to switch from the default `configDir` manager to your config system or database + - CLI example: `npx greenlock init --manager ./path-or-npm-name.js --manager-FOO 'set option FOO'` - [Custom Key & Cert Storage](https://git.rootprojects.org/root/greenlock-store-test.js) - - `npx greenlock defaults --store greenlock-store-fs --store-base-path ./greenlock.d` + - edit the `defaults` section of `greenlock.d/config.json` to change the certificate store or database + - CLI example: `npx greenlock defaults --store greenlock-store-fs --store-base-path ./greenlock.d` - [Custom ACME HTTP-01 Challenges](https://git.rootprojects.org/root/acme-http-01-test.js) - - `npx greenlock defaults --challenge-http-01 ./you-http-01.js` - - `npx greenlock update --subject example.com --challenge-http-01 acme-http-01-standalone` + - edit the `defaults` section of `greenlock.d/config.json` to change the challenges by hand + - CLI example: `npx greenlock defaults --challenge-http-01 ./you-http-01.js` - [Custom ACME DNS-01 Challenges](https://git.rootprojects.org/root/acme-dns-01-test.js) - - `npx greenlock defaults --challenge-dns-01 acme-dns-01-ovh --challenge-dns-01-token xxxx` - - `npx greenlock update --subject example.com --challenge-dns-01 ./your-dns-01.js` + - edit the `defaults` section of `greenlock.d/config.json` to change the challenges by hand + - CLI example: `npx greenlock defaults --challenge-dns-01 acme-dns-01-ovh --challenge-dns-01-token xxxx` + - Per-site example: `npx greenlock update --subject example.com --challenge-dns-01 ./your-dns-01.js` + - API example: + ```js + greenlock.sites.set({ + subject: "example.com", + challenges: { + "dns-01": { + module: "my-npm-module-name", + foo: "some option", + bar: "some other option" + } + } + }); + ``` + +If you're using the default `configDir` management you can edit `greenlock.d/config.json` by hand to change +which default and per-site modules are used. + +You can use the CLI, even if you're using a database, buckets, or your own file storage. + +You can also use the API, particularly if you need to set values dynamically per-site or per-user +rather than using the global defaults. The certificate store and all challenges can be set +per-site, but most per-site use cases are for DNS-01. # Ready-made Integrations diff --git a/examples/cluster/server.js b/examples/cluster/server.js index f15adca..67e02f0 100644 --- a/examples/cluster/server.js +++ b/examples/cluster/server.js @@ -16,7 +16,12 @@ require("../../") // n-1 cpus, with a minimum of 2 workers: 4 }) - .ready(httpsWorker); + // ready is only executed by workers (no-op in master) + .ready(httpsWorker) + // master is only executed by master (no-op in a worker) + .master(function() { + console.info("I'm the master"); + }); function httpsWorker(glx) { // WRONG