Sebelumnya saya sudah install Docker di server lama, dan ingin melakukan migrasi ke server baru karena karena sebelumnya install docker menggunakan “sudo apt” yang menyebabkan docker berada dalam kepemilikan root yang sulit di maintenance.
Ini saya melakukan instalasi kembali Docker di mesin yang lain dengan cara pandang baru. Hasil diskusi dengan OpenAI dan semuanya berjalan dengan baik.
Docker saya install pada Linux Debian/Armbian mesin STB HG680P berbasis processor ARM. Tapi mestinya bisa digunakan di Linux dengan processor apa saja.
Banyak orang merasa “Docker sudah jalan” adalah garis finish. Padahal, justru masalah sering muncul setelah beberapa bulan: permission berantakan, volume sulit dibackup, Portainer kebuka ke mana-mana, dan akhirnya reinstall dari nol.
Artikel ini merangkum cara instalasi Docker dan Portainer yang bersih, aman, dan siap dipakai jangka panjang, berdasarkan praktik yang lebih matang dan minim masalah di kemudian hari.
Pendekatan ini cocok untuk:
- Home server (Armbian / Debian / Ubuntu)
- Home Assistant, IoT, MQTT
- Server pribadi yang ingin rapi & mudah dipindahkan
Prinsip Dasar (Kenapa Cara Ini Dipilih)
Sebelum masuk ke teknis, ada 4 prinsip yang dipakai:
- Docker dikontrol oleh user biasa, bukan root harian
- Data Docker terlihat jelas di filesystem, bukan tersembunyi
- Portainer tidak diekspos ke jaringan
- Struktur folder konsisten dan scalable
Dengan prinsip ini:
- backup jadi mudah
- migrasi server jadi simpel
- risiko human error jauh berkurang
1. Persiapan Sistem
Pastikan sistem up to date dan punya dependensi dasar.
sudo apt update
sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release
2. Instal Docker (Repo Resmi)
Hindari install Docker dari repo bawaan OS karena biasanya versinya tertinggal.
Tambahkan GPG key Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Tambahkan repository Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") \
$(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Install Docker Engine
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
3. Jalankan Docker Tanpa Root (PENTING)
Tambahkan user ke group docker:
sudo usermod -aG docker $USER
⚠️ Logout dan login ulang setelah ini.
Verifikasi:
docker run hello-world
Jika muncul pesan Hello from Docker! berarti Docker siap digunakan.
4. Struktur Folder Final (Sekali di Awal)
Agar data Docker rapi dan mudah dirawat:
sudo mkdir -p /opt/docker/{portainer,stacks,volumes,backups,scripts}
sudo chown -R $USER:$USER /opt/docker
Struktur ini akan menjadi fondasi semua container ke depan.
/opt/docker/
├── portainer/ → data Portainer
├── stacks/ → docker-compose / stack Portainer
├── volumes/ → data service (HA, MQTT, dll)
├── backups/ → arsip backup
└── scripts/ → script maintenance
5. Install Portainer (Mode Aman)
Buat network khusus Portainer
docker network create portainer_net
Jalankan Portainer
docker run -d \
--name portainer \
--restart=unless-stopped \
--network portainer_net \
-p 127.0.0.1:9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /opt/docker/portainer/data:/data \
portainer/portainer-ce:latest
Kenapa konfigurasi ini aman?
- Portainer hanya bisa diakses dari localhost
- Docker socket read-only
- Data Portainer persistent dan jelas lokasinya
6. Akses Portainer
Dari mesin lokal
http://localhost:9000
Dari laptop / PC via SSH tunnel
ssh -L 9000:localhost:9000 user@IP_SERVER
Lalu buka di browser:
http://localhost:9000
Ini cara paling aman tanpa membuka port ke LAN atau internet.
Namun, jika menyusahkan, kita bisa melakukan agar bisa diakses melalui LAN dengan -p 127.0.0.1:9000:9000 \ diganti dengan -p 9000:9000 \
7. Setup Awal Portainer
Saat pertama login:
- Buat admin password yang kuat
- Pilih Docker Standalone
- Jangan aktifkan Edge Agent
8. Verifikasi Akhir
docker ps
Pastikan Portainer berjalan normal dan tidak error.
Penutup: Kenapa Cara Ini Lebih “Jos”
Dengan setup ini:
- Docker tidak bergantung pada root harian
- Permission file konsisten
- Backup cukup copy
/opt/docker - Portainer aman dari akses tak sengaja
- Migrasi ke mesin lain tinggal ulang langkah ini + restore data
Ini bukan sekadar “Docker jalan”, tapi Docker yang bisa dipelihara.

