🧩 Mengelola Banyak Container dengan Portainer: Cara Saya Mengatur Docker Secara Visual dan Efisien

🧩 Mengelola Banyak Container dengan Portainer: Cara Saya Mengatur Docker Secara Visual dan Efisien

✨ Pendahuluan

Ketika saya pertama kali belajar Docker, saya kagum betapa ringannya container dibanding VM. Tapi begitu jumlah container bertambah—mulai dari Grafana, FileBrowser, Gitea, hingga Wazuh dan Checkmk—saya mulai kesulitan. Saya ingin manajemen container yang lebih mudah, cepat, dan tidak selalu tergantung CLI. Di situlah Portainer masuk.

Portainer jadi tool andalan saya untuk mengelola semua container di server, baik yang standalone maupun dalam Docker Swarm. Dan di artikel ini, saya ingin berbagi semua hal yang saya alami dan pelajari tentang Portainer.


📦 Apa Itu Docker dan Docker Compose?

Docker adalah platform containerization yang memungkinkan saya menjalankan aplikasi terisolasi di atas sistem operasi yang sama. Mirip seperti VM, tapi jauh lebih ringan.

  • Dengan Docker saya bisa jalankan uptime-kuma, pihole, gitea, ghost, dan grafana sebagai container.
  • Setiap container seperti proses terisolasi dengan dependensi dan OS-nya sendiri.

Docker Compose adalah tool untuk menjalankan banyak container sekaligus berdasarkan file konfigurasi YAML.

Contoh docker-compose.yml sederhana untuk Uptime Kuma:

version: '3'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: always
    ports:
      - "3001:3001"
    volumes:
      - ./uptime-kuma:/app/data

Cukup dengan docker compose up -d, semua layanan langsung berjalan.


🔍 Apa Itu Portainer?

Portainer adalah web-based UI untuk mengelola Docker dan Docker Swarm. Saya bisa melihat semua container, image, network, volume, bahkan environment variable—tanpa buka terminal.

Portainer Dashboard

Portainer terdiri dari dua bagian:

  • Agent (opsional) jika dikelola multi-host
  • Server: web UI yang mengatur semua

Portainer bisa digunakan untuk:

  • Deploy container langsung dari UI
  • Edit konfigurasi container
  • Monitor status dan log container
  • Manajemen volume, network, image
  • Setup Stack pakai Compose langsung dari browser

🛠️ Kenapa Saya Menggunakan Portainer?

Berikut alasan utama saya:

  1. 👀 Visual & User Friendly: Saya bisa lihat container mana yang jalan, mana yang error, dan resource usage-nya.
  2. Akses Cepat: Lebih cepat dibanding ketik docker ps, docker exec, atau docker logs berulang-ulang.
  3. 🛡️ Minim Error: Ketika deploy stack baru, saya bisa lihat kesalahan YAML langsung dari UI.
  4. 🌐 Multi-node Support: Portainer bisa mengelola banyak node sekaligus via agent.
  5. 🔄 Deployment Stack Cepat: Copy-paste YAML langsung ke UI dan jalan
Multiple Nodes
Stack Tools
View Containers
Monitoring Container

🧠 Kelebihan Portainer

  • UI bersih dan responsif
  • Mendukung Docker dan Docker Swarm
  • Bisa setup registri image privat
  • Monitoring log, stat CPU/RAM container
  • Tidak butuh belajar CLI Docker untuk pemula
  • Bisa create container, volume, network langsung dari web

👎 Kekurangan Portainer

  • Perlu di-update manual kalau tidak pakai Watchtower
  • Versi Community Edition punya batasan fitur vs Business
  • Perlu hati-hati agar Portainer tidak bisa diakses publik tanpa proteksi (HTTPS + Auth sangat penting!)
  • Tidak semua error YAML ditampilkan jelas (beberapa masih error umum "Stack failed to deploy")

🔁 Alternatif Portainer

Saya juga sempat menjajal beberapa alternatif:

  • 🐳 Rancher: Bagus untuk Kubernetes, terlalu berat untuk homelab Docker biasa
  • 🧭 Dockge: Lightweight UI untuk Docker Compose buatan komunitas, simpel dan cepat
  • 📊 LazyDocker: CLI dengan tampilan TUI (text user interface) tapi tetap butuh terminal
  • 🐙 Shipyard: Sudah deprecated

Meskipun begitu, Portainer tetap saya pilih karena komunitasnya aktif, dokumentasi lengkap, dan saya merasa paling nyaman.


📥 Cara Install Portainer (Docker Compose)

Saya biasanya install Portainer di VM utama saya dengan Docker Compose:

mkdir -p ~/portainer && cd ~/portainer
nano docker-compose.yml

Isi file:

version: '3'
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    ports:
      - "9443:9443" # HTTPS
      - "8000:8000" # Edge agent tunnel
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
volumes:
  portainer_data:

Lalu jalankan:

docker compose up -d

Akses di browser: https://IP_SERVER:9443


🔒 Tips Keamanan Portainer

  1. Aktifkan HTTPS (default port 9443 sudah support)
  2. Jangan expose ke publik (gunakan reverse proxy + autentikasi jika ingin akses remote)
  3. Ganti password admin default
  4. Backup volume /data secara rutin

📚 Studi Kasus Portainer di Homelab Saya

Saya gunakan Portainer untuk mengelola semua layanan:

  • filebrowser (file server)
  • ntfy (notifikasi)
  • checkmk dan wazuh (monitoring)
  • ghost (blog)

Setiap kali ingin deploy service baru, saya tinggal buka Portainer, paste docker-compose.yml ke tab Stacks, dan deploy. Kalau error, saya bisa lihat log langsung dari UI dan perbaiki YAML di situ juga.

Ketika update service, saya stop container lama dan deploy ulang stack dengan mudah. Semua bisa dilakukan tanpa buka terminal sama sekali.


🎯 Kesimpulan

Portainer adalah alat yang sangat membantu saya dalam manajemen container di homelab. Meskipun awalnya saya terbiasa pakai CLI, sekarang saya merasa jauh lebih produktif karena bisa melihat dan mengelola semuanya secara visual.

Dengan Portainer, saya bisa fokus pada layanan yang ingin saya jalankan, bukan terlalu sibuk urus command line. Bagi kamu yang baru belajar Docker atau sudah mengelola banyak layanan, Portainer bisa jadi sahabat terbaikmu.


📌 Visualisasi bukan hanya soal kemudahan, tapi soal efisiensi. Dan Portainer membantu saya mengelola Docker seperti profesional—tanpa kehilangan kendali.