Files
Numbus/README.md

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.