Production homelab: 50+ services บน 3 nodes
Self-hosted infrastructure stack — Docker Compose, Caddy, monitoring, backups และ orchestration glue ที่ทำให้ทุกอย่างทำงานได้
Production homelab: 50+ services บน 3 nodes
Ubuntu 3 เครื่อง Caddy reverse proxy ตัวเดียว self-hosted services 50+ ตัว ที่ดูแลทุกอย่าง — email, git, CI/CD, dashboards, password manager, photo backup และ Kubernetes cluster เล็ก ๆ สำหรับงานที่ต้องการ
Stack
| Node | บทบาท | สเปค |
|---|---|---|
edge-01 | Reverse proxy + firewall | 2 vCPU, 4GB RAM, public IP |
app-01 | Application workloads | 8 vCPU, 32GB RAM, NVMe |
data-01 | Databases + storage | 8 vCPU, 32GB RAM, 2×4TB HDD (RAID1) |
รันอะไรที่ไหน
edge-01 (public-facing):
- Caddy auto HTTPS ผ่าน Cloudflare DNS-01
- Crowdsec + fail2ban สำหรับ intrusion detection
- WireGuard สำหรับ admin access
app-01 (workloads):
- Woodpecker CI
- Gitea (lightweight self-hosted Git)
- Drone runners (3 instances)
- Plausible Analytics
- Uptime Kuma
- Healthchecks.io (cron monitoring)
data-01 (stateful):
- PostgreSQL 16 (single primary, streaming replication ไป app-01)
- Redis 7
- MinIO (S3-compatible สำหรับ backup + media)
- Restic repo (nightly snapshots → B2 + local)
Orchestration
docker-compose.yml ไฟล์เดียวต่อ service เก็บใน private Gitea repo
Deploy ผ่าน bash script เล็ก ๆ ที่:
- Pull config ล่าสุดจาก Gitea
- รัน
docker compose pull - Health-check ก่อนหยุด container เก่า
- Roll back อัตโนมัติถ้า health check fail
Zero-downtime deploys สำหรับทุกอย่างที่ stateless
Monitoring
- Prometheus บน data-01, scrape ทั้ง 3 nodes ผ่าน node-exporter
- Grafana dashboards สำหรับ CPU, RAM, disk, network, Docker containers
- Uptime Kuma สำหรับ external service health
- Alertmanager → Telegram เมื่อมีอะไรผิดปกติ
Backups
- Restic → Backblaze B2 (encrypted, deduplicated)
- Snapshot databases ทุกชั่วโมง อย่างอื่นทุกวัน
- 30-day retention + monthly archive
- Restore drill ทุกเดือน (ใช่ ผมทดสอบจริง ๆ)
ต่อไป
- เปลี่ยน PostgreSQL เดี่ยวเป็น Patroni + etcd (HA)
- ย้าย stateless workloads ไป k3s cluster เล็ก ๆ
- เพิ่ม Ceph สำหรับ distributed storage จริง ๆ
Config + dashboards ทั้งหมด: github.com/nuteo/homelab (placeholder)