☁️ Numbus Server: Your Personal Cloud, Simplified 🚀
Welcome to the Numbus Server project! This repository provides a complete NixOS configuration to deploy a personal home server with a rich set of services in minutes. Our goal is to make self-hosting accessible to everyone, allowing you to take back control of your data with a solution that is easy to manage and highly reliable.
✨ 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
- NixOS: A declarative Linux distribution that makes system management a breeze.
- Nix Flakes: For reproducible builds and dependency management.
- Docker & Docker Compose: To run containerized services with ease.
- Traefik: A modern reverse proxy for securely exposing services.
- 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.
🚀 Getting Started
The entire deployment process is automated with the deploy.sh script. This script dynamically adapts the configuration to your hardware, network environment, and secrets.
1. Clone the Repository:
git clone https://git.numbus.eu/raphael/numbus-server.git
cd numbus-server
2. Run the Deployment Script:
sudo bash deploy.sh
3. Follow the Prompts:
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 Docker services.
- Deploy the NixOS configuration using
nixos-anywhere. - Verify the deployment and guide you through the final setup of the web UIs.
🔧 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.