Introducere
Caddy este un program de server web în curs de dezvoltare, cu suport nativ pentru HTTP / 2 și HTTPS automat. Cu ușurință de utilizare și securitate în minte, Caddy poate fi utilizat pentru a implementa rapid un site compatibil HTTPS cu un singur fișier de configurare.
Cerințe preliminare
Pasul 1: Instalați cea mai recentă versiune stabilă de Caddy
Pe un sistem de operare Linux, Mac sau BSD, utilizați următoarea comandă pentru a instala cea mai recentă versiune stabilă specifică a sistemului Caddy:
curl https://getcaddy.com | bash
Când vi se solicită, introduceți parola sudo pentru a termina instalarea.
Binarul Caddy va fi instalat în /usr/local/bindirector. Folosiți următoarea comandă pentru a confirma:
which caddy
Rezultatul ar trebui să fie:
/usr/local/bin/caddy
În scopuri de securitate, NICIODATĂ nu executați binarul Caddy ca root. Pentru a oferi Caddy posibilitatea de a se lega de porturi privilegiate (de exemplu, 80, 443) ca utilizator non-root, trebuie să rulați setcapcomanda după cum urmează:
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
Creați un utilizator de sistem dedicat: caddy și un grup cu același nume pentru Caddy:
sudo useradd -r -d /var/www -M -s /sbin/nologin caddy
Notă : Utilizatorul caddycreat aici poate fi utilizat doar pentru a gestiona serviciul Caddy și nu poate fi folosit pentru logare.
Creați directorul de acasă /var/wwwpentru serverul web Caddy și directorul principal /var/www/example.compentru site-ul dvs.:
sudo mkdir -p /var/www/example.com
sudo chown -R caddy:caddy /var/www
Creați un director pentru stocarea certificatelor SSL:
sudo mkdir /etc/ssl/caddy
sudo chown -R caddy:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy
Creați un director dedicat pentru a stoca fișierul de configurare Caddy Caddyfile:
sudo mkdir /etc/caddy
sudo chown -R root:caddy /etc/caddy
Creați fișierul de configurare Caddy numit Caddyfile:
sudo touch /etc/caddy/Caddyfile
sudo chown caddy:caddy /etc/caddy/Caddyfile
sudo chmod 444 /etc/caddy/Caddyfile
cat <<EOF | sudo tee -a /etc/caddy/Caddyfile
example.com {
root /var/www/example.com
gzip
tls [email protected]
}
EOF
Notă : Fișierul creat mai sus este doar o configurație de bază pentru a rula un site web static. Puteți afla mai multe despre cum puteți scrie un Caddyfile aici .Caddyfile
Pentru a facilita operațiunile Caddy, puteți configura un systemdfișier de unitate pentru Caddy și apoi systemdsă utilizați pentru a gestiona Caddy.
Folosiți vieditorul pentru a crea systemdfișierul unității Caddy :
sudo vi /etc/systemd/system/caddy.service
Populați fișierul:
[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Restart=on-abnormal
; User and group the process will run as.
User=caddy
Group=caddy
; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy
; Always set "-root" to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s
; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.
LimitNOFILE=1048576
; Unmodified caddy is not expected to use more than that.
LimitNPROC=512
; Use private /tmp and /var/tmp, which are discarded after caddy stops.
PrivateTmp=true
; Use a minimal /dev
PrivateDevices=true
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full
; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there.
; This merely retains r/w access rights, it does not add any new. Must still be writable on the host!
ReadWriteDirectories=/etc/ssl/caddy
; The following additional security directives only work with systemd v229 or later.
; They further retrict privileges that can be gained by caddy. Uncomment if you like.
; Note that you may have to add capabilities required by any plugins in use.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Salvează și închide:
:wq!
Porniți serviciul Caddy și faceți-l să pornească automat la pornirea sistemului:
sudo systemctl daemon-reload
sudo systemctl start caddy.service
sudo systemctl enable caddy.service
Pasul 3: Modificați regulile firewallului
Pentru a permite vizitatorilor să acceseze site-ul dvs. Caddy, trebuie să deschideți porturile 80 și 443:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
Pasul 4: Creați o pagină de testare pentru site-ul dvs.
Utilizați următoarea comandă pentru a crea un fișier numit index.htmlîn directorul de origine al site-ului Caddy:
echo '<h1>Hello World!</h1>' | sudo tee /var/www/example.com/index.html
Reporniți serviciul Caddy pentru a încărca conținut nou:
sudo systemctl restart caddy.service
În cele din urmă, îndreptați-vă browserul web către http://example.comsau https://example.com. Ar trebui să vedeți mesajul Hello World!așa cum vă așteptați.