Files
Documentation/Doc/Home-Server/Introduction.md
T
Shaz 42b8971744
Build and deploy Docusaurus / build-and-deploy (push) Successful in 1m1s
Add network & containerisation
2026-03-10 20:31:37 +01:00

118 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
- [Linux / Basics](../Linux/Basics.md)
- [Linux / Administration](../Linux/Administration.md)
- [Linux / Cheat Sheet](../Linux/CheatSheet.md)
---
## 3. Storage Layout
OS, Docker, and data are clearly separated:
- eMMC: system root (`/`), `/boot`, and base Debian.
- NVMe SSD mounted on `/srv/ssd` for 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 `/`.
- [Linux / Storage](../Linux/Storage.md)
---
## 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-stopped` so they come back after reboot.
Containerisation, Docker concepts and commands:
- [Containerisation](../Containerisation/Basics.md)
- [Containerisation / Docker](../Containerisation/Docker/Basics.md)
- [Containerisation / Docker / Commands](../Containerisation/Docker/Commands.md)
---
## 5. Networking, DNS, and Reverse Proxy
Home server is the central point for internal names and HTTPS access.
- Internal DNS: `dnsmasq` on the host, listening on `0.0.0.0:53`.
- Resolves `*.lan` names (vaultwarden.lan, komga.lan, home.lan, etc.) to the server IP (for example 192.168.1.18).
- Forwards public domains to external resolvers.
- 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 internal` with an internal CA; I install the root CA certificate on clients so browsers trust `*.lan`.
Networking, DNS, and Reverse Proxy Documentation
- [Network / Basics](../Network/Basics.md)
- [Network / DNS](../Network/DNS.md)
- [Network / Reverse Proxy](../Network/ReverseProxy.md)
---
## 6. Remote Access
Remote access is provided by a WireGuard VPN running on the Debian host.
- Server interface: `wg0` with address `10.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 `.lan` names always work.
Remote access documentation:
- [Network / VPN Basics](../Network/VPN/Basics.md)
- [Security / Certificates](../Security/Certificates.md)
- [Home-Server / WireGuard implementation](../Home-Server/Implementations/VPN/WireGuard.md)
---
## 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: realtime Docker logs.
- Glances: system metrics (CPU, RAM, disks, Docker, network).
These services are exposed internally via Caddy and DNS:
- `https://home.lan` → Homepage
- `https://status.lan` → Uptime Kuma
- `https://logs.lan` → Dozzle
- `https://metrics.lan` → Glances
---