03 · Cloud
Home lab
Self-hosted Ubuntu server
Overview
A repurposed laptop running as an always-on Ubuntu server: private cloud storage, monitoring, network-wide DNS filtering and a local AI chat, reachable from my devices over a private mesh VPN.
Containers sit behind a Caddy reverse proxy. Prometheus, Grafana, cAdvisor, Node Exporter and Uptime Kuma cover observability, AdGuard Home handles DNS, and a UFW firewall only admits essential traffic.
Architecture
- Tailscale mesh
- Caddy + Docker services
- Prometheus + Grafana
Nextcloud · Open WebUI · AdGuard Home · UFW
Stack
- Ubuntu
- Docker
- Caddy
- Prometheus
- Grafana
- Tailscale
- Nextcloud
- AdGuard Home
In depth
Services
Nextcloud for files, served by Caddy with Nginx and PHP-FPM after migrating off Apache. Open WebUI talks to Ollama running on my desktop GPU. MariaDB and Redis listen on localhost only.
Monitoring
Prometheus scrapes Node Exporter, cAdvisor and an AdGuard exporter with seven-day retention. Grafana dashboards cover the system, containers and DNS analytics; Uptime Kuma tracks service health.
Network and security
A Tailscale mesh connects my devices. AdGuard Home serves DHCP and DNS with curated blocklists for network-wide ad and tracker blocking. The firewall denies incoming traffic by default, and containers update automatically each night.
Private by design: services are reachable only over the VPN, so there is no public demo.