2024-11-08

Configurare Caddy su Linux: il web server che prova a fare il tuo lavoro al posto tuo

Una guida semplice e ironica per installare Caddy su Linux, servire una pagina HTML, usare un Caddyfile e lasciare che HTTPS automatico faccia la sua piccola magia silenziosa.

Configurare Caddy su Linux: il web server che prova a fare il tuo lavoro al posto tuo

Quindi vuoi configurare un web server.

Ottimo.

Questo significa che sei pronto a entrare nell’antico mondo di:

  • file di configurazione,
  • porte,
  • log,
  • permessi,
  • ed errori misteriosi che appaiono solo quando sei stanco.

Ma oggi non scegliamo la sofferenza come modello operativo principale.

Oggi usiamo Caddy.

Caddy è un web server moderno che può servire file statici, funzionare come reverse proxy e gestire HTTPS automaticamente quando usi un dominio reale.

In altre parole, fa molte delle cose noiose al posto tuo.

Non tutte, ovviamente.
Questo è ancora Linux.
Non sei completamente libero.

Ma ci sei molto vicino.

Perché Caddy?

Caddy è popolare perché rende sorprendentemente semplici molte attività comuni di un web server.

Con Caddy puoi:

  • servire un semplice sito statico,
  • fare da reverse proxy a un’applicazione,
  • usare una configurazione pulita e leggibile,
  • ottenere HTTPS automatico con domini reali,
  • ricaricare la configurazione senza trasformare la serata in un documentario drammatico.

Se Nginx a volte sembra leggere documenti legali scritti da un robot molto serio, Caddy sembra più tipo:

“Dimmi che sito vuoi, e proverò a non rendere tutto strano.”

Molto rinfrescante.


Installare Caddy su Linux

Installiamo Caddy su Arch Linux, Fedora e Ubuntu.

Scegli la tua distribuzione e segui i comandi.

Nessuna cerimonia spirituale richiesta.

Probabilmente.


Arch Linux: la strada coraggiosa

Su Arch Linux, l’installazione è meravigliosamente semplice.

Esegui:

sudo pacman -Syu caddy

Tutto qui.

Gli utenti Arch amano quando le cose sono semplici, perché così hanno più tempo per spiegare perché usano Arch.

Controlla che Caddy sia installato:

caddy version

Se vedi un numero di versione, Caddy è pronto.

Il tuo terminale ha approvato l’operazione.

Per ora.


Fedora: pulito, moderno e leggermente serio

Su Fedora, installa Caddy con:

sudo dnf install caddy

Poi controlla la versione:

caddy version

Fedora di solito dà l’impressione di essere lucido e professionale, come una workstation che beve espresso e legge la documentazione prima di colazione.

Caddy ci sta benissimo.


Ubuntu: qualche passo in più, perché la tradizione

Su Ubuntu, prima aggiungiamo il repository ufficiale di Caddy.

Installa i pacchetti necessari:

sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

Aggiungi la chiave GPG di Caddy:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

Aggiungi il repository di Caddy:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Rendi leggibili la chiave e la lista del repository:

sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

Aggiorna la lista dei pacchetti e installa Caddy:

sudo apt update
sudo apt install caddy

Ora controlla la versione:

caddy version

Se risponde, congratulazioni.

Ubuntu e Caddy ora si parlano.

Che è già più comunicazione di quella che hanno alcuni sistemi in produzione.


Creare un semplice sito web

Prima di configurare qualcosa di serio, creiamo una piccola pagina HTML.

Niente di drammatico.

Solo abbastanza per dimostrare che il server è vivo e non ci sta giudicando in silenzio.

Crea una cartella:

mkdir my_website
cd my_website

Crea un file index.html:

nano index.html

Aggiungi questo HTML:

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Ciao da Caddy</title>
</head>
<body>
  <h1>Ciao, mondo!</h1>
  <p>Questo semplice sito sta girando tramite Caddy.</p>
</body>
</html>

Salva il file.

Ora hai un sito web.

Piccolo, sì.

Ma anche Roma è iniziata con una pietra messa in un punto probabilmente sospetto.


Testare Caddy senza Caddyfile

Ora serviamo direttamente questa cartella.

Assicurati di essere dentro la cartella my_website:

pwd

Poi esegui:

caddy file-server --listen :8080

Apri il browser e vai su:

http://localhost:8080

Se vedi la tua pagina, Caddy funziona.

Questo è quel bellissimo momento in cui il browser mostra qualcosa e tu ti senti brevemente un amministratore di sistema.

Goditelo.

Potrebbe non durare per sempre.


Creare un Caddyfile

Eseguire Caddy dalla riga di comando è utile per i test.

Ma per una configurazione reale, di solito vuoi un Caddyfile.

Il Caddyfile è il file di configurazione di Caddy.

Dice a Caddy cosa servire, da dove servirlo e quanto drammatica diventerà la serata.

Dentro la cartella my_website, crea un file chiamato Caddyfile:

nano Caddyfile

Aggiungi questo:

localhost:8080 {
  root * .
  file_server
}

Questo dice a Caddy:

  • ascolta su localhost:8080,
  • usa la cartella attuale come root del sito,
  • servi i file da questa cartella.

Ora esegui Caddy usando il Caddyfile:

caddy run

Apri:

http://localhost:8080

Se la tua pagina appare di nuovo, funziona tutto.

Caddy ha letto le tue istruzioni e si è comportato come un adulto responsabile.

Raro, ma bellissimo.


Formattare il Caddyfile

Caddy può formattare da solo il suo file di configurazione.

È utile, perché i computer spesso formattano meglio degli esseri umani che cercano di configurare server dopo cena.

Esegui:

caddy fmt --overwrite Caddyfile

Questo sistemerà la formattazione.

Un Caddyfile ordinato è un Caddyfile felice.

O almeno meno sospetto.


Validare la configurazione

Prima di usare seriamente una configurazione, validala:

caddy validate --config Caddyfile

Se Caddy dice che la configurazione è valida, bene.

Se si lamenta, leggi attentamente l’errore.

Gli errori di Caddy di solito sono più educati di quelli di molti altri web server.

Questo non significa che siano sempre piacevoli.

Ma almeno ci provano.


Usare un dominio reale con HTTPS

Qui Caddy diventa davvero interessante.

Se hai un dominio reale che punta al tuo server, puoi scrivere qualcosa del genere:

example.com {
  root * /var/www/example.com
  file_server
}

Con un dominio reale, Caddy può gestire automaticamente i certificati HTTPS.

Questo significa niente lotte manuali con i certificati.

Niente rituali lunghi con file casuali.

Niente battaglia emotiva con il rinnovo dei certificati all’1:13 di notte.

Solo una configurazione pulita e HTTPS automatico.

Quasi troppo bello per non essere sospetto.


Una configurazione più realistica per un sito statico

Su un server reale, probabilmente non vuoi tenere il sito dentro una cartella casuale nella tua home.

Un posto comune per i siti web è /var/www.

Crea una cartella per il sito:

sudo mkdir -p /var/www/example.com

Copia lì il tuo file HTML:

sudo cp index.html /var/www/example.com/index.html

Ora modifica il Caddyfile di sistema:

sudo nano /etc/caddy/Caddyfile

Usa questa configurazione:

example.com {
  root * /var/www/example.com
  file_server
}

Sostituisci example.com con il tuo vero dominio.

Poi ricarica Caddy:

sudo systemctl reload caddy

Se per qualche motivo il reload non funziona, riavvialo:

sudo systemctl restart caddy

Il reload è più delicato.

Il restart è il metodo “spegni e riaccendi”.

Entrambi hanno il loro posto nella sacra storia dell’informatica.


Eseguire Caddy come servizio di sistema

Se hai installato Caddy tramite il package manager della tua distribuzione, puoi eseguirlo con systemd.

Abilita Caddy in modo che parta automaticamente all’avvio:

sudo systemctl enable caddy

Avvialo ora:

sudo systemctl start caddy

Oppure fai entrambe le cose insieme:

sudo systemctl enable --now caddy

Controlla lo stato:

sudo systemctl status caddy

Se vedi:

active (running)

Caddy è vivo e sta lavorando.

Il tuo server ora ha un piccolo dipendente che non dorme mai.

Trattalo meglio di come molte aziende trattano gli stagisti.


Ricaricare Caddy dopo le modifiche

Quando modifichi /etc/caddy/Caddyfile, ricarica Caddy:

sudo systemctl reload caddy

Questo applica la nuova configurazione senza fermare completamente il servizio.

Prima di ricaricare, puoi anche validare il Caddyfile di sistema:

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

È una buona abitudine.

Non entusiasmante.

Ma molte buone abitudini sono noiose.

Ed è proprio per questo che ci salvano da sofferenze future.


Controllare i log di Caddy

Se qualcosa non funziona, controlla i log:

sudo journalctl -u caddy -f

Questo mostra i log di Caddy in tempo reale.

È come ascoltare il tuo server sussurrare:

“Ecco esattamente perché mi rifiuto di collaborare.”

A volte i log sono utili.

A volte sono educativi.

A volte sembrano un attacco personale scritto in linguaggio tecnico.

Comunque leggili.


Comandi Caddy più utili

Ecco alcuni comandi comodi.

Controllare la versione di Caddy

caddy version

Avviare Caddy nella cartella attuale

caddy file-server --listen :8080

Avviare Caddy con un Caddyfile

caddy run

Formattare un Caddyfile

caddy fmt --overwrite Caddyfile

Validare un Caddyfile

caddy validate --config Caddyfile

Riavviare il servizio di sistema

sudo systemctl restart caddy

Ricaricare il servizio di sistema

sudo systemctl reload caddy

Vedere i log

sudo journalctl -u caddy -f

Una piccola nota sulle porte

Per i test locali, la porta 8080 è comoda.

Di solito non richiede permessi speciali e non litiga con altri web server.

Per i siti reali, normalmente si usano:

  • porta 80 per HTTP,
  • porta 443 per HTTPS.

Se un altro servizio sta già usando queste porte, Caddy potrebbe rifiutarsi di partire.

Per controllare cosa è in ascolto, esegui:

sudo ss -tulpn

Poi cerca :80 o :443.

Se trovi un altro web server lì, congratulazioni.

Ora hai una piccola discussione da risolvere sul server.


Considerazioni finali

Ecco fatto.

Hai installato Caddy, creato una semplice pagina HTML, servito il sito in locale, scritto un Caddyfile e imparato a eseguire Caddy come servizio di sistema.

Non male.

Caddy è uno di quegli strumenti che rendono la configurazione di un server meno simile a magia antica e più simile a una conversazione con un assistente molto pratico.

Non costruirà il sito al posto tuo.

Non sistemerà il tuo CSS.

Non spiegherà perché il tuo JavaScript funziona solo dopo aver aggiornato la pagina due volte.

Però può servire il tuo sito, gestire HTTPS e restare tranquillamente in esecuzione in background.

E sinceramente, è già tanto.

Goditi il tuo nuovo web server.

E ricorda:

La migliore configurazione server è quella che riesci ancora a capire tre mesi dopo.