Tutorial / 09 Jun 2026 10:00 WIB

Cara Setup Caddy Sebagai Reverse Proxy untuk Docker

P

Tim Redaksi

POPAJA.com

BAGIKAN:
Cara Setup Caddy Sebagai Reverse Proxy untuk Docker
- Iklan -
Daftar Isi (Klik untuk melihat)

Dalam dunia containerization, Anda mungkin memiliki banyak aplikasi yang masing-masing diakses melalui antarmuka web tersendiri — beberapa di antaranya bahkan tanpa enkripsi. Di sinilah peran Caddy reverse proxy menjadi sangat vital. Dengan mengonfigurasi Caddy sebagai reverse proxy, seluruh lalu lintas web dari browser Anda menuju berbagai container hanya perlu mempercayai satu sertifikat, sekaligus mendapatkan sesi terenkripsi secara otomatis. Artikel ini akan membahas secara lengkap cara setup Caddy sebagai reverse proxy untuk Docker, mulai dari konsep dasar hingga implementasi praktis menggunakan Docker Compose.

Apa Itu Reverse Proxy dan Mengapa Anda Membutuhkannya?

Sebelum masuk ke langkah teknis, penting untuk memahami bagaimana reverse proxy bekerja — terutama dari sisi keamanan. Dalam skenario koneksi langsung biasa, komputer Anda akan terhubung langsung ke web server, sehingga tercipta end-to-end encryption. Artinya, hanya perangkat Anda dan server yang dapat melihat data yang dipertukarkan.

- Iklan -

Namun, tidak semua container mendukung enkripsi. Container yang mendukung pun memerlukan manajemen sertifikat yang rumit, dan penggunaan self-signed certificate sangat tidak disarankan karena meningkatkan risiko serangan man-in-the-middle (MITM).

Bagaimana Reverse Proxy Bekerja

Ketika Anda menggunakan reverse proxy seperti Caddy, koneksi dari browser tidak langsung menuju web server, melainkan:

  1. Browser Anda membuat koneksi terenkripsi ke reverse proxy (Caddy).

  2. Caddy kemudian membuat koneksi tersendiri ke web server atau container tujuan.

    - Iklan -

  3. Caddy meneruskan (proxy) data antara browser dan server.

Hasilnya, Anda hanya perlu mengelola satu sertifikat SSL — milik Caddy itu sendiri — dan seluruh container di belakangnya dapat diakses melalui satu titik masuk yang terenkripsi.

Peringatan Keamanan yang Perlu Dipahami

Penting untuk dicatat bahwa mekanisme kerja reverse proxy secara teknis mirip dengan serangan man-in-the-middle. Bedanya, Anda yang mengontrol perangkat di tengah. Artinya:

  • Browser mengenkripsi data → Caddy mendekripsinya → Caddy meneruskan ke server tujuan.

  • Caddy melihat seluruh data yang melewatinya, termasuk username dan password.

  • Anda harus mempercayai pengembang Caddy agar data tidak disalahgunakan.

Selain itu, jika container tujuan tidak mendukung enkripsi, traffic antara Caddy dan container tersebut tetap tidak terenkripsi. Meskipun browser Anda menampilkan ikon gembok (koneksi aman), risiko sebenarnya bergeser ke jalur antara Caddy dan container. Dalam skenario ini, posisikan Caddy sedekat mungkin dengan perangkat tujuan — idealnya pada host yang sama — sehingga traffic tidak terenkripsi tidak meninggalkan mesin tersebut.

Mengapa Caddy Pilihan Terbaik untuk Reverse Proxy Container?

Dari sekian banyak reverse proxy yang tersedia — seperti Nginx, Traefik, dan HAProxy — Caddy memiliki beberapa keunggulan yang sangat relevan untuk pengelolaan container:

  • HTTPS Otomatis: Caddy secara otomatis memperoleh dan memperbarui sertifikat SSL dari Let's Encrypt tanpa konfigurasi manual.

  • Konfigurasi Sederhana: Caddyfile yang dimiliki Caddy jauh lebih mudah dibaca dan ditulis dibandingkan konfigurasi Nginx.

  • Berjalan sebagai Container: Caddy dapat di-deploy langsung sebagai Docker container, menjadikannya seamless dalam ekosistem Docker.

  • Dokumentasi Resmi yang Lengkap: Caddy memiliki dokumentasi resmi yang terstruktur dengan baik di caddyserver.com/docs.

Prasyarat Sebelum Memulai

Panduan ini mengasumsikan bahwa Anda sudah memiliki hal-hal berikut:

  • Docker dan Docker Compose sudah terinstal di server Anda.

  • Anda memiliki pemahaman dasar tentang terminal Linux dan cara kerja container.

  • Anda memiliki nama domain (opsional, untuk HTTPS otomatis dengan Let's Encrypt).

Jika Docker belum terinstal, silakan ikuti panduan instalasi Docker resmi di docs.docker.com terlebih dahulu.

Langkah 1: Membuat Docker Compose untuk Caddy

Kami merekomendasikan menggunakan Docker Compose untuk mengelola container Caddy. Buat file docker-compose.yml baru atau edit yang sudah ada.

services:
  caddy:
    image: caddy:latest
    container_name: caddy
    networks:
      - proxy-network

  app:
    image: your-app-image
    container_name: app-container
    networks:
      - proxy-network

networks:
  proxy-network:
    driver: bridge

Penjelasan komponen penting dalam konfigurasi di atas:

KomponenFungsi
caddy:latestMenggunakan versi terbaru dari image Caddy resmi.
restart: unless-stoppedContainer akan otomatis berjalan kembali setelah reboot kecuali dihentikan manual.
ports 80, 443Memetakan port HTTP dan HTTPS dari host ke container.
caddy_data volumeMenyimpan data persisten seperti sertifikat SSL agar tidak hilang saat container dibuat ulang.
Caddyfile volumeMemetakan file konfigurasi Caddy dari host ke dalam container.

Langkah 2: Menulis Caddyfile untuk Reverse Proxy

Buat file bernama Caddyfile di direktori yang sama dengan docker-compose.yml. Berikut contoh konfigurasi dasar reverse proxy menggunakan Caddy:

app.example.com {
    reverse_proxy app-container:8080
}

Penjelasan:

  • app.example.com adalah nama domain yang akan diarahkan ke container Anda.

  • reverse_proxy adalah direktif yang menginstruksikan Caddy untuk meneruskan request ke target yang ditentukan.

  • app-container:8080 adalah nama container Docker beserta port yang ingin Anda proxy.

Caddy secara otomatis akan:

  1. Meminta sertifikat SSL dari Let's Encrypt untuk domain tersebut.

  2. Mengatur redirect dari HTTP ke HTTPS.

  3. Menangani perpanjangan sertifikat secara otomatis.

Contoh Multi-Domain Reverse Proxy

Jika Anda memiliki beberapa container yang perlu diakses melalui domain berbeda:

app1.example.com {
    reverse_proxy app1-container:3000
}

app2.example.com {
    reverse_proxy app2-container:8080
}

dashboard.example.com {
    reverse_proxy grafana-container:3000
}

Konfigurasi untuk HTTPS Lokal (Tanpa Domain Publik)

Jika Anda hanya ingin menggunakan Caddy di jaringan lokal tanpa domain publik, Caddy mendukung HTTPS lokal menggunakan sertifikat internal. Untuk konfigurasi lebih lanjut, silakan merujuk pada dokumentasi resmi tentang Local HTTPS.

Langkah 3: Menjalankan Caddy Container

Setelah kedua file siap, jalankan perintah berikut dari terminal:

docker compose up -d

Untuk memverifikasi bahwa Caddy berjalan dengan baik:

docker compose logs caddy

Anda seharusnya melihat log yang menunjukkan Caddy berhasil memperoleh sertifikat SSL dan mulai mendengarkan di port 80 dan 443.

Langkah 4: Menghubungkan Container Lain ke Jaringan Caddy

Agar Caddy dapat berkomunikasi dengan container lain, pastikan mereka berada pada jaringan Docker yang sama. Anda dapat mendefinisikan jaringan bersama di file docker-compose.yml:

services:
  caddy:
    image: caddy:latest
    container_name: caddy
    networks:
      - proxy-network

  app:
    image: your-app-image
    container_name: app-container
    networks:
      - proxy-network

networks:
  proxy-network:
    driver: bridge

Dengan pendekatan ini, Caddy dapat menjangkau app-container menggunakan nama container sebagai hostname — fitur bawaan dari jaringan bridge Docker.

Tips dan Praktik Terbaik

  • Selalu gunakan volume untuk data persisten agar sertifikat SSL tidak hilang saat container di-recreate.

  • Pantau log Caddy secara berkala untuk mendeteksi masalah perpanjangan sertifikat atau koneksi.

  • Jangan expose port container aplikasi ke host — cukup biarkan Caddy yang menjadi satu-satunya pintu masuk.

  • Gunakan firewall untuk membatasi akses hanya ke port 80 dan 443 di host Anda.

  • Untuk mempelajari seluruh direktif Caddyfile, kunjungi dokumentasi resmi di Caddyfile Documentation.

Kesimpulan

Mengonfigurasi Caddy sebagai reverse proxy untuk Docker adalah solusi elegan untuk mengelola akses ke banyak container sekaligus memastikan seluruh lalu lintas terenkripsi. Dengan fitur HTTPS otomatis, konfigurasi Caddyfile yang sederhana, dan kemampuan berjalan langsung sebagai container, Caddy menghilangkan kompleksitas manajemen sertifikat yang biasanya menjadi hambatan utama.

Namun, penting untuk memahami bahwa keamanan reverse proxy bergantung pada lingkungan di sekitarnya. Pastikan traffic antara Caddy dan container tujuan tetap aman — terutama jika container tidak mendukung enkripsi. Dengan perencanaan yang tepat dan pemahaman atas risiko yang ada, Caddy menjadi alat yang sangat powerful dalam infrastruktur container modern Anda.

FAQ (Pertanyaan yang Sering Diajukan)

1. Apa keunggulan Caddy dibandingkan Nginx sebagai reverse proxy?

Keunggulan utama Caddy adalah HTTPS otomatis — Anda tidak perlu mengonfigurasi sertifikat SSL secara manual. Selain itu, Caddyfile milik Caddy jauh lebih sederhana dan mudah dipahami dibandingkan konfigurasi Nginx. Caddy juga menangani perpanjangan sertifikat secara otomatis di latar belakang.

2. Apakah Caddy aman untuk digunakan di lingkungan produksi?

Ya, Caddy sudah digunakan secara luas di lingkungan produksi. Caddy ditulis dalam bahasa Go yang dikenal aman dari buffer overflow, dan proyek ini memiliki komunitas aktif serta pembaruan keamanan yang rutin. Namun, seperti halnya semua perangkat lunak, pastikan Anda selalu menggunakan versi terbaru.

3. Bisakah Caddy digunakan tanpa domain publik?

Bisa. Caddy mendukung HTTPS lokal menggunakan sertifikat internal (internal CA). Ini cocok untuk lingkungan jaringan lokal atau development. Cukup gunakan nama host lokal di Caddyfile, dan Caddy akan membuat sertifikat internal secara otomatis.

4. Bagaimana cara menambahkan container baru ke reverse proxy Caddy?

Tambahkan entri baru di Caddyfile Anda dengan domain dan target container yang sesuai, lalu restart Caddy dengan perintah docker compose restart caddy. Pastikan container baru tersebut terhubung ke jaringan Docker yang sama dengan Caddy.

5. Apa yang terjadi jika sertifikat Let's Encrypt gagal diperpanjang?

Caddy akan mencoba memperpanjang sertifikat secara otomatis sebelum masa berlaku habis. Jika gagal (misalnya karena masalah DNS atau jaringan), Caddy akan mencoba lagi secara periodik. Anda dapat memantau statusnya melalui log container dengan perintah docker compose logs caddy.

- Iklan -