Memasang Caddy Web Server di Debian 13

Pendahuluan

Caddy adalah web server modern yang dirancang untuk kemudahan penggunaan, keamanan, dan performa tinggi. Berbeda dengan Apache atau Nginx, Caddy secara otomatis mengelola sertifikat SSL/TLS dari Let's Encrypt tanpa konfigurasi tambahan. Artikel ini akan membahas panduan lengkap langkah demi langkah cara memasang dan mengonfigurasi Caddy Web Server di Debian 13.

Mengapa Memilih Caddy?

  • HTTPS Otomatis: Caddy secara otomatis meminta dan memperbarui sertifikat SSL dari Let's Encrypt.
  • Caddyfile: Konfigurasi menggunakan sintaks yang mudah dibaca dan ditulis.
  • Performa Tinggi: Ditulis dalam bahasa Go, Caddy sangat ringan dan cepat.
  • Reverse Proxy: Mendukung reverse proxy ke aplikasi backend seperti Node.js, Python, atau PHP-FPM.
  • Keamanan: Mengenkripsi semua lalu lintas secara default.

Persiapan

Sebelum memulai, pastikan Anda sudah memiliki:

  • VPS atau server dengan Debian 13 yang sudah terinstal.
  • Akses root atau user dengan hak akses sudo.
  • Nama domain atau subdomain yang sudah diarahkan (DNS A Record) ke IP server Anda.

Langkah Instalasi

  1. Lakukan update sistem:
bash
sudo apt update && sudo apt upgrade -y
  1. Instal paket dependensi yang diperlukan:
bash
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
  1. Import kunci GPG resmi Caddy:
bash
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  1. Tambahkan repositori resmi Caddy:
bash
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
  1. Lakukan update sistem kembali:
bash
sudo apt update
  1. Instal caddy:
bash
sudo apt install caddy -y
  1. Pastikan Caddy sudah aktif dan berjalan:
bash
sudo systemctl status caddy

Jika belum aktif, jalankan perintah berikut:

bash
sudo systemctl start caddy
bash
sudo systemctl enable caddy

Konfigurasi Dasar

File konfigurasi Caddy terletak di /etc/caddy/Caddyfile. Buka file tersebut menggunakan text editor:

bash
sudo nano /etc/caddy/Caddyfile

Melayani File Statis

Jika Anda ingin meng-hosting file statis seperti HTML, CSS, dan JavaScript:

caddyfile
https://domain-anda.com {
    root * /var/www/html
    file_server
}

Reverse Proxy ke Aplikasi Backend

Jika Anda menjalankan aplikasi backend (misalnya Node.js di port 3000):

caddyfile
https://domain-anda.com {
    reverse_proxy localhost:3000
}

PHP-FPM

Jika Anda menjalankan aplikasi PHP dengan PHP-FPM:

caddyfile
https://domain-anda.com {
    root * /var/www/html
    php_fastcgi unix//run/php/php8.5-fpm.sock
    file_server
}

Ganti php8.5 dengan versi PHP yang Anda gunakan.

Gzip Kompresi

Untuk mengaktifkan kompresi gzip agar website lebih cepat:

caddyfile
https://domain-anda.com {
    root * /var/www/html
    encode gzip
    file_server
}

Menggunakan IP Address (Tanpa Domain)

Jika Anda belum memiliki domain dan ingin menggunakan IP address langsung:

caddyfile
:80 {
    root * /var/www/html
    file_server
}
Catatan: Fitur HTTPS otomatis hanya berfungsi jika Anda menggunakan domain yang valid. Jika menggunakan IP address, Caddy hanya akan melayani HTTP pada port 80.

Membuat Folder Web

Buat folder untuk menyimpan file website:

bash
sudo mkdir -p /var/www/html

Buat file index.html untuk pengujian:

bash
echo '<!DOCTYPE html>
<html>
<head><title>Halo dari Caddy</title></head>
<body>
<h1>Caddy Web Server Berhasil Berjalan!</h1>
</body>
</html>' | sudo tee /var/www/html/index.html

Ubah kepemilikan folder:

bash
sudo chown -R www-data:www-data /var/www/html

Restart Caddy

Setelah selesai mengonfigurasi, restart Caddy agar konfigurasi baru berlaku:

bash
sudo systemctl restart caddy

Periksa apakah tidak ada error:

bash
sudo journalctl -u caddy --no-pager -n 20

Firewall

Jika Anda menggunakan UFW firewall, buka port HTTP dan HTTPS:

bash
sudo apt install ufw -y
bash
sudo ufw allow http
bash
sudo ufw allow https
bash
sudo ufw enable

Pemecahan Masalah

Error: "Job for caddy.service failed"

Cek detail error:

bash
sudo journalctl -u caddy --no-pager -n 50

Pastikan tidak ada syntax error di Caddyfile. Validasi konfigurasi:

bash
sudo caddy validate --config /etc/caddy/Caddyfile

Error: "403 Forbidden"

Pastikan folder website memiliki hak akses yang benar:

bash
sudo chown -R www-data:www-data /var/www/html

Error: "502 Bad Gateway"

Jika menggunakan reverse proxy, pastikan aplikasi backend sudah berjalan dan port yang digunakan sudah sesuai.

Cek apakah aplikasi backend aktif:

bash
sudo systemctl status nama-aplikasi-anda

Sertifikat SSL Tidak Terbuat

Pastikan domain Anda sudah benar-benar terarah ke IP server melalui DNS. Periksa DNS:

bash
dig domain-anda.com +short

Port 80/443 Terblokir

Pastikan firewall tidak memblokir port 80 dan 443:

bash
sudo ufw status

Kesimpulan

Caddy Web Server adalah pilihan modern yang sangat tepat untuk Debian 13. Dengan fitur HTTPS otomatis, konfigurasi yang sederhana, dan performa tinggi, Caddy memudahkan Anda dalam mengelola web server tanpa perlu khawatir tentang sertifikat SSL. Caddy sangat cocok untuk hosting file statis, reverse proxy, maupun aplikasi berbasis PHP.

Artikel Terkait