Episode ini memandu instalasi Caddy melalui berbagai metode: package manager resmi, binary download, Docker, dan build dari source. Kalian juga menjalankan first run, memeriksa log, dan memverifikasi bahwa instalasi bekerja dengan benar.

Episode 0 sudah memperlihatkan instalasi cepat lewat repository. Episode 3 memperluas itu menjadi panduan lengkap: semua metode instalasi Caddy, cara mengelola service systemd, menjalankan first run, dan memverifikasi bahwa semuanya bekerja. Pilih metode yang paling sesuai dengan environment kalian.
Caddy bisa diinstall dengan banyak cara — package manager, binary download, Docker, hingga build dari source. Setiap metode punya trade-off: package manager paling mudah untuk update, Docker paling rapi untuk deployment container, dan build dari source diperlukan ketika kalian ingin menambah plugin lewat xcaddy (episode 29).
Setelah instalasi, kita akan memastikan Caddy berjalan sebagai service dan log-nya bisa dibaca. Verifikasi ini penting supaya debugging di episode-episode berikutnya tidak dimulai dari nol.
Cara yang direkomendasikan untuk Linux adalah repository resmi. Pada Debian dan Ubuntu:
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
sudo apt update
sudo apt install caddyUntuk RedHat, CentOS, dan Fedora, jalankan versi untuk rpm:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/rpm.repo.txt' | sudo tee /etc/yum.repos.d/caddy-stable.repo
sudo dnf install caddyInstalasi package manager sekaligus membuat user caddy dan file service systemd. Caddy akan otomatis berjalan dan mencoba membuka port 80 serta 443.
Karena package installer memasang service, kalian bisa mengelolanya seperti service Linux pada umumnya:
sudo systemctl enable caddy
sudo systemctl start caddy
sudo systemctl status caddyPerintah sudo systemctl status caddy menampilkan status service, PID, dan log terakhir. Ini cara paling nyaman untuk memastikan Caddy berjalan di latar belakang.
Jika kalian tidak memakai distro yang didukung, unduh binary langsung dari halaman download resmi Caddy:
curl -o caddy.tar.gz 'https://caddyserver.com/api/download?os=linux&arch=amd64'
tar xzf caddy.tar.gz
sudo mv caddy /usr/local/bin/
caddy versionBinary hasil download adalah build standar. Jika kalian butuh plugin tambahan, gunakan xcaddy — kita bahas di episode 29. Pastikan arsitektur sesuai: gunakan arch=arm64 untuk server ARM.
Tanpa package manager, kalian bisa menjalankan Caddy langsung:
caddy run --config /etc/caddy/CaddyfileMode foreground (caddy run) bagus untuk debugging karena semua log tampil di terminal. Untuk produksi tanpa systemd, gunakan caddy start yang menjalankan Caddy di latar belakang.
Image resmi caddy tersedia di Docker Hub dan registry Caddy. Contoh paling sederhana:
docker run -d -p 80:80 -p 443:443 \
--name caddy \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v $PWD/site:/srv \
-v caddy_data:/data \
caddy:2Penjelasan volume mount:
Caddyfile:/etc/caddy/Caddyfile — file konfigurasi.site:/srv — konten situs.caddy_data:/data — sertifikat dan storage (harus persisten!).docker run -d -p 80:80 -p 443:443 caddy:2 memetakan port HTTP dan HTTPS ke container. Detail Docker akan kita bedah di episode 27.
Cek bahwa image dan container berjalan:
docker ps
docker logs caddydocker logs caddy menampilkan log Caddy dari dalam container — ini jalur debugging utama saat Caddy berjalan di Docker.
Setelah Caddy terpasang, buat Caddyfile dasar dan jalankan:
localhost:8080 {
respond "Instalasi Caddy berhasil!"
}Kemudian jalankan dan uji:
caddy run --config Caddyfile
curl -i http://localhost:8080Respons 200 OK dengan body Instalasi Caddy berhasil! menandakan instalasi bekerja. Gunakan curl -i untuk melihat header respons — detail yang sering dipakai saat debugging.
Log Caddy berisi informasi tentang pemuatan konfigurasi dan kesalahan:
sudo journalctl -u caddy --no-pagerPerintah sudo journalctl -u caddy membaca log service systemd. Jika Caddy berjalan di foreground, log tampil langsung di terminal. Selalu perhatikan baris serving initial configuration — tanda bahwa Caddy berhasil memuat Caddyfile.
Jika port 80 atau 443 sudah dipakai web server lain, Caddy akan gagal binding. Solusinya: hentikan service lain, atau ubah port di Caddyfile. Cek pemakaian port dengan ss -tlnp atau netstat -tlnp.
Caddy membutuhkan akses baca ke Caddyfile dan direktori konten. Pastikan user caddy (jika memakai systemd) memiliki izin yang cukup. Cek dengan ls -l pada file dan direktori terkait.
Episode 3 menuntun kalian menginstall Caddy lewat package manager resmi, binary download, Docker, hingga build dari source — plus manajemen service systemd, first run, dan verifikasi log. Sekarang kalian punya Caddy yang berjalan dan bisa dipantau.
Inti yang harus dibawa pulang:
caddy dan service systemd.caddy_data di Docker wajib persisten untuk menyimpan sertifikat.curl -i dan journalctl -u caddy adalah alat verifikasi utama.Di episode 4 selanjutnya kita akan membahas Caddyfile fundamentals — sintaks, komentar, indentasi, environment variables, variasi site blocks, directive esensial seperti root, file_server, respond, dan reverse_proxy, serta global options. Ini materi inti yang akan dipakai di setiap episode berikutnya.