3 KiB
InfraNet
Distributed & E2EE self-hosting. The goal is to have nodes voluntarily join the mesh and participate in the network providing compute and storage.
Tenets
-
End-to-end encrypted
E2EE is a requirement for privacy.
-
Collabrative
Members of the network are expected to cooperate to the best of their abilities, whether it's technical, financial or resources.
-
Distributed, resilient, reliable and dynamic
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.
-
Free and open
All components should be free and open.
-
Shared responsibility
Knowledge of components will be documented and shared and responsibility for the uptime and maintainence should be shared where possible.
Design principles
-
Tested
All components and goals should be testable to ensure changes don't impact existing functionality or reliabilty.
-
Monitored
All components should be monitored and raise appropriate alerts to ensure good health and early detection of potential problems.
-
Containerised
Simple, versioned components that can be resource constrained, when required, would be of great benefit.
-
IPv6
Avoiding issues with IPv4 NAT, etc. would be desirable.
-
Multi-architecture
The underlaying hardware type shouldn't be a constraint, within reason.
Installation
- Clone the repo.
- Create two directories; one to hold the Nebula config and certificates and the other for the SeaweedFS config and certificates.
- Create
config.yaml
in the Nebula config directory.- Use
config-node.yaml
as the template for a normal cluster node. - Use
config-lighthouse.yaml
as the template for a Lighthouse.
- Use
- 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.- Set the
LIGHTHOUSE
environment variable totrue
for a Lighthouse.
- Set the
- Decrypt and un-tar the contents of the
seaweed-conf.enc
file into the SeaweedFS config directory.
Ask a cluster admin or member for the password.openssl enc -aes-256-cbc -iter 30 -d -salt -in seaweed-conf.enc | (cd /path/to/infranet/config/seaweedfs && tar xvz)
- Run the container with
docker-compose up -d
. This will create two files in the Nebula config directory,host.key
andhost.csr
. - Send the contents of the
host.csr
file to a cluster admin to sign. - The returned, signed certificate should go alongside the
host.csr
file and be called,host.crt
. - Start the container again and it should find the config and certificates and then connect to the existing cluster.
- For a Lighthouse: create a pull request to update the
static_host_map
entry in the repo'snode-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.
- For a Lighthouse: create a pull request to update the