Dalam dunia pengembangan web yang terus berkembang, memilih web server yang cepat, aman, dan mudah digunakan menjadi hal penting.
Salah satu pilihan modern yang mulai populer adalah Caddy, web server ini dikenal karena kemampuannya mengelola HTTPS secara otomatis tanpa konfigurasi rumit, sehingga sangat cocok untuk pemula maupun profesional.
Install Caddy
Install dependensi untuk menambahkan Caddy GPG key dan apt.
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
Menambahkan GPG Key Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Menambahkan Caddy repository
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
Update dan Install Web Server Caddy
sudo apt update sudo apt install caddy
Cek status service Caddy
sudo systemctl status caddy
Output service Caddy
caddy.service - Caddy
Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-04-30 21:08:10 CST; 5min ago
Docs: https://caddyserver.com/docs/
Main PID: 603854 (caddy)
Tasks: 7 (limit: 2263)
Memory: 9.6M (peak: 10.2M)
CPU: 76ms
CGroup: /system.slice/caddy.service
└─603854 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
Selanjutnya tahap pengujian web server caddy mengakses http://IP_SERVER di browser.

Deploy Halaman Statis
Membuat direktori untuk document root dengan nama domain geekslab.net :
sudo mkdir -p /var/www/DOMAIN
Membuat file index.html .
sudo nano /var/www/DOMAIN/index.html
Isikan source code dibawah ini kedalam file index.html
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Geeks Lab</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
text-align: center;
}
header {
background-color: #4CAF50;
color: white;
padding: 15px;
}
main {
padding: 20px;
}
footer {
background-color: #333;
color: white;
padding: 10px;
position: fixed;
bottom: 0;
width: 100%;
}
</style>
</head>
<body>
<header>
<h1>Halaman Geeks Lab</h1>
</header>
<main>
<h2>Selamat Datang</h2>
<p>Ini adalah contoh halaman Geeks Lab.</p>
</main>
<footer>
<p>© 2026</p>
</footer>
</body>
</html>
Konfigurasi Web Server Caddy
Tahap selanjutnya konfigurasi web server caddy.
cd /etc/caddy sudo nano /etc/caddy/Caddyfile
Ubah konfigurasi default web server Caddy, menggunakan konfigurasi dibawah.
DOMAIN {
tls admin@DOMAIN
root * /var/www/LOKASI_SOURCE_CODE_WEB
file_server
log {
output file /var/log/caddy/DOMAIN.log
}
}
www.DOMAIN {
redir https://DOMAIN{uri} permanent
}
Keterangan:
- DOMAIN : Ini adalah blok konfigurasi untuk domain utama. Semua request ke DOMAIN akan diproses di sini.
- tls admin@domain : Mengaktifkan HTTPS (SSL/TLS), Email admin@DOMAIN digunakan untuk Registrasi ke Let’s Encrypt, Notifikasi jika sertifikat bermasalah
- root * /var/www/DOMAIN : Menentukan folder website, Semua file (HTML, CSS, JS) diambil dari direktor /var/www/DOMAIN
- file_server : Mengaktifkan mode web statis, Caddy akan menampilkan file HTML melayani gambar, CSS, JS, dll. Tanpa ini, file tidak akan ditampilkan
- log : Mengaktifkan logging, artinya semua request disimpan ke file.
Memverifikasi konfigurasi Caddyfile apakah terdapat kesalahan.
cd /etc/caddy sudo caddy validate
Output validate caddy.
INFO using adjacent Caddyfile
INFO using config from file {"file": "Caddyfile"}
INFO adapted config to JSON {"adapter": "caddyfile"}
INFO http.auto_https server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {"server_name": "srv0", "https_port": 443}
INFO http.auto_https enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"}
INFO tls.cache.maintenance started background certificate maintenance {"cache": "0x27e156a17100"}
INFO http servers shutting down with eternal grace period
INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0x27e156a17100"}
Valid configuration
Restart service Caddy
sudo systemctl restart caddy
Terakhir, menguji web server + halaman statis dengan mengakses domain https://domain di browser. Pastikan muncul halaman statis dan sudah https.

