0% menganggap dokumen ini bermanfaat (0 suara)
0 tayangan9 halaman

Docker MultiServer Tutorial-1

Dokumen ini menjelaskan implementasi infrastruktur Docker multi-server menggunakan VPS dan Local Server yang terhubung melalui Tailscale VPN. Arsitektur ini memungkinkan pengelolaan terpusat dengan Docker Swarm dan Portainer, serta akses aplikasi melalui Nginx Proxy Manager tanpa membuka port Docker ke internet publik. Tujuan utama adalah meningkatkan keamanan, skalabilitas, dan efisiensi biaya dalam pengelolaan aplikasi container.

Diunggah oleh

FERRY FERNANDO 1
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
0 tayangan9 halaman

Docker MultiServer Tutorial-1

Dokumen ini menjelaskan implementasi infrastruktur Docker multi-server menggunakan VPS dan Local Server yang terhubung melalui Tailscale VPN. Arsitektur ini memungkinkan pengelolaan terpusat dengan Docker Swarm dan Portainer, serta akses aplikasi melalui Nginx Proxy Manager tanpa membuka port Docker ke internet publik. Tujuan utama adalah meningkatkan keamanan, skalabilitas, dan efisiensi biaya dalam pengelolaan aplikasi container.

Diunggah oleh

FERRY FERNANDO 1
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

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

Anda mungkin juga menyukai