# ☁️ 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 :** ```bash 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. ```bash nano $your_choosed_device.conf ``` Example: if you want to deploy a server ```bash nano numbus-server.conf ``` **3. Run the Deployment Script :** ```bash ./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](https://nixos.org):** A declarative Linux distribution that makes system management a breeze. - **[Nix Flakes](https://wiki.nixos.org/wiki/Flakes):** For reproducible builds and dependency management. - **[Sops-nix](https://github.com/Mic92/sops-nix):** For secure and convenient management of secrets. - **[NixOS-anywhere](https://github.com/nix-community/nixos-anywhere):** For seamless initial deployment to any machine. - **[Disko](https://github.com/nix-community/disko):** For declarative and predictable disk partitioning. #### Server-centric features : - **[SnapRAID](https://www.snapraid.it):** Keep your data safe. - **[Qemu/KVM](https://www.qemu.org):** Run virtual with near-native performance. - **[Podman](https://podman.io):** Run rootless, containerized services with ease. - **[Traefik](https://traefik.io/traefik):** A modern reverse proxy for securely exposing services. #### Desktop-centric features : - **[GNOME](https://www.gnome.org):** A modern, elegant desktop environment. - **[KDE Plasma](https://kde.org):** A full-featured and highly customizable desktop environment. - **[XFCE](https://xfce.org)**: A super lightweight desktop to breathe new life into old computers. - **[Wide offering of free and open-source apps](https://flathub.org/en/apps)**: If you need to get something done, there is an app for it. - **[Windows games compatibility](https://www.protondb.com)**: Most games run on Linux thanks to Proton. #### TV-centric features : - **[KDE Plasma Bigscreen](https://plasma-bigscreen.org):** An open-source TV interface for Linux. - **[Web applications](https://flathub.org/en/apps/net.codelogistics.webapps)**: Install websites as apps. ## 🔧 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.