about 1 month ago 05/26/2026 16:51
add Table of contents

Installare caddy con plugin cloudflare su Fedora

Il pacchetto caddy presente nei repository Fedora non ha il plugin cloudflare compilato. Per poter usare l'integrazione con cloudflare e let's encrypt per il rinnovo automatico dei certificati SSL è necessario compilare caddy con il plugin. Per compilare caddy in modo semplice è possibile usare xcaddy

Preparazione

Installare i pacchetti necessari con i comandi

sudo dnf install golang
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

Installare caddy

Per compilare ed installare caddy è possibile usare il seguente script.
Lo script installa l'eseguibile in /usr/local/bin/, il file di configurazione è /etc/caddy/Caddyfile

#!/bin/bash
export PATH="$PATH:$(go env GOPATH)/bin"
# Build caddy and copy the binary
xcaddy build --with github.com/caddy-dns/cloudflare
if [ $? -ne 0 ]; then
  echo "Failed to build caddy"
  exit 1
fi
sudo cp caddy /usr/local/bin/caddy
sudo chmod +x /usr/local/bin/caddy

sudo useradd -r -d /var/lib/caddy -s /usr/sbin/nologin caddy
sudo mkdir -p /etc/caddy
sudo mkdir -p /var/lib/caddy
sudo chown -R caddy:caddy /var/lib/caddy

# Create the service definition
sudo tee /etc/systemd/system/caddy.service > /dev/null <<EOF
[Unit]
Description=Caddy web server
Documentation=https://caddyserver.com/docs/
After=network.target

[Service]
Type=notify
User=caddy
Group=caddy
ExecStartPre=/usr/local/bin/caddy validate --config /etc/caddy/Caddyfile
ExecStart=/usr/local/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target
EOF

if [ ! -e /etc/caddy/Caddyfile ]; then
  sudo touch /etc/caddy/Caddyfile
  sudo chown root:root /etc/caddy/Caddyfile
  sudo chmod 644 /etc/caddy/Caddyfile
fi

# Start the service
sudo systemctl daemon-reload
sudo systemctl enable --now caddy

echo "The configuration file is /etc/caddy/Caddyfile"