2022-03-24 09:11:25 +00:00
# InfraNet
2022-03-24 08:54:37 +00:00
2022-03-28 10:06:21 +01:00
Distributed & E2EE self-hosting. The goal is to have nodes voluntarily join the mesh and participate in the network providing compute and storage.
2022-03-24 08:54:37 +00:00
2022-03-28 10:06:21 +01:00
## Tenets
2022-03-24 13:57:38 +00:00
2022-03-24 09:11:25 +00:00
* End-to-end encrypted
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
E2EE is a requirement for privacy.
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
* Collabrative
2022-03-24 09:19:22 +00:00
2022-03-24 09:28:32 +00:00
Members of the network are expected to cooperate to the best of their abilities, whether it's technical, financial or resources.
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
* Distributed, resilient, reliable and dynamic
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
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.
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
* Free and open
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
All components should be free and open.
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
* Shared responsibility
2022-03-24 09:19:22 +00:00
2022-03-24 13:57:38 +00:00
Knowledge of components will be documented and shared and responsibility for the uptime and maintainence should be shared where possible.
2022-03-24 09:11:25 +00:00
## Design principles
2022-03-24 13:57:38 +00:00
2022-03-24 09:11:25 +00:00
* Tested
2022-03-24 09:19:22 +00:00
2022-03-24 09:44:06 +00:00
All components and goals should be testable to ensure changes don't impact existing functionality or reliabilty.
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
* Monitored
2022-03-24 09:19:22 +00:00
2022-03-24 09:11:25 +00:00
All components should be monitored and raise appropriate alerts to ensure good health and early detection of potential problems.
2022-03-24 09:44:06 +00:00
* 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.
2022-03-24 09:46:47 +00:00
* Multi-architecture
The underlaying hardware type shouldn't be a constraint, within reason.
2022-03-30 11:59:46 +01:00
2022-03-31 13:23:09 +01:00
## Lighthouse installation
1. Clone the repo.
2. Create a directory to hold the config and certificates.
3. Copy `lighthouse-config.yaml` as `config.yaml` in the new directory.
4. Update the `docker-compose.yaml` to bind mount the newly created directory to `/etc/nebula` .
5. Run the container with `docker-compose up -d` . This will create two files, `host.key` and `host.csr` .
6. Send the contents of the `host.csr` file to a cluster admin to sign.
7. The returned, signed certificate should go alongside the `host.csr` file and be called, `host.crt` .
8. Start the container again and it should find the config and certificates and then connect to the existing cluster.
2022-03-31 13:24:10 +01:00
9. Update the `static_host_map` entry in the repo's `node-config.yaml` with the new Lighthouse mesh and public IP address and node admins to update their config files from the repo.
2022-03-31 13:23:09 +01:00
2022-03-30 11:59:46 +01:00
## Node installation
1. Clone the repo.
2. Create a directory to hold the config and certificates.
3. Copy `node-config.yaml` as `config.yaml` in the new directory.
2022-03-30 12:21:58 +01:00
4. Update the `docker-compose.yaml` to bind mount the newly created directory to `/etc/nebula` .
2022-03-30 11:59:46 +01:00
5. Run the container with `docker-compose up -d` . This will create two files, `host.key` and `host.csr` .
2022-03-30 12:21:58 +01:00
6. Send the contents of the `host.csr` file to a cluster admin to sign.
2022-03-30 12:24:43 +01:00
7. The returned, signed certificate should go alongside the `host.csr` file and be called, `host.crt` .
2022-03-30 12:19:37 +01:00
8. Start the container again and it should find the config and certificates and then connect to the existing cluster.