DEV Community

Nandan Ramdani
Nandan Ramdani

Posted on

Cara Install Docker, Nginx, dan SSL Certbot di Ubuntu 24.04 untuk Deployment Aplikasi Production

Membangun aplikasi modern tidak hanya soal coding. Setelah aplikasi selesai dibuat, langkah penting berikutnya adalah melakukan deployment ke server agar bisa diakses secara online dengan aman dan stabil.

Pada artikel ini, kita akan membahas cara setup server Ubuntu 24.04 mulai dari instalasi Docker, konfigurasi Nginx sebagai reverse proxy, hingga pemasangan SSL gratis menggunakan Let's Encrypt Certbot.

Panduan ini cocok untuk deployment aplikasi Next.js, Laravel, Node.js, Golang, Python, maupun aplikasi berbasis Docker lainnya.


Persiapan Server

Sebelum memulai, pastikan Anda sudah memiliki:

  • VPS dengan Ubuntu 24.04
  • Domain yang sudah mengarah ke IP VPS
  • Akses SSH ke server
  • User dengan hak sudo atau root

Contoh domain yang digunakan:

chatline.example.com
Enter fullscreen mode Exit fullscreen mode

Update Sistem Ubuntu

Langkah pertama adalah memperbarui paket sistem agar menggunakan versi terbaru.

sudo apt update
sudo apt upgrade -y
sudo reboot
Enter fullscreen mode Exit fullscreen mode

Setelah server kembali online, login kembali melalui SSH.


Install Docker di Ubuntu 24.04

Docker memudahkan proses deployment karena aplikasi dapat berjalan dalam container yang terisolasi.

Install Docker menggunakan script resmi:

curl -fsSL https://get.docker.com | sh
Enter fullscreen mode Exit fullscreen mode

Pastikan Docker berhasil terpasang:

docker --version
Enter fullscreen mode Exit fullscreen mode

Cek juga Docker Compose:

docker compose version
Enter fullscreen mode Exit fullscreen mode

Aktifkan Docker agar otomatis berjalan saat server restart:

sudo systemctl enable docker
sudo systemctl start docker
Enter fullscreen mode Exit fullscreen mode

Install Nginx

Nginx akan digunakan sebagai reverse proxy yang meneruskan request dari domain ke aplikasi yang berjalan di Docker.

Install Nginx:

sudo apt install nginx -y
Enter fullscreen mode Exit fullscreen mode

Aktifkan service:

sudo systemctl enable nginx
sudo systemctl start nginx
Enter fullscreen mode Exit fullscreen mode

Cek status:

sudo systemctl status nginx
Enter fullscreen mode Exit fullscreen mode

Konfigurasi Firewall

Jika menggunakan UFW, buka akses untuk HTTP dan HTTPS.

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Enter fullscreen mode Exit fullscreen mode

Verifikasi:

sudo ufw status
Enter fullscreen mode Exit fullscreen mode

Menjalankan Aplikasi dengan Docker

Misalnya aplikasi berjalan pada port 8001.

Contoh menjalankan container:

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

Pastikan aplikasi dapat diakses secara lokal:

curl http://localhost:8001
Enter fullscreen mode Exit fullscreen mode

Jika aplikasi merespon dengan baik, lanjut ke konfigurasi Nginx.


Konfigurasi Nginx Reverse Proxy

Buat file konfigurasi baru:

sudo nano /etc/nginx/sites-available/chatline.example.com
Enter fullscreen mode Exit fullscreen mode

Isi dengan konfigurasi berikut:

server {
    listen 80;
    listen [::]:80;

    server_name chatline.example.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:8001;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
Enter fullscreen mode Exit fullscreen mode

Aktifkan konfigurasi:

sudo ln -s /etc/nginx/sites-available/chatline.example.com /etc/nginx/sites-enabled/
Enter fullscreen mode Exit fullscreen mode

Hapus konfigurasi default:

sudo rm -f /etc/nginx/sites-enabled/default
Enter fullscreen mode Exit fullscreen mode

Test konfigurasi:

sudo nginx -t
Enter fullscreen mode Exit fullscreen mode

Jika berhasil:

sudo systemctl reload nginx
Enter fullscreen mode Exit fullscreen mode

Install SSL Gratis dengan Certbot

Agar website dapat diakses menggunakan HTTPS, install Certbot terlebih dahulu.

sudo apt install certbot python3-certbot-nginx -y
Enter fullscreen mode Exit fullscreen mode

Cek versi:

certbot --version
Enter fullscreen mode Exit fullscreen mode

Generate SSL Let's Encrypt

Pastikan domain sudah mengarah ke IP VPS.

Jika menggunakan Cloudflare, ubah DNS menjadi DNS Only terlebih dahulu sebelum proses generate SSL.

Jalankan:

sudo certbot --nginx -d chatline.example.com
Enter fullscreen mode Exit fullscreen mode

Masukkan email dan ikuti instruksi yang muncul.

Saat ditanya mengenai redirect HTTP ke HTTPS, pilih:

Redirect
Enter fullscreen mode Exit fullscreen mode

Certbot akan otomatis:

  • Membuat sertifikat SSL
  • Menambahkan konfigurasi SSL ke Nginx
  • Membuat redirect HTTP ke HTTPS

Test SSL HTTPS

Buka browser:

https://chatline.example.com
Enter fullscreen mode Exit fullscreen mode

Atau test menggunakan terminal:

curl -I https://chatline.example.com
Enter fullscreen mode Exit fullscreen mode

Jika berhasil, website sudah menggunakan HTTPS dengan sertifikat SSL yang valid.


Auto Renewal SSL

Let's Encrypt memiliki masa berlaku 90 hari.

Certbot secara otomatis membuat jadwal perpanjangan sertifikat.

Untuk memastikan fitur auto renewal berjalan:

systemctl list-timers | grep certbot
Enter fullscreen mode Exit fullscreen mode

Lakukan simulasi:

sudo certbot renew --dry-run
Enter fullscreen mode Exit fullscreen mode

Jika tidak ada error, sertifikat akan diperpanjang otomatis sebelum masa berlaku habis.


Konfigurasi Cloudflare (Opsional)

Jika menggunakan Cloudflare, setelah SSL berhasil dibuat:

  1. Aktifkan kembali Proxy Cloudflare
  2. Masuk ke menu SSL/TLS
  3. Pilih mode Full (Strict)

Konfigurasi ini memberikan keamanan maksimal antara Cloudflare dan server origin.


Struktur Deployment yang Direkomendasikan

/opt/app
├── docker-compose.yml
├── .env
├── uploads
├── backups
└── logs
Enter fullscreen mode Exit fullscreen mode

Dengan struktur ini, proses maintenance, backup, dan scaling aplikasi akan lebih mudah dilakukan.


Kesimpulan

Menggunakan Docker, Nginx, dan SSL Certbot adalah salah satu kombinasi terbaik untuk deployment aplikasi modern di Ubuntu 24.04. Setup ini ringan, mudah dikelola, aman, dan cocok digunakan untuk berbagai jenis aplikasi seperti Next.js, Node.js, Laravel, Go, Python, hingga aplikasi SaaS berbasis Docker.

Dengan reverse proxy Nginx dan SSL Let's Encrypt, aplikasi Anda akan lebih profesional, aman, dan siap digunakan di lingkungan production.

Top comments (0)