Big update. Data lost found back.
This commit is contained in:
@@ -1,65 +1,66 @@
|
||||
# Numbus Server Configuration
|
||||
# ☁️ Numbus Server: Your Personal Cloud, Simplified 🚀
|
||||
|
||||
## Project Overview
|
||||
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.
|
||||
|
||||
Welcome to the **numbus server** project ! This **repository** contains the numbus server **NixOS configuration**.
|
||||
## ✨ Features
|
||||
|
||||
It uses the **Nix** package manager and the **NixOS** operating system to declaratively **manage** the **entire system** configuration.
|
||||
- 🌐 **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.
|
||||
|
||||
The goal of this project is to be able to **deploy** a server with a **large set** of services **in minutes**.
|
||||
## 🛠️ Key Technologies
|
||||
|
||||
This make **homelabbing** very **accessible** and **easy** and allows non-very-technical users to **take control over their data**.
|
||||
- **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.
|
||||
|
||||
#### Features
|
||||
## 🚀 Getting Started
|
||||
|
||||
- Fully **free**, **libre** and **open-source** project.
|
||||
- **Easy** to deploy.
|
||||
- **Set** and **forget** solution.
|
||||
- Highly **reliable**.
|
||||
- **Secure**.
|
||||
- Plenty of **popular** services **available**.
|
||||
The entire deployment process is automated with the `deploy.sh` script. This script dynamically adapts the configuration to your hardware, network environment, and secrets.
|
||||
|
||||
#### Key Technologies
|
||||
- **NixOS:** The declarative Linux distribution. For an easy management of Linux systems. Deploy, maintain, and update your system like a breeze.
|
||||
- **Nix Flakes:** Used for reproducible builds and dependency management.
|
||||
- **Docker & Docker Compose:** For running containerised services with the Traefik reverse proxy.
|
||||
- **Sops-nix:** For managing secrets.
|
||||
- **NixOS-anywhere:** For the first deployment of the NixOS configuration to a remote machine.
|
||||
- **Disko:** For declarative disk partitioning.
|
||||
**1. Clone the Repository:**
|
||||
|
||||
## Get started
|
||||
```bash
|
||||
git clone https://git.numbus.eu/raphael/numbus-server.git
|
||||
cd numbus-server
|
||||
```
|
||||
|
||||
The primary workflow for this project is centred around the **`deploy.sh`** script. This script automates the entire process of deploying the **`numbus-server`** configuration to a new machine.
|
||||
**2. Run the Deployment Script:**
|
||||
|
||||
NixOS does the **heavy lifting** when it comes to system configuration but there are still **changes** that need to be made **dynamically** to adapt to your system : for example, your **hardware** configuration, **keys** and **secrets**, **network** environment, etc.
|
||||
```bash
|
||||
sudo bash deploy.sh
|
||||
```
|
||||
|
||||
#### Deployment modes
|
||||
**3. Follow the Prompts:**
|
||||
|
||||
The deployment process is handled by the **`deploy.sh`** script. This script can be run in three modes:
|
||||
The script will guide you through the setup process, including choosing a deployment mode and providing the necessary information. Once completed, the script will:
|
||||
|
||||
1. **Interactive Mode:** The script will prompt 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 non-interactive deployments.
|
||||
3. **Update and maintain mode**: The script will update a remote system on which this NixOS configuration has already been deployed.
|
||||
- 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.
|
||||
|
||||
#### To run the deployment:
|
||||
## 🔧 Deployment Modes
|
||||
|
||||
1. Get the repository by cloning it:
|
||||
The `deploy.sh` script offers three modes to suit your needs:
|
||||
|
||||
```bash
|
||||
git clone https://git.numbus.eu/raphael/numbus-server.git
|
||||
```
|
||||
2. Run the deployment script:
|
||||
```bash
|
||||
sudo bash deploy.sh
|
||||
```
|
||||
3. Follow the on-screen prompts to choose the deployment mode and provide the required information.
|
||||
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.
|
||||
|
||||
The script will then perform the following actions:
|
||||
## 🤝 Contributing
|
||||
|
||||
- Adapt the configuration to the current machine.
|
||||
- Generate SSH and `sops` keys.
|
||||
- Gather secrets locally and encrypt them on the remote machine.
|
||||
- Generate configuration files for Docker services.
|
||||
- Use `nixos-anywhere` to deploy the NixOS configuration from the `flake.nix` file to the target machine.
|
||||
- Check that the deployment succeeded by SSHing into the new installation.
|
||||
- Guiding the user through the (pretty easy) setup of all the web UIs.
|
||||
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.
|
||||
Reference in New Issue
Block a user