Mengapa Harus HTTPS?

Keamanan adalah prioritas utama. Dengan mengaktifkan SSL di port 443, data yang dikirim antara server dan pengunjung akan dienkripsi. Selain itu, browser seperti Chrome akan memberikan label “Secure” (Gembok Hijau) yang meningkatkan kepercayaan pengguna.

1. Persiapan Struktur Docker

Pertama, kita perlu memastikan Docker Compose sudah dikonfigurasi untuk membuka port 80 (HTTP) dan 443 (HTTPS). Jangan lupa untuk menyambungkan (mount) folder sertifikat ke dalam container Nginx.

# docker-compose.yml snippet
nginx:
  image: nginx:alpine
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    - ./certs:/etc/nginx/certs:ro

2. Konfigurasi Nginx (Reverse Proxy)

Nginx bertugas menerima trafik HTTPS dan meneruskannya ke aplikasi kita. Kita juga perlu menambahkan pengalihan otomatis dari HTTP ke HTTPS.

server {
    listen 80;
    server_name corestack.biz.id;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name corestack.biz.id;

    ssl_certificate /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;

    location / {
        proxy_pass http://tech-web:4321;
    }
}

3. Mendapatkan Sertifikat Asli (Let’s Encrypt)

Kita menggunakan Certbot untuk mendapatkan sertifikat gratis dan terpercaya dari Let’s Encrypt. Jalankan perintah ini di terminal VPS Anda:

# Matikan Nginx sementara agar port 80 kosong
docker compose stop nginx

# Jalankan Certbot
sudo certbot certonly --standalone -d domainanda.com

# Salin sertifikat ke folder proyek
sudo cp /etc/letsencrypt/live/domainanda.com/fullchain.pem ./certs/
sudo cp /etc/letsencrypt/live/domainanda.com/privkey.pem ./certs/

# Nyalakan kembali Nginx
docker compose start nginx

Kesimpulan

Sekarang website Anda sudah aman dengan SSL! Nginx akan otomatis menangani enkripsi, dan aplikasi Astro Anda bisa fokus pada performa dan konten.


Tutorial ini ditulis berdasarkan setup nyata pada server Tech-Web.