3.9 KiB
3.9 KiB
Home Server – Overview
1. Goals
- Central point for my home-lab and dev-ops learning.
- Self-hosted services for media viewers, git, password manager, home assistant, etc.
- Clean separation between OS, data, and Docker stacks.
- Easy to maintain, backup, and rebuild if needed.
2. Hardware and Base OS
- Hardware: ZimaBoard used as a low-power home server.
- OS: Debian installed on the internal eMMC.
- Role: main server for the home LAN and VPN clients.
Linux basics and commands:
3. Storage Layout
OS, Docker, and data are clearly separated:
- eMMC: system root (
/),/boot, and base Debian. - NVMe SSD mounted on
/srv/ssdfor Docker (data-root, stacks, appdata). - Data disks:
/srv/ebooks(sda1, ext4) for ebooks and comics./srv/media(sdb1, ext4) for movies, series, etc.
Key idea: Docker stacks and appdata live on the NVMe (/srv/ssd), not on /.
4. Docker and Application Stacks
Docker runs on the Debian host and is my main way to deploy services.
- Docker data-root and volumes live under
/srv/ssd. - Stacks are organised under
/srv/ssd/stacks/<stack-name>/. - Typical services:
- Media: Komga (ebooks), Jellyfin (videos).
- Dev: Gitea + Postgres.
- Password manager: Vaultwarden.
- Monitoring: Homepage, Uptime Kuma, Dozzle, Glances.
- Containers use
restart: unless-stoppedso they come back after reboot.
Containerisation, Docker concepts and commands:
5. Networking, DNS, and Reverse Proxy
Home server is the central point for internal names and HTTPS access.
- Internal DNS:
dnsmasqon the host, listening on0.0.0.0:53.- Resolves
*.lannames (vaultwarden.lan, komga.lan, home.lan, etc.) to the server IP (for example 192.168.1.18). - Forwards public domains to external resolvers.
- Resolves
- Reverse proxy: Caddy in front of services on ports 80/443.
- Exposes internal virtual hosts like
vaultwarden.lan,home.lan,status.lan,logs.lan,metrics.lan,komga.lan,gitea.lan,jellyfin.lan. - Uses
tls internalwith an internal CA; I install the root CA certificate on clients so browsers trust*.lan.
- Exposes internal virtual hosts like
Networking, DNS, and Reverse Proxy Documentation
6. Remote Access
Remote access is provided by a WireGuard VPN running on the Debian host.
- Server interface:
wg0with address10.10.10.1/24, listening on UDP 51820. - Clients (PC, smartphone, etc.) get one IP each in
10.10.10.0/24. - NAT rules allow VPN clients to reach the home LAN (
192.168.1.0/24). - Clients send both VPN and LAN traffic through the tunnel via
AllowedIPs = 10.10.10.0/24, 192.168.1.0/24. - DNS for clients is the home server itself (10.10.10.1) so
.lannames always work.
Remote access documentation:
7. Monitoring and Dashboard
Monitoring is based on a lightweight stack under /srv/ssd/stacks/monitoring:
- Homepage: main dashboard and entry point for services, with basic widgets.
- Uptime Kuma: service availability checks.
- Dozzle: real‑time Docker logs.
- Glances: system metrics (CPU, RAM, disks, Docker, network).
These services are exposed internally via Caddy and DNS:
https://home.lan→ Homepagehttps://status.lan→ Uptime Kumahttps://logs.lan→ Dozzlehttps://metrics.lan→ Glances