This repository contains all the configuration and Docker instructions needed to deploy a comprehensive, self-hosted homelab system.
This project bundles several open-source services, managed via docker-compose, and provides a custom web dashboard for easy management and interaction.
- π Homelab Dashboard: A custom web interface with:
- π» LAN device scanning and WOL support
- π§© Word puzzle game solvers (Wordle, Mastermind, Hangman, Dungleon, Letter Boxed, Spelling Bee)
- π¦ Host device package management (for pacman)
- π€ An integrated AI chatbot with Ollama
- π Traefik v3: Cloud-native reverse proxy with automatic HTTPS (Let's Encrypt or self-signed).
- π Authelia: Single Sign-On (SSO) for securing services.
- π Netdata: Real-time performance monitoring.
- π¦ Portainer: Docker container management UI.
- π Uptime Kuma: Service monitoring and status pages.
- π Ntfy: Push notifications for alerts.
- π« Pi-hole & Unbound: Network-wide ad-blocking and recursive DNS.
- π ddclient: Dynamic DNS client to keep your domain pointed to your IP.
- π₯οΈ RustDesk: A self-hosted remote desktop solution.
- π Vaultwarden: Self-hosted password manager.
%%{init: {
"theme": "dark"
}}%%
graph TD
%% INTERNET
subgraph Internet
RemoteClient[π Remote User]
end
%% LAN
subgraph LAN
Router[πΆ Router]
LocalClient[π» Local Devices]
subgraph Server[π₯οΈ Homelab Server]
WireGuard[π WireGuard VPN]
UFW[π‘οΈ UFW Firewall]
subgraph Docker[π³ Docker Network]
Traefik[π Traefik Reverse Proxy]
Authelia[π Authelia SSO]
Vaultwarden[π Vaultwarden]
Portainer[π¦ Portainer]
Dashboard[π Homelab Dashboard]
Ollama[π€ Ollama AI]
Netdata[π Netdata Monitoring]
UptimeKuma[π Uptime Kuma]
Ntfy[π ntfy Notifications]
LLDAP[π₯ LLDAP]
Pihole[π« Pi-hole DNS]
Unbound[π Unbound DNS Resolver]
Rustdesk[π₯οΈ RustDesk ID & Relay]
end
end
end
%% Entry chain
RemoteClient --> Router --> WireGuard --> UFW
LocalClient --> UFW
%% DNS chain
Pihole --> Unbound
UFW -->|DNS| Pihole
%% Firewall routes
UFW -->|HTTP| Traefik
UFW -->|Remote Access| Rustdesk --> LocalClient
%% Proxy/Auth flows
Traefik --> Authelia
Traefik --> Vaultwarden
Traefik --> Ntfy
Traefik --> Portainer
Traefik --> Dashboard
Traefik --> Netdata
Traefik --> UptimeKuma
Authelia --> LLDAP
%% Dashboard flows
Dashboard --> Ollama
Dashboard --> Netdata
Dashboard -->|WOL| LocalClient
Dashboard --> Ntfy
%% Notifications
UptimeKuma --> Ntfy
Vaultwarden --> Ntfy
Deployment is a multi-stage process. Follow these steps sequentially to prepare your host, configure services, and launch your homelab stack.
First, clone this repository and its submodules.
git clone https://github.com/satsinush/homelab.git
cd homelab
git submodule init
git submodule updateFor more info see the GitHub Docs π
Before running any configuration scripts, install all base dependencies on your Arch Linux host, including Docker, UFW, and WireGuard tools.
β‘οΈ Follow the detailed instructions here: 1. Prerequisites
This is the most critical security phase. You will configure SSH key access, set up the UFW firewall rules, and establish the WireGuard VPN tunnel.
β‘οΈ Follow the detailed instructions here: 2. Host Machine Configuration
The final deployment involves configuring environment variables, setting up custom systemd services for automation, and launching the Docker stack.
- Configure Environment: Adjust values in the
.env.templatefile. - Enable Systemd Services: Copy and enable host API, backup, and sync services.
- Run Setup Script: Execute the main script to build containers and generate credentials.
β‘οΈ Follow the detailed instructions here: 3. Project Deployment
Once the core stack is running, use these sections for ongoing maintenance and checks.
Complete a final checklist for each service (e.g., installing the root CA certificate, setting up notifications in Uptime Kuma, and disabling public sign-ups for Vaultwarden).
β‘οΈ View the full checklist here: 4. Post Installation Checklist
Learn how to manage and protect your data. This section covers running manual backups, checking the automated systemd backup timer, and performing a full system restoration from an archive.
β‘οΈ View the backup and restore guide here: 5. Backup and Restore
If you plan to modify the Homelab Dashboard or Host API code, this guide explains how to use the docker-compose.override.yml file to launch a development environment with hot-reloading enabled.
β‘οΈ View the development guide here: 6. Development
Find quick solutions for common deployment issues, including DNS resolution failures, browser security warnings, and container restarts.
β‘οΈ View the troubleshooting guide here: 7. Troubleshooting
This project is licensed under the MIT License. See the ./LICENSE file for details.
βΉοΈ Note: The software for each containerized service falls under its own respective license. The MIT license for this repository applies only to the original configuration files, scripts, and the
homelab-dashboardsource code.
