Setting Reverse Proxy Caddy Ubuntu 24.04
Setting Reverse Proxy Caddy Ubuntu 24.04

Setting Reverse Proxy dengan Caddy Ubuntu 24.04 LTS

Caddy web server modern yang menonjol karena kemudahan konfigurasi dan fitur otomatisasi SSL/TLS.

Berbeda dengan Nginx atau Apache yang memerlukan konfigurasi manual sertifikat menggunakan Certbot, Caddy secara otomatis mendapatkan dan memperbarui sertifikat dari Let’s Encrypt .

Hal ini menjadikannya pilihan ideal untuk digunakan sebagai reverse proxy, terutama jika ingin mengekspos aplikasi yang berjalan di port tertentu (seperti Node.js, Python, atau Docker) ke domain publik dengan koneksi HTTPS yang aman.

Website Sederhana

Install Node.Js dan NPM.

sudo apt install nodejs -y && sudo apt install npm -y

Install proses management (PM2).

sudo npm install -g pm2

Buat direktori untuk menyimpan file source website.

mkdir app-01
cd app-01

Jalankan init untuk app-01

npm init -y

Install Framework Express Js

npm install express

Buat file app-01.js

nano app-01.js

Masukan source code website sederhana dibawah.

const express = require('express');
const app = express();
const port = 8181;

app.get('/', (req, res) => {
    res.send(`
        <!DOCTYPE html>
        <html>
        <head>
            <title>APP 01</title>
            <style>
                body {
                    margin: 0;
                    height: 100vh;
                    display: flex;
                    justify-content: center;
                    align-items: center;
                    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
                    font-family: Arial, sans-serif;
                }
                h1 {
                    color: white;
                    font-size: 4rem;
                    text-shadow: 2px 2px 4px rgba(0,0,0,0.2);
                }
            </style>
        </head>
        <body>
            <h1>APP 01</h1>
        </body>
        </html>
    `);
});

app.listen(port, () => {
    console.log(`Server running at http://127.0.0.1:${port}`);
});

Jalankan file app-01.js

sudo pm2 start app-1.js

DNS Record Cloudflare

Domain sudah menggunakan nameserver dari cloudflare dan dns record terpointing (A) domain -> IP_Public, (CNAME) www -> domain.

Secara default caddy webserver generate otomatis SSL, maka pada bagian proxy dns record Status Proxied disable.

Caddy Web Server

Install paket yang diperlukan untuk install caddy.

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

Tambahkan gpg.key dan repository caddy.

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Ubah hak akses file gpg dan repository.

sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

Update dan install caddy.

sudo apt update -y && sudo apt upgrade -y
sudo apt install caddy

Cek versi caddy

caddy -v

Versi caddy yang terinstall v2.11.4 .

Output

v2.11.4

Pengecekan akses url http://IP_Public pada browser. Pastikan muncul halaman default caddy.

Konfigurasi Reverse Proxy Caddy

Sebelum melakukan kongurasi reverse proxy caddy, backup terlebih dahulu file default.

sudo cp /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak

Buka file Caddyfile

sudo nano /etc/caddy/Caddyfile

Masukan konfigurasi

DOMAIN {
    reverse_proxy 127.0.0.1:8181

        header {

        # Menghapus Response Server
        -Server
        # Menghapus Response "Powered-By"
        -X-Powered-By
        # Menghapus Respons "Via 1.1 Caddy" 
        -Via

        # HSTS (Force HTTPS)
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        # Cegah Clickjacking
        X-Frame-Options "DENY"
        # Cegah MIME sniffing
        X-Content-Type-Options "nosniff"
        # Kontrol referrer
        Referrer-Policy "strict-origin-when-cross-origin"
        # Nonaktifkan fitur browser yang berbahaya
        Permissions-Policy "geolocation=(), microphone=(), camera=()"

        }

    log {
        output file /var/log/caddy/DOMAIN-access.log
        }

        encode gzip
}

Validate konfigurasi reverse proxy caddy.

caddy validate --config /etc/caddy/Caddyfile

Restart service caddy.

sudo systemctl restart caddy

Cek status service caddy.

sudo systemctl status caddy

Firewall UFW

Hanya ijinkan port 22 (SSH), 80 (http) dan 443 (https) yang bisa request ke server.

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Aktifkan firewall ufw.

sudo ufw enable

Pengujian Reverse Proxy

Akses url https://DOMAIN pada browser, pastikan website bisa diakses.

Website APP 01
Website APP 01

Kesimpulan

Dengan mengikuti panduan Setting Reverse Proxy Caddy Ubuntu 24.04 di atas, kamu telah berhasil mengubah server biasa menjadi gateway lalu lintas yang tangguh dan modern.

Caddy tidak hanya menyederhanakan proses konfigurasi HTTPS berkat otomatisasi SSL-nya, tetapi juga menawarkan performa tinggi untuk menangani berbagai skenario routing.

Dari konfigurasi single domain sederhana hingga implementasi multi-service yang kompleks, Caddy membuktikan diri sebagai alternatif yang sangat kompetitif dibandingkan reverse proxy tradisional.

Kamu sekarang dapat mulai mengekspos berbagai aplikasi dengan aman tanpa repot mengelola sertifikat secara manual.