Manage Docker container pakai CLI emang powerful, tapi setelah stack gue melewati 15 service (PostgreSQL, Redis, beberapa API Node.js, reverse proxy, monitoring stack, dll), otak gue mulai limit. Gue harus inget nama container, network mana yang connect ke mana, volume mana yang mount ke path mana. Akhirnya gue nyobain ketiga web UI yang paling sering disebut di Reddit r/selfhosted: Portainer CE, Yacht, dan Dockge. Ini review jujur setelah pakai ketiganya di production selama 4-8 minggu masing-masing di 2026.
Konteks: Kenapa Butuh Web UI?
Sebelum masuk ke perbandingan, mari jujur: 80% use case Docker bisa di-handle pure CLI. docker compose up -d, docker logs -f, docker exec -it container_name /bin/sh — ini semua cukup. Masalah muncul saat:
- Jumlah container di atas 10 — susah inget semua nama dan konfig
- Multi-host setup — 3+ VPS Docker yang harus di-manage dari satu tempat
- Sharing akses ke tim non-teknis — designer/PM mau lihat logs tanpa SSH
- Onboarding developer baru — lebih intuitif kasih UI daripada kasih tutorial CLI
Buat gue yang sendirian manage 4 VPS, masalah utama adalah konsolidasi. Daripada login SSH ke 4 server beda untuk cek status, gue mau satu dashboard. Itu motivasi awal coba web UI Docker.
Portainer CE: The Established Player
Portainer sudah ada sejak 2017, awalnya commercial lalu portainer CE (Community Edition) muncul di 2021. Sekarang di versi 2.21 (Juni 2026), Portainer CE adalah web UI Docker paling feature-complete yang open source.
Fitur yang langsung terasa:
- Support Docker standalone, Docker Swarm, dan Kubernetes (advanced mode)
- Multi-endpoint management — bisa manage banyak Docker host dari satu instance
- Container, image, volume, network management — semua dari UI
- Stack management (Docker Compose) dengan editor YAML di dalam UI
- App Templates built-in (1-click deploy untuk WordPress, Nextcloud, dll) — 100+ template
- Role-based access control (admin, operator, viewer)
- Container shell access dari browser (exec yang ringan)
Yang paling gue suka: editor Stack. Lo bisa paste docker-compose.yml di UI, klik Deploy, dan Portainer handle selebihnya. Kalo ada error, log langsung kelihatan. Untuk deployment cepat, ini 10x lebih cepat dari SSH + vim + docker compose up.
Untuk multi-endpoint, Portainer agent (kontainer kecil) di-install di setiap Docker host, lalu Portainer server bisa manage semuanya. Gue setup 3 VPS dengan Portainer agent, dan dari satu dashboard bisa deploy service baru ke host mana pun. Untuk homelab, ini over-kill, tapi untuk production multi-region, sangat berguna.
Yang kurang: Portainer CE tidak punya fitur monitoring metrics (CPU/RAM/net per container) yang built-in. Lo perlu integrate dengan Prometheus atau cAdvisor terpisah. Resource footprint Portainer sendiri juga tidak kecil — sekitar 200-300MB RAM untuk server + 50MB per agent.
Yacht: Minimalis dan Elegan
Yacht adalah web UI Docker yang fokus ke simplicity. Dibanding Portainer, Yacht sangat minimalis: interface bersih, satu layer navigation, dan fiturnya cuma yang essential. Saat pertama kali buka Yacht di browser, gue langsung bilang "ini kayak glassmorphism-nya iOS, keren".
Fitur Yacht:
- Container management: start, stop, restart, logs, exec
- Image management: pull, remove, prune
- Volume dan network view (read-only, no edit)
- Template deploy (lebih sedikit dari Portainer, ~30 template)
- Resource usage per container (CPU/RAM real-time, built-in)
Yang unik dari Yacht: dia lightweight. Image Docker hanya ~30MB dan runtime memory ~80-100MB. Untuk VPS 1GB RAM yang cuma mau sedikit GUI di samping CLI, Yacht adalah pilihan paling ringan. Gue pakai Yacht di VPS development 1GB dan sangat puas — tidak ada jejak resource berarti.
Yang kurang: Yacht tidak support multi-host management, tidak ada Stack editor (harus buat docker-compose.yml di tempat lain lalu upload manual), dan update UI sangat lambat sejak 2024. Repo GitHub Yacht terakhir commit besar di akhir 2024, lalu 2025-2026 cuma maintenance kecil. Untuk production jangka panjang, ini concern.
Dockge: Compose-Centric
Dockge adalah web UI dari author yang sama dengan yang maintain Uptime Kuma (louislam). Vibe-nya jelas: focus ke Docker Compose, dan lakukan dengan sangat baik. Interface Dockge itu simpel tapi powerful — flat design, no fancy animation, dan setiap action terasa instantaneous.
Fitur Dockge:
- Compose file management: edit, save, deploy langsung dari UI
- Auto-detect perubahan di compose file (file watcher)
- Live log streaming per stack
- Resource usage top container (CPU/RAM ringkasan)
- Built-in terminal/web shell (per container)
- Update notification untuk image baru (mirip watchtower)
- Agent mode untuk multi-host (lebih baru, di versi 1.4+)
Yang bikin Dockge menarik buat gue: dia treat compose file sebagai source of truth. UI-nya edit file langsung, dan docker compose up -d jalan di belakang layar. Ini lebih "GitOps-friendly" dibanding Portainer yang punya internal state. Kalo lo backup folder compose, lo bisa restore full setup di host baru dalam 5 menit.
Versi 1.4 (Februari 2026) tambah agent mode yang mirip Portainer, tapi lebih simple. Gue test dengan 2 host, dan bisa deploy stack ke host tertentu dari satu UI. Untuk multi-host, Dockge mulai bisa jadi alternatif Portainer.
Yang kurang: Tidak ada container-by-container management yang granular — semua lewat stack. Tidak ada role-based access control. Tidak ada app templates. Untuk yang manage container ad-hoc tanpa compose (misal: pull image manual lalu run), Dockge bukan pilihan ideal.
Performa dan Resource Usage
Test gue di VPS 1 vCPU, 1GB RAM, Docker 27.x, dengan 15 container active:
- Portainer CE 2.21: image 280MB, RAM idle 240MB, CPU 0.5% idle. First load UI ~2.5 detik (agak berat karena banyak JavaScript).
- Yacht 0.10: image 32MB, RAM idle 85MB, CPU 0.2% idle. First load UI ~1.2 detik (sangat ringan).
- Dockge 1.4: image 95MB, RAM idle 110MB, CPU 0.3% idle. First load UI ~0.8 detik (paling responsif).
Untuk resource-constrained environment (VPS 1GB, Raspberry Pi), Yacht atau Dockge jelas lebih masuk akal. Portainer worth the extra cost kalau lo butuh multi-host, RBAC, atau Kubernetes support.
Security Considerations
Web UI Docker expose API Docker ke browser. Tiga tool ini pakai pola yang sama: UI server connect ke Docker socket (/var/run/docker.sock) atau ke agent yang hold socket. Implikasinya: kalau UI server compromised, attacker punya akses setara root ke host.
Best practice yang gue terapkan:
- Jangan expose UI ke internet langsung. Selalu letakkan di belakang reverse proxy dengan authentication, atau VPN.
- Disable default credentials. Portainer mengharuskan setup admin user di first run (bagus). Yacht dan Dockge tidak — wajib set password sebelum deploy production.
- Update rutin. Portainer release patch security bulanan, Yacht/Dockge lebih jarang.
- Monitor log akses. Setiap aksi di UI bisa di-log; set up alerting untuk activity mencurigakan.
Pengalaman gue: pernah deploy Yacht di VPS tanpa password, lupa firewall-nya, dan dalam 12 jam sudah ada yang masuk dan deploy container crypto miner. Pelajaran mahal: selalu set auth dan firewall dulu, baru expose UI.
Ekspektasi vs Realita
| Aspek | Ekspektasi | Realita |
|---|---|---|
| Portainer setup | 5 menit, langsung jalan | Butuh 15-20 menit karena banyak pilihan (mode, agent, RBAC) yang harus dipilih di awal |
| Yacht freshness | Aktif dikembangin | Update major terakhir akhir 2024; 2025-2026 cuma patch kecil. Risiko untuk 2027+ |
| Dockge multi-host | Bisa | Masih single-node, multi-host via remote Docker socket (TCP+TLS). Workable tapi bukan native |
| Portainer RBAC | Granular per team | RBAC di Portainer CE hanya 3 role: admin, user, read-only. Untuk granular butuh upgrade ke Business/Enterprise (berbayar) |
| Learning curve | Tinggi di awal | Yacht dan Dockge lebih cepat dipelajari (5-10 menit), Portainer butuh 30+ menit karena fitur lengkap |
| Backup/Restore stack | Built-in | Portainer punya Edge Agent backup, Dockge simpan compose di Git (manual), Yacht tidak punya fitur backup |
| Log aggregation | Built-in | Portainer punya log viewer, Dockge pakai Dozzle (external), Yacht tidak ada |
| Resource overhead | Ringan | Yacht ~30MB, Dockge ~50MB, Portainer ~250MB. Yacht paling ringan untuk VPS 1GB |
Migration Path: Docker CLI ke Web UI
Untuk sysadmin yang sudah nyaman dengan Docker CLI dan ragu pindah ke Web UI, gue selalu recommend transisi gradual 3 fase. Fase 1 (minggu 1-2): install Dockge untuk monitoring — jalankan parallel dengan workflow CLI yang sudah ada. Dockge cukup ringan (single binary, 30MB memory footprint) dan read-only di awal, jadi tidak akan interfere. Gunakan fase ini untuk membiasakan diri dengan konsep stack dan compose UI.
Fase 2 (minggu 3-4): migrasi 1-2 service non-critical (misal homepage blog, atau reverse proxy) ke Dockge. Compose file Dockge 100% kompatibel dengan docker compose standard, jadi yang lo tulis di CLI bisa langsung di-paste ke Web UI. Setelah migration, benefit langsung terasa: restart satu container tanpa harus login SSH, lihat log real-time dari browser, dan (kalau pakai Git backup) rollback ke versi sebelumnya dalam 30 detik. Gue pribadi migrasi blog ini dari docker compose up -d ke Dockge di minggu ke-3, dan gak balik lagi.
Fase 3 (bulan 2-3): untuk multi-host setup, pertimbangkan Portainer. Setup yang gue pakai sekarang: 1 Portainer Community Edition sebagai central management, dengan 4 agent di 4 VPS berbeda. Total memory overhead Portainer central sekitar 250MB, agent di setiap VPS sekitar 80MB. Trade-off: setup lebih kompleks (butuh Docker socket di-expose via TCP+TLS di semua host), tapi payoff-nya: satu dashboard untuk 30+ container di 4 host, plus ability untuk deploy stack yang sama ke multiple host dengan satu klik. Kalau lo sudah di fase 2 dan mulai sering kerja di 3+ server, fase 3 langsung worth it.
Yang perlu dihindari: jangan langsung adopt Portainer di hari pertama kalau lo baru pertama kali pakai Web UI Docker. Portainer punya banyak fitur (edge compute, Kubernetes integration, RBAC, registry) yang overwhelming. Mulai dari Dockge, pahami workflow stack-based, baru naik ke Portainer kalau beneran butuh multi-host. Ada juga satu anti-pattern yang sering gue lihat: install Portainer untuk manage 2-3 container di 1 VPS. Overkill banget — itu cukup Dockge atau Yacht.
Workflow Harian: Dockge + Git Backup + Watchtower
Workflow yang sudah running di semua VPS gue sejak Q1 2026: Dockge sebagai UI primary, Git repository untuk backup, dan watchtower untuk auto-update container. Setiap docker-compose.yml yang gue tulis disimpan di ~/dockge-stacks/<nama-stack>/ dengan struktur: compose.yaml, optional .env, dan folder data/ yang di-ignore dari Git. Repo Git di-host di Gitea self-hosted di VPS utama, dengan cron job yang commit + push setiap 6 jam. Kalau ada host yang crash, recovery = clone repo di host baru, cd stack-folder && dockge up, selesai.
Untuk auto-update, watchtower jalan sebagai container terpisah dengan label com.centurylinklabs.watchtower.enable=true di setiap stack. Watchtower cek Docker Hub tiap 24 jam dan update container yang ada tag :latest. Gue exclude container database (Postgres, Redis, MongoDB) dari auto-update karena schema migration yang destructive — container itu di-update manual setelah review changelog. Recovery dari auto-update yang bermasalah: revert via Git (yang simpan versi compose terakhir yang running), lalu restart stack.
Log aggregation di-setup pakai Dozzle (container UI ringan khusus log) sebagai sidecar pattern — Dozzle connect ke semua container yang running di host dan kasih searchable log real-time via Web UI tanpa perlu external ELK stack. Memory footprint Dozzle cuma 40MB, dan log retention default 7 hari (configurable). Untuk alerting, watchtower punya opsi notifikasi ke Slack/Discord/email kalau update gagal, dan Dozzle support webhook ke healthchecks.io untuk external monitoring. Kombinasi ketiganya — Dockge (UI) + Git (backup) + Watchtower (auto-update) + Dozzle (log) — kasih workflow yang setara dengan Kubernetes tapi dengan overhead yang jauh lebih rendah, dan learning curve yang cuma butuh weekend untuk setup awal.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬