Mengenal GoDoxy: Reverse Proxy Otomatis dengan Idle-Sleep dan Proxmox
Review dan implementasi GoDoxy — reverse proxy berbasis Go yang auto-discover container Docker, punya fitur idle-sleep hemat resource, dan terintegrasi Proxmox.
Masalahnya
Reverse proxy di homelab itu seperti AC di mobil: begitu jalan, jarang disentuh lagi. Sampai suatu hari ada service baru, atau container mati, atau SSL expired — dan kita lupa cara konfigurasinya.
Di sisi lain, Nginx Proxy Manager (NPM) populer karena UI-nya, tapi dependensi ke MariaDB + Node bikin stack tambahan yang tidak ringan. Traefik kuat, tapi YAML label Docker-nya bisa panjang dan sulit dibaca pemula. Caddy elegan dengan HTTPS otomatis, tapi tidak punya dashboard bawaan.
Yang saya cari: reverse proxy yang auto-discover container Docker tanpa ribet label, punya dashboard untuk monitoring, bisa mematikan container idle, dan tetap ringan.
GoDoxy — ditulis dalam Go, berjalan sebagai satu binary di Docker — menjawab sebagian besar keinginan itu.
Apa itu GoDoxy
GoDoxy adalah reverse proxy open-source (MIT) berbasis Go yang dirancang khusus untuk self-hoster dengan Docker. Bukan sekadar proxy: ia juga orchestrator ringan, monitor server, dan penghemat resource.
| Metrik | Nilai |
|---|---|
| Bahasa | Go |
| Lisensi | MIT |
| GitHub stars | 3.8k+ |
| Mode | Docker (host network) |
| Platform | Linux amd64, arm64 |
| WebUI | Dashboard lengkap (routes, logs, metrics) |
Filosofinya sederhana: baca container Docker yang jalan → buat route otomatis → hot-reload saat ada perubahan. Tidak perlu reload manual tiap kali tambah service.
┌──────────────────────────────────────────┐
│ GoDoxy (host network) │
│ │
│ Auto-discover ──► Docker socket │
│ Routes ◄──────── container labels │
│ SSL ◄──────── Let's Encrypt DNS-01 │
│ Idle ◄──────── sleep/wake containers │
│ Auth ◄──────── OIDC / ForwardAuth │
│ Access ◄──────── IP/CIDR/GeoIP rules │
│ Monitor◄──────── CPU, disk, mem, logs │
└──────────────────────────────────────────┘
Fitur yang membedakan
Auto-discovery container
Ini fitur paling terasa bedanya dibanding NPM: tidak perlu daftarin proxy host satu-satu via UI. GoDoxy membaca label Docker (proxy.aliases) atau fallback ke container_name. Kalau tidak ada label, tidak ada route — aman.
Contoh di compose.yml:
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent
container_name: qbt
labels:
proxy.aliases: qbt
proxy.port: 8080
Begitu docker compose up -d, langsung tersedia di https://qbt.domain.com. Tanpa sentuh UI.
Idle-sleep container
Fitur ini mematikan container yang tidak dipakai dan membangunkannya kembali saat ada request. Cocok untuk service musiman: Jellyfin yang hanya dipakai malam minggu, Nextcloud pribadi, atau dashboard homelab jarang buka.
Mekanismenya:
- Tidak ada request ke route X selama N menit → GoDoxy
docker stopcontainer-nya - Request masuk → GoDoxy
docker start, tunggu health check, terus proxy - User hanya merasakan delay 2-5 detik — mirip cold start serverless
Dukungan diperluas ke Proxmox LXC: idle-sleep bisa mematikan dan menyalakan container LXC via Proxmox API.
Dashboard & monitoring
Satu dashboard menampilkan:
- Routes: semua proxy aktif, status, uptime
- Logs: access log per route, error
- Metrics: CPU host, disk, memori — real-time
- Container management: start/stop container dari UI
Tidak secanggih Grafana, tapi cukup untuk glance harian tanpa buka portainer.
Access control built-in
Tanpa plugin tambahan, GoDoxy menyediakan:
- IP/CIDR allow/deny
- GeoIP rules (perlu akun MaxMind gratis)
- Time-based rules — batasi akses berdasarkan jam
- OIDC SSO — integrasi dengan Authentik, Authelia, dll.
- ForwardAuth — delegate auth ke service eksternal (e.g. TinyAuth)
- Periodic access summary — laporan siapa akses apa
Multi-node Docker
GoDoxy bisa mengelola beberapa node Docker sekaligus. Cukup definisikan provider di config:
providers:
- name: homelab-nas
docker:
host: tcp://192.168.1.100:2375
- name: vps-cloud
docker:
host: tcp://10.0.0.5:2375
Cocok untuk setup: VPS utama + NAS di rumah, semua dikelola dari satu dashboard.
Proxmox integration
Jika Anda pengguna Proxmox, GoDoxy auto-bind route ke node atau LXC container. Dari WebUI bisa:
- Start, stop, restart LXC
- Stream
journalctlatau log file dari node maupun container
Ini mengubah GoDoxy dari sekadar reverse proxy menjadi lightweight Proxmox management panel.
Quick start
Setup otomatis (direkomendasikan)
Jalankan script setup di direktori baru:
mkdir godoxy && cd godoxy
/bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/yusing/godoxy/main/scripts/setup.sh)"
docker compose up -d
Script akan generate compose.yml, .env, dan config/config.yml. WebUI tersedia di https://godoxy.domain.com.
Prasyarat DNS: buat wildcard A/AAAA record *.domain.com mengarah ke IP mesin GoDoxy. Ini wajib — GoDoxy menggunakan subdomain untuk routing otomatis.
Setup manual
mkdir -p godoxy/config && cd godoxy
wget https://raw.githubusercontent.com/yusing/godoxy/main/compose.example.yml -O compose.yml
wget https://raw.githubusercontent.com/yusing/godoxy/main/.env.example -O .env
wget https://raw.githubusercontent.com/yusing/godoxy/main/config.example.yml -O config/config.yml
docker compose up -d
Konfigurasi route via label Docker
Cara paling praktis — tambahkan label di service yang ingin diproxy:
labels:
proxy.aliases: "app1, dashboard"
proxy.port: "3000"
# opsional:
proxy.scheme: "https" # default http
proxy.idle_timeout: "30m" # auto-sleep setelah 30 menit idle
proxy.middlewares: "auth, ratelimit"
Route langsung aktif. Tidak perlu restart GoDoxy — hot-reload built-in.
Pengalaman implementasi
Saya pasang GoDoxy di VPS kecil (2 vCPU, 2 GB RAM) yang sebelumnya menjalankan NPM. Beberapa observasi setelah 2 minggu:
Yang berjalan mulus
- Migrasi dari NPM lancar. Export config NPM tidak didukung langsung, tapi karena GoDoxy auto-discover dari Docker label, prosesnya: tambahkan label
proxy.aliasesdi tiap service → selesai. 15 service selesai dalam 20 menit. - RAM usage rendah. GoDoxy binary ~15 MB idle, NPM + MariaDB sebelumnya ~300 MB. Di VPS kecil, selisih ini signifikan.
- Idle-sleep menghemat CPU. Service seperti Meilisearch dan Uptime Kuma (yang hanya dicek sekali sejam) saya set idle 30 menit. Container otomatis mati dan bangun sendiri saat diakses.
- Wildcard DNS worth it. Sekali setup
*.domain.com, tambah service tidak perlu sentuh DNS lagi.
Yang perlu diperhatikan
- Host network mode wajib. Ini desain GoDoxy — tidak bisa diubah ke bridge tanpa kehilangan fitur auto-discovery. Pastikan tidak ada bentrok port dengan service lain.
- Dokumentasi masih berkembang. Beberapa halaman wiki belum lengkap. Discord komunitas cukup responsif untuk tanya jawab.
- Tidak ada GUI untuk edit route manual. Semua route berasal dari Docker label atau file YAML config. Kalau terbiasa dengan NPM yang klik-klik UI, perlu adaptasi.
- Linux only. Tidak mendukung macOS atau Windows (kecuali via Docker di WSL2/Lima).
Setup akhir saya
VPS (host network)
├── GoDoxy:443 ───────── reverse proxy + auto-SSL
├── Service A (label proxy.aliases: app-a, idle: 30m)
├── Service B (label proxy.aliases: app-b)
├── Service C (tanpa label → tidak diekspos)
└── NAS (separate node, provider Docker TCP)
├── Jellyfin (idle: 60m)
└── Nextcloud
Di mana posisinya di toolbox?
| Kebutuhan | Pilihan |
|---|---|
| Auto-discover container, zero-config routing | GoDoxy |
| UI point-and-click lengkap | Nginx Proxy Manager |
| Butuh middleware chain kompleks | Traefik |
| Satu binary, Caddyfile simpel | Caddy |
| Idle-sleep container hemat resource | GoDoxy |
| Proxmox + Docker dalam satu dashboard | GoDoxy |
Kapan memakai / kapan menunda
| Situasi | Saran |
|---|---|
| Homelab dengan 5-30 container Docker | Pakai GoDoxy |
| VPS kecil, tiap MB RAM berarti | Pakai GoDoxy |
| Service jarang dipakai (idle-sleep) | Pakai GoDoxy |
| Tim terbiasa NPM UI dan belum mau pindah | Tunda — tetap jalan di NPM |
| Butuh plugin ekosistem matang (CrowdSec, 500+ middleware) | Traefik/Caddy lebih cocok |
| Produksi enterprise dengan SLA ketat | Evaluasi maturity — tools ini masih muda |
Catatan praktis
- Backup config sebelum upgrade. Config di
config/config.ymldan label di compose file. Jalankandocker compose downdulu sebelum tarik image baru. - Idle-sleep ≠ instant. Container yang mati perlu waktu start ulang. Jangan set idle terlalu pendek (misal 5 menit) — user akan sering kena delay.
- Monitoring dashboard lumayan, tapi belum ada alerting. Pasangkan dengan Uptime Kuma atau Healthchecks.io.
- DNS-01 challenge via Let’s Encrypt mendukung banyak provider: Cloudflare, Route53, DuckDNS, dll. Setup token di
.env. - Produk masih aktif dikembangkan — rilis hampir tiap minggu. Cek GitHub Releases sebelum update di environment production.
Penutup
GoDoxy membawa pendekatan segar ke reverse proxy self-hosted: deteksi otomatis, hemat resource, dan manajemen container dari satu dashboard. Cocok untuk homelab yang ingin setup minimal tanpa mengorbankan kontrol.
Kalau Anda menjalankan 10+ service di Docker dan bosan daftarin proxy satu-satu di NPM, coba GoDoxy di VPS staging — setup 15 menit, dan lihat apakah pola “label sekali, jalan selamanya” cocok dengan workflow Anda.
Sumber: github.com/yusing/godoxy · docs.godoxy.dev