Security Tutorial: Monitoring Remote Docker in Dockhand via Tailscale (Plus Error Troubleshooting Guide)
Memonitor beberapa server Docker dari satu dashboard terpusat (seperti Dockhand, Portainer, atau Dockge) sangat memudahkan manajemen infrastruktur. Namun, membuka port Docker API ke internet publik sangat berbahaya. Solusi terbaiknya adalah melewatkan lalu lintas data tersebut melalui jaringan VPN privat dari Tailscale, lalu mengunci port tersebut hanya untuk IP Tailscale server kita.
Artikel ini adalah catatan panduan setup lengkap beserta kumpulan error yang sering muncul di lapangan beserta solusinya.
Arsitektur Jaringan
Server Utama (Dashboard Dockhand + n8n): Menggunakan IP Tailscale
100.1xx.xxx.xVPS Remote (Aplikasi Venura): Menggunakan IP Tailscale
100.7xx.xxx.x
Langkah Konfigurasi di VPS Remote (Venura)
Mengatur Docker Daemon
Secara default, Docker hanya mendengarkan perintah dari dalam dirinya sendiri via Unix Socket. Kita harus memaksa Docker agar mau mendengarkan request dari IP privat Tailscale. Buka atau buat file konfigurasi daemon:
sudo nano /etc/docker/daemon.json
Masukkan konfigurasi JSON berikut (ganti IP sesuai dengan IP Tailscale VPS Remote Anda):
{
"hosts": ["unix:///var/run/docker.sock", "tcp://100.7xx.xxx.x:2375"]
}
Membuat Systemd Drop-In Override
Ubuntu membawa konfigurasi startup Docker bawaan yang akan bentrok jika kita langsung mengisi daemon.json. Kita perlu menimpanya dengan membuat file override.
Jalankan perintah berikut untuk membuka editor override:
sudo systemctl edit docker.service
Masukkan konfigurasi berikut tepat di baris paling atas. Pastikan tertulis dalam tiga baris terpisah (jangan digabung):
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
Menerapkan Konfigurasi dan Restart
Muat ulang sistem manager dan restart layanan Docker agar konfigurasi baru tersebut aktif:
sudo systemctl daemon-reload
sudo systemctl restart docker
Mengamankan Firewall (UFW)
Guna memastikan port Docker benar-benar aman, buat aturan firewall agar port 2375 hanya menerima lalu lintas data yang datang dari interface jaringan Tailscale (tailscale0):
sudo ufw allow in on tailscale0 to any port 2375 proto tcp
Langkah Konfigurasi di Dashboard Dockhand
Buka dashboard Dockhand Anda melalui browser, masuk ke menu Add Environment, lalu sesuaikan kolomnya seperti berikut:
Connection type: Pilih
Direct connectionHost: Masukkan IP Tailscale Venura (
100.7xx.xxx.x) atau gunakan domain MagicDNS dari Tailscale Anda.Port:
2375Protocol:
HTTPPublic IP:
100.7xx.xxx.x(agar tautan port di halaman container mengarah ke IP privat Tailscale)
Klik tombol Test connection. Jika indikator berubah menjadi hijau (Success), klik + Add.
Kumpulan Log Error & Solusinya (Troubleshooting)
Berikut adalah beberapa kendala yang sempat terjadi selama proses setup beserta cara menyelesaikannya:
Error 1: Tailscale Tidak Mau Jalan di LXC Container Proxmox
Pesan Error: ```text failed to connect to local tailscaled; it doesn't appear to be running (sudo systemctl start tailscaled ?)
Saat dicek menggunakan `systemctl status tailscaled`, statusnya *failed* dengan log terakhir `inotify: NewDirWatcher: context canceled`.Penyebab: Di dalam lingkungan LXC Proxmox, container secara default tidak memiliki izin untuk mengakses perangkat virtual TUN/TAP milik kernel host.
Solusi: Buka terminal Proxmox Host (bukan di dalam container), lalu edit file konfigurasi LXC container tersebut (misal ID container adalah 103):
Bashnano /etc/pve/lxc/100.confTambahkan dua baris berikut di bagian paling bawah file:
Plaintextlxc.cgroup2.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=fileSimpan, lalu matikan dan nyalakan ulang container tersebut lewat Proxmox (
pct stop 100danpct start 100).
Error 2: Image Agent Tidak Ditemukan (Access Denied)
Pesan Error:
Plaintextdocker: Error response from daemon: pull access denied for dockhand/agent, repository does not exist or may require 'docker login'Penyebab: Image
dockhand/agent:latesttidak tersedia secara publik di Docker Hub atau menggunakan nama repositori yang berbeda pada versi panel tersebut.Solusi: Beralih menggunakan metode Direct Connection via TCP Port 2375 dengan memanfaatkan
daemon.jsonseperti yang dijelaskan pada panduan utama. Metode ini jauh lebih bersih karena tidak memerlukan container agent tambahan.
Error 3: Test Connection di Dashboard Memunculkan "fetch failed"
Pesan Error: Tombol Test Connection di Dockhand menampilkan notifikasi merah bertuliskan
fetch failed.Penyebab: Docker di server remote belum mendengarkan port jaringan. Biasanya karena perintah
systemctl restart dockerbelum dieksekusi, atau konfigurasi systemd bawaan masih bentrok karena belum dipasang override.Solusi: Jalankan pengecekan port di server remote menggunakan perintah:
Bashsudo ss -tulpn | grep 2375Jika hasilnya kosong, pastikan file
/etc/systemd/system/docker.service.d/override.confsudah terisi dengan benar (3 baris), lalu jalankan ulang perintahsudo systemctl daemon-reloaddansudo systemctl restart docker.
Error 4: Data Monitoring Malah Menduplikasi Server Lokal
Gejala: Environment baru berhasil ditambahkan, tetapi jumlah container, penggunaan CPU, dan memori yang ditampilkan di dashboard kembar persis dengan data milik Server Utama (Dashboard).
Penyebab: Pada pengaturan Add Environment, opsi Connection type masih terpilih sebagai
Unix socketdengan path/var/run/docker.sock. Pengisian kolom Public IP saja tidak mengubah sumber data utama jika jenis koneksinya salah.Solusi: Edit kembali environment tersebut, ubah Connection type menjadi
Direct connection, lalu masukkan Host IP dan Port2375dengan benar agar Dockhand menarik data keluar melalui jalur TCP Tailscale, bukan dari socket lokal lagi.

0 Response to "Security Tutorial: Monitoring Remote Docker in Dockhand via Tailscale (Plus Error Troubleshooting Guide)"
Posting Komentar
Aturan Berkomentar :
1. Berbicara menggunakan bahasa yang enak didengar. Tidak Untuk menyinggung perasaan orang Lain.
2.Spamming (Spam Comment)
3.Kalau Mau ngopy-paste artikel disini, Berikan sumbernya