Files
numbus/README.md
T
2025-11-14 19:36:36 +01:00

65 lines
3.1 KiB
Markdown

# Numbus Server Configuration
## Project Overview
Welcome to the **numbus server** project ! This **repository** contains the numbus server **NixOS configuration**.
It uses the **Nix** package manager and the **NixOS** operating system to declaratively **manage** the **entire system** configuration.
The goal of this project is to be able to **deploy** a server with a **large set** of services **in minutes**.
This make **homelabbing** very **accessible** and **easy** and allows non-very-technical users to **take control over their data**.
#### Features
- Fully **free**, **libre** and **open-source** project.
- **Easy** to deploy.
- **Set** and **forget** solution.
- Highly **reliable**.
- **Secure**.
- Plenty of **popular** services **available**.
#### Key Technologies
- **NixOS:** The declarative Linux distribution. For an easy management of Linux systems. Deploy, maintain, and update your system like a breeze.
- **Nix Flakes:** Used for reproducible builds and dependency management.
- **Docker & Docker Compose:** For running containerised services with the Traefik reverse proxy.
- **Sops-nix:** For managing secrets.
- **NixOS-anywhere:** For the first deployment of the NixOS configuration to a remote machine.
- **Disko:** For declarative disk partitioning.
## Get started
The primary workflow for this project is centred around the **`deploy.sh`** script. This script automates the entire process of deploying the **`numbus-server`** configuration to a new machine.
NixOS does the **heavy lifting** when it comes to system configuration but there are still **changes** that need to be made **dynamically** to adapt to your system : for example, your **hardware** configuration, **keys** and **secrets**, **network** environment, etc.
#### Deployment modes
The deployment process is handled by the **`deploy.sh`** script. This script can be run in three modes:
1. **Interactive Mode:** The script will prompt for all necessary configuration values, such as the target host's IP address, the disk to install on, domain names, and API tokens.
2. **Non-interactive automated Mode:** The script can read configuration values from a file, allowing for non-interactive deployments.
3. **Update and maintain mode**: The script will update a remote system on which this NixOS configuration has already been deployed.
#### To run the deployment:
1. Get the repository by cloning it:
```bash
git clone https://git.numbus.eu/raphael/numbus-server.git
```
2. Run the deployment script:
```bash
sudo bash deploy.sh
```
3. Follow the on-screen prompts to choose the deployment mode and provide the required information.
The script will then perform the following actions:
- Adapt the configuration to the current machine.
- Generate SSH and `sops` keys.
- Gather secrets locally and encrypt them on the remote machine.
- Generate configuration files for Docker services.
- Use `nixos-anywhere` to deploy the NixOS configuration from the `flake.nix` file to the target machine.
- Check that the deployment succeeded by SSHing into the new installation.
- Guiding the user through the (pretty easy) setup of all the web UIs.