Files
Numbus/README.md

5.4 KiB

☁️ Welcome to Numbus 🚀

Welcome to the Numbus Server project! This repository provides a complete selection of highly customizable NixOS configurations to deploy home servers, backup servers, computers, TVs in an automated manner. Deploy devices in hours instead of days !

🚀 Getting Started

The entire deployment process is automated around a bash script. It helps to dynamically adapt the configuration to your hardware, network environment, and secrets.

Requirements :

For numbus-server :

  • A NixOS-based machine to deploy from
  • A NixOS-based live machine to deploy to
  • An email address with automated mail sending support
  • A valid, public domain name

For numbus-backup-server :

  • A NixOS-based machine to deploy from
  • A NixOS-based live machine to deploy to
  • An email address with automated mail sending support
  • A valid domain name

For numbus-computer :

  • A NixOS-based machine to deploy from
  • A NixOS-based live machine to deploy to

For numbus-tv :

  • A NixOS-based machine to deploy from
  • A NixOS-based live machine to deploy to

On your Nix-based machine :

1. Clone the Repository :

git clone https://git.numbus.eu/raphael/numbus.git
cd numbus

2. (Optional) Fill in the configuration file :

This step is globally recommended as it reduces the risks of typos in the credentials. It also is better suited for repeated deployments to multiple machines.

nano $your_choosed_device.conf

Example: if you want to deploy a server

nano numbus-server.conf

3. Run the Deployment Script :

./deploy.sh

4. Follow the script's Prompts :

If you followed step 2, then choose non-interactive mode.

If you skipped step 2, then choose interactive mode.

The script will guide you through the setup process, including choosing a deployment mode and providing the necessary information. Once completed, the script will:

  • Adapt the configuration to your machine.
  • Generate SSH and sops keys.
  • Encrypt secrets for secure storage.
  • Generate configuration files for Podman services.
  • Deploy the NixOS configuration to the remote using nixos-anywhere.
  • Verify the deployment and guide you through the final setup of the web UIs.

Features

  • 🌐 Free & Open-Source : Built with transparency and community collaboration in mind.
  • 🚀 Easy Deployment : Get your server up and running in minutes with a single command.
  • 🛠️ Set & Forget : A highly reliable, low-maintenance solution.
  • 🔒 Secure by Design : Strong security practices are at the core of our configuration.
  • 📦 Popular Services : Access a wide range of popular, pre-configured services.
  • ⚙️ Declarative & Reproducible : Thanks to NixOS, your system configuration is entirely declarative, ensuring reproducibility and easy maintenance.

🛠️ Key Technologies

Global project :

  • NixOS: A declarative Linux distribution that makes system management a breeze.
  • Nix Flakes: For reproducible builds and dependency management.
  • Sops-nix: For secure and convenient management of secrets.
  • NixOS-anywhere: For seamless initial deployment to any machine.
  • Disko: For declarative and predictable disk partitioning.

Server-centric features :

  • SnapRAID: Keep your data safe.
  • Qemu/KVM: Run virtual with near-native performance.
  • Podman: Run rootless, containerized services with ease.
  • Traefik: A modern reverse proxy for securely exposing services.

Desktop-centric features :

TV-centric features :

🔧 Deployment Modes

The deploy.sh script offers three modes to suit your needs:

  1. Interactive Mode: The script will prompt you 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 unattended deployments.
  3. Update and Maintain Mode: This mode allows you to update a remote system on which this NixOS configuration has already been deployed.

🤝 Contributing

Contributions are welcome! If you have any ideas, suggestions, or bug reports, please open an issue or submit a pull request.

📄 License

This project is licensed under the AGPLv3. See the LICENSE file for details.