# ☁️ 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:** ```bash git clone https://git.numbus.eu/raphael/numbus-server.git cd numbus-server ``` **2. Run the Deployment Script:** ```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 `sops` keys. - 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: 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](LICENSE) file for details.