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
sopskeys. - 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 :
- GNOME: A modern, elegant desktop environment.
- KDE Plasma: A full-featured and highly customizable desktop environment.
- XFCE: A super lightweight desktop to breathe new life into old computers.
- Wide offering of free and open-source apps: If you need to get something done, there is an app for it.
- Windows games compatibility: Most games run on Linux thanks to Proton.
TV-centric features :
- KDE Plasma Bigscreen: An open-source TV interface for Linux.
- Web applications: Install websites as apps.
🔧 Deployment Modes
The deploy.sh script offers three modes to suit your needs:
- 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.
- Non-interactive Automated Mode: The script can read configuration values from a file, allowing for unattended deployments.
- 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.