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.x

  • VPS 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:

Bash
sudo nano /etc/docker/daemon.json

Masukkan konfigurasi JSON berikut (ganti IP sesuai dengan IP Tailscale VPS Remote Anda):

JSON
{
  "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:

Bash
sudo systemctl edit docker.service

Masukkan konfigurasi berikut tepat di baris paling atas. Pastikan tertulis dalam tiga baris terpisah (jangan digabung):

Ini, TOML
[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:

Bash
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):

Bash
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 connection

  • Host: Masukkan IP Tailscale Venura (100.7xx.xxx.x) atau gunakan domain MagicDNS dari Tailscale Anda.

  • Port: 2375

  • Protocol: HTTP

  • Public 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):

    Bash
    nano /etc/pve/lxc/100.conf
    

    Tambahkan dua baris berikut di bagian paling bawah file:

    Plaintext
    lxc.cgroup2.devices.allow: c 10:200 rwm
    lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
    

    Simpan, lalu matikan dan nyalakan ulang container tersebut lewat Proxmox (pct stop 100 dan pct start 100).

Error 2: Image Agent Tidak Ditemukan (Access Denied)

  • Pesan Error:

    Plaintext
     
     docker: Error response from daemon: pull access denied for dockhand/agent, repository does not exist or may require 'docker login'
  • Penyebab: Image dockhand/agent:latest tidak 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.json seperti 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 docker belum dieksekusi, atau konfigurasi systemd bawaan masih bentrok karena belum dipasang override.

  • Solusi: Jalankan pengecekan port di server remote menggunakan perintah:

    Bash
    sudo ss -tulpn | grep 2375
    

    Jika hasilnya kosong, pastikan file /etc/systemd/system/docker.service.d/override.conf sudah terisi dengan benar (3 baris), lalu jalankan ulang perintah sudo systemctl daemon-reload dan sudo 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 socket dengan 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 Port 2375 dengan benar agar Dockhand menarik data keluar melalui jalur TCP Tailscale, bukan dari socket lokal lagi.

Subscribe to receive free email updates:

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