−25%

untuk Windows tahunan, hingga 31 Okt. Lihat paket

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.

Cara mengosongkan ruang disk di VPS tanpa merusak apa pun →

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.