Nodes should be able to join and leave without too much disruption. Bootstrapping, joining and autodiscovery should be as easy as possible, allowing for easy scaling across all members of the network.
2. Create two directories; one to hold the Nebula config and certificates and the other for the SeaweedFS config and certificates.
3. Create `config.yaml` in the Nebula config directory.
1. Use `config-node.yaml` as the template for a normal cluster node.
2. Use `config-lighthouse.yaml` as the template for a Lighthouse.
4. Update the `docker-compose.yaml` volume values for the bind mount directories for both the Nebula and SeaweedFS config directories; check and set a value for the `/storage` bind mount.
1. Set the `LIGHTHOUSE` environment variable to `true` for a Lighthouse.
5. Decrypt and un-tar the contents of the `seaweed-conf.enc` file into the SeaweedFS config directory.
6. Run the container with `docker-compose up -d`. This will create two files in the Nebula config directory, `host.key` and `host.csr`.
7. Send the contents of the `host.csr` file to a cluster admin to sign.
8. The returned, signed certificate should go alongside the `host.csr` file and be called, `host.crt`.
9. Start the container again and it should find the config and certificates and then connect to the existing cluster.
1. For a Lighthouse: create a pull request to update the `static_host_map` entry in the repo's `node-config.yaml` amended with the Lighthouse's Nebula mesh and public IP addresses and encourage node admins to update their nodes' config files from the repo.