Install Web Server Caddy di Ubuntu
Install Web Server Caddy di Ubuntu

Install Web Server Caddy di Ubuntu 24.04 LTS

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.

Halaman Default Web Server Caddy
Halaman Default Web Server Caddy

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>&copy; 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.

Halaman Statis dengan HTTPS
Halaman Statis dengan HTTPS