123 lines
5.4 KiB
Markdown
123 lines
5.4 KiB
Markdown
# ☁️ 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. |