A

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.

7 menit bacaAhmad Apandi

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:

  1. Tidak ada request ke route X selama N menit → GoDoxy docker stop container-nya
  2. Request masuk → GoDoxy docker start, tunggu health check, terus proxy
  3. 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 journalctl atau 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.aliases di 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.yml dan label di compose file. Jalankan docker compose down dulu 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

Artikel terkait