TUTORIAL DOKUMENTASI · DOCKER INFRASTRUCTURE
1 Docker Multi Server
Pendahuluan
VPS + Local Server Infrastructure
Dokumen ini menjelaskan implementasi
Menggunakan Docker
Tailscale Multi
VPN ServerSwarm
· Docker menggunakan kombinasi
· Portainer · NginxVPS dan
Proxy Local Server yang
Manager
dihubungkan melalui VPN Overlay Tailscale. Arsitektur ini dirancang untuk memberikan fleksibilitas penuh dalam mengelola
infrastruktur container di lingkungan yang terdistribusi.
Kemampuan
ARSITEKTUR Arsitektur
SISTEM Ini
Mengelola beberapa server Docker dari satu dashboard terpusat
Menjalankan aplikasi
VPSpada VPS maupun Local Server secara bersamaan
SERVER LOCAL SERVER
Mengakses aplikasi Local melalui domain publik tanpa membuka port Docker
Swarm Manager Swarm Worker
Menggunakan Docker Swarm sebagai orchestrator cluster terpadu
Menggunakan Portainer sebagai dashboard manajemen visual
Portainer Server Portainer Agent
Menggunakan Nginx Proxy Manager sebagai reverse proxy yang fleksibel
Nginx Proxy Manager App Local Container
App VPS Container App Local Container
Tailscale VPN
Tailscale VPN Tailscale VPN
2 Arsitektur Sistem
Berikut adalah alur arsitektur sistem secara keseluruhan:
ARSITEKTUR JARINGAN
1 Internet
2 ■
Docker3Swarm ▼ Tailscale VPN Portainer Nginx Proxy Manager Ubuntu Server
4 Public Domain
5 ■
6 ▼
7 Nginx Proxy Manager (VPS)
8 ■
9 ▼
10 Docker Swarm Overlay Network
11 ■
12 ▼
13 Tailscale VPN
14 ■
15 ▼
16 Application Container (Local Server)
Dokumentasi Teknis · Docker Infrastructure · Multi Server Setup
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
DETAIL INFRASTRUKTUR
1 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2 ■ VPS SERVER ■
3 ■ ■
4 ■ Ubuntu Host ■
5 ■ ■■■ Tailscale VPN ■
6 ■ ■■■ Docker Swarm Manager ■
7 ■ ■■■ Portainer Server ■
8 ■ ■■■ Nginx Proxy Manager ■
9 ■ ■■■ Application VPS ■
10 ■ ■■■ Application VPS ■
11 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
12
13 Tailscale VPN Overlay
14
15 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
16 ■ LOCAL SERVER ■
17 ■ ■
18 ■ Ubuntu Host ■
19 ■ ■■■ Tailscale VPN ■
20 ■ ■■■ Docker Swarm Worker ■
21 ■ ■■■ Portainer Agent ■
22 ■ ■■■ Application Local ■
23 ■ ■■■ Application Local ■
24 ■ ■■■ Application Local ■
25 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
3 Tujuan Implementasi
Tujuan Utama
1. Memusatkan manajemen Docker pada VPS sebagai control plane
2. Memanfaatkan resource Local Server sebagai worker node
3. Menjalankan aplikasi pada server berbeda sesuai kebutuhan
4. Menghindari ekspos Docker API ke internet publik
5. Memudahkan deployment menggunakan Docker Swarm
4 Alur Kerja Sistem
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 2
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
1 Pengguna mengakses domain publik melalui browser
2 DNS mengarahkan request ke Public IP VPS
3 Nginx Proxy Manager menerima request HTTP/HTTPS
4 Jika aplikasi di VPS → diteruskan ke container lokal VPS
5 Jika aplikasi di Local Server → diteruskan via Tailscale ke Worker Node
6 Response dikembalikan ke pengguna melalui VPS
5 Persyaratan Sistem
Komponen VPS Local Server
OS Ubuntu Server Ubuntu Server
Public IP ✓ Diperlukan ✗ Tidak Perlu
Docker Engine ✓ ✓
SSH Access ✓ ✓
Akun Tailscale ✓ (sama) ✓ (sama)
Internet Stabil ✓ ✓
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 3
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
6 Instalasi Docker
Jalankan perintah berikut pada VPS dan Local Server untuk menginstal Docker Engine:
bash · VPS & Local Server
1 # Download dan install Docker Engine secara otomatis
2 curl -fsSL [Link] | sh
3
4 # Tambahkan user ke grup docker (tanpa sudo)
5 sudo usermod -aG docker $USER
6
7 # Aktifkan Docker service saat boot
8 sudo systemctl enable docker
9 sudo systemctl start docker
10
11 # Verifikasi instalasi
12 docker --version
■■ Logout dan login kembali jika menggunakan user non-root agar perubahan grup berlaku.
7 Instalasi Tailscale
Tailscale digunakan sebagai VPN Overlay yang menghubungkan VPS dengan Local Server secara aman tanpa membuka
port publik. Jalankan pada kedua server:
bash · VPS & Local Server
1 # Install Tailscale
2 curl -fsSL [Link] | sh
3
4 # Login dan aktifkan Tailscale (gunakan akun yang sama di kedua server)
5 sudo tailscale up
6
7 # Cek IP Tailscale yang diberikan
8 tailscale ip -4
output · Contoh IP Tailscale
1 # Contoh IP Tailscale yang diberikan:
2 VPS : [Link]
3 Local : [Link]
4
5 # Uji koneksi antar server
6 ping [Link]
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 4
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
Catatan: Exit Node bersifat opsional dan tidak diperlukan untuk konfigurasi Docker Swarm.
8 Membuat Docker Swarm Manager
Inisialisasi Docker Swarm di VPS menggunakan IP Tailscale sebagai advertise address agar komunikasi antar node
melewati tunnel VPN yang aman:
bash · VPS (Swarm Manager)
1 # Inisialisasi Swarm Manager di VPS
2 # Gunakan IP Tailscale VPS sebagai advertise-addr
3 docker swarm init --advertise-addr [Link]
4
5 # Ambil token untuk menambahkan worker node
6 docker swarm join-token worker
9 Menambahkan Local Server sebagai Worker
bash · Local Server (Worker)
1 # Jalankan command ini di Local Server
2 # TOKEN didapat dari output perintah join-token di VPS
3 docker swarm join --token TOKEN [Link]:2377
4
5 # Verifikasi dari VPS bahwa node berhasil bergabung
6 docker node ls
10 Memberikan Label Node
Label digunakan sebagai constraint placement sehingga service dapat ditargetkan ke node yang tepat (VPS atau Local
Server):
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 5
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
bash · VPS (Swarm Manager)
1 # Lihat daftar node dan hostname-nya
2 docker node ls
3
4 # Contoh hostname node:
5 # [Link] → VPS
6 # nando-ubuntu → Local Server
7
8 # Tambahkan label ke masing-masing node
9 docker node update --label-add role=vps [Link]
10 docker node update --label-add role=local nando-ubuntu
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 6
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
11 Deploy Portainer Server dan Agent
Tentang Portainer Stack
Portainer Server berjalan di VPS sebagai control plane UI
Portainer Agent berjalan otomatis pada seluruh node cluster
Stack file disimpan di: /opt/swarm/[Link]
Akses Portainer UI melalui: [Link]
bash · VPS (Swarm Manager)
1 # Deploy Portainer stack ke Docker Swarm
2 docker stack deploy -c [Link] portainer
3
4 # Akses dashboard Portainer
5 # [Link]
12 Deploy Aplikasi ke Local Server
Gunakan placement constraint pada Docker Compose file untuk menargetkan service ke Local Server:
yaml / bash · Deploy ke Local Server
1 # Contoh konfigurasi placement constraint di [Link]
2 placement:
3 constraints:
4 - [Link] == local
5
6 # Deploy stack ke Swarm
7 docker stack deploy -c [Link] demo
8
9 # Verifikasi service berjalan di node yang benar
10 docker service ps demo_web_local
13 Konfigurasi Reverse Proxy
Langkah 1 — Konfigurasi DNS:
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 7
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
DNS Configuration
1 # Arahkan domain ke Public IP VPS di DNS provider
2 [Link] → A Record → IP_PUBLIC_VPS
Langkah 2 — Tambahkan Proxy Host di Nginx Proxy Manager:
Nginx Proxy Manager · Proxy Host Config
1 Domain Name : [Link]
2 Forward Host : [Link] ← IP Tailscale Local Server
3 Forward Port : 8080 ← Port container di Local Server
4 SSL : Let's Encrypt (aktifkan Force SSL)
Alur Request Lengkap:
REQUEST FLOW
1 Internet
2 ■
3 ▼
4 [Link] (DNS → Public IP VPS)
5 ■
6 ▼
7 Nginx Proxy Manager (VPS :80/:443)
8 ■
9 ▼
10 [Link]:8080 (via Tailscale VPN)
11 ■
12 ▼
13 Container pada Local Worker Node
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 8
DOCKER MULTI SERVER Tutorial Dokumentasi Teknis
14 Kesimpulan
Dengan kombinasi Docker Swarm, Portainer, dan Tailscale, Local Server dapat dikelola dari VPS secara terpusat tanpa
membuka Docker API ke internet publik. Semua aplikasi dapat diakses menggunakan domain publik melalui Reverse Proxy
pada VPS, sementara container dapat dijalankan baik di VPS maupun di Local Worker sesuai kebutuhan.
Komponen Fungsi Lokasi
Docker Swarm Orchestrator cluster multi-node VPS (Manager) + Local (Worker)
Tailscale VPN Overlay network antar server VPS + Local Server
Portainer Dashboard manajemen visual VPS (Server) + Semua Node (Agent)
Nginx Proxy Manager Reverse proxy + SSL termination VPS
Docker Labels Targeting service ke node tertentu VPS (Manager)
Keunggulan Arsitektur Ini
Keamanan tinggi: Docker API tidak pernah terekspos ke internet publik
Skalabilitas: Mudah menambah node worker baru ke dalam cluster
Fleksibilitas: Aplikasi dapat dipindahkan antar node tanpa downtime
Sentralisasi: Satu dashboard Portainer untuk mengelola semua server
Biaya efisien: Memanfaatkan Local Server sebagai resource tambahan
● Tailscale VPN ● Docker Swarm ● Portainer ● Nginx Proxy Manager Hal. 9