EQVPS
Mulai

Cara men-deploy stack Docker Compose di VPS

Deploy stack multi-kontainer di VPS dengan Docker Compose: tulis docker-compose.yml, simpan rahasia di .env, jalankan dengan restart-saat-reboot, dan publikasikan hanya port yang benar-benar kamu maksud. Contoh salin-tempel dengan aplikasi web, basis data, dan reverse proxy.

Docker Compose mendeskripsikan stack multi-kontainer dalam satu file dan menjalankannya dengan satu perintah. Ini panduan deploy-nya; pasang Docker dulu jika belum. Untuk stack khusus agen AI (agen + basis data vektor + Redis), lihat docker-compose untuk agen AI.

1. Sebuah stack: app + basis data + reverse proxy

# /opt/stack/docker-compose.yml
services:
  app:
    image: your/app:latest
    restart: unless-stopped
    env_file: [.env]
    depends_on: [db]
    # no ports: — reached only through the proxy below

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes: ["pg:/var/lib/postgresql/data"]   # internal only

  caddy:                                        # HTTPS automatically
    image: caddy:2
    restart: unless-stopped
    ports: ["80:80", "443:443"]                 # the only public entrypoint
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes: { pg: {}, caddy_data: {} }

Rahasia hidup di .env, jangan pernah di file compose:

# /opt/stack/.env  (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string

Caddyfile minimal mem-proxy domainmu ke app dan mengambil HTTPS sendiri:

app.yourdomain.com {
  reverse_proxy app:8080
}

2. Jalankan

cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app

restart: unless-stopped di tiap layanan + Docker aktif saat boot = stack kembali sendiri setelah reboot.

3. Perintah sehari-hari

docker compose pull && docker compose up -d   # update images
docker compose down                            # stop the stack
docker compose restart app                     # restart one service

Bagian yang sering salah: port yang terekspos

Docker mempublikasikan port lewat iptables, jadi kontainer dengan ports: ["5432:5432"] bisa dijangkau dari internet bahkan di balik firewall UFW yang kamu kira tertutup. Publikasikan hanya titik masuk publik (proxy di 80/443); jaga basis data dan cache di jaringan compose atau terikat ke 127.0.0.1. Apa pun yang melayani trafik web butuh paket IP khusus; pasangkan dengan firewall UFW.

Untuk seluruh stack di balik satu IP, lihat swakelola beberapa layanan. Root dalam sekitar semenit, NVMe, tanpa KYC, bayar dengan kripto.

FAQ

Bagaimana men-deploy stack Docker Compose di VPS?

Pasang Docker dengan plugin Compose, tulis docker-compose.yml yang mendeskripsikan tiap layanan, simpan rahasia di .env yang diabaikan git, lalu docker compose up -d. Set restart: unless-stopped di tiap layanan dan aktifkan Docker saat boot agar stack bertahan melewati reboot. Contoh di bawah menjalankan aplikasi web, Postgres, dan reverse proxy Caddy.

Rahasia ditaruh di mana — di file compose?

Tidak. Taruh di file .env (chmod 600, diabaikan git) dan rujuk sebagai ${VAR} di compose, atau gunakan Docker secrets. Jangan pernah commit kata sandi atau kunci API ke docker-compose.yml — file bocor dengan kredensial aktif adalah kesalahan klasik.

Apakah stack akan kembali setelah reboot?

Hanya jika kamu memintanya. Set restart: unless-stopped (atau always) di tiap layanan dan aktifkan Docker saat boot (systemctl enable docker). Maka docker compose up -d bertahan melewati reboot dan me-restart kontainer yang crash.

Port mana yang terekspos?

Hanya yang kamu publikasikan dengan ports:. Ikat layanan internal (basis data, cache) ke jaringan compose atau 127.0.0.1 dan publikasikan hanya titik masuk publik — biasanya reverse proxy di 80/443. Docker mempublikasikan lewat iptables, jadi baris ports: yang tak sengaja bisa dijangkau dari internet bahkan di balik UFW.

Apakah Anda meminta identitas atau kartu?

Tidak. Email untuk mendaftar, bayar dengan USDC atau USDT — tanpa dokumen, tanpa kartu. Root dalam sekitar semenit.

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.