Caddy
Les groupes
su -adduser jean sudoadduser jean admadduser jean www-dataadduser www-data jean- redémarrer
remove apache et ancien php
su - apt purge apache2 apt list --installed | grep php apt-get purge 'php7.*'
Voir la version de php installable
apt search php
Adapter
Installer php 8.3
https://www.cloudbooklet.com/how-to-install-or-upgrade-php-8-1-on-debian/
https://tecadmin.net/how-to-install-php-on-debian-11/
https://www.howtoforge.com/how-to-install-php-8-on-debian-11/
apt -y install lsb-release apt-transport-https ca-certificates wget
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
apt update
apt upgrade
apt install php8.3
php -v
apt install php8.3-fpm
service php8.3-fpm start
apt install php8.3-{bcmath,fpm,xml,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi}
et vérifier les modules chargés:
php --modules
Pour vérifier:
ps aux | grep php-fpm ps aux | grep php
Installer le binaire de caddy
https://ettayeb.fr/guide-dutilisation-dun-serveur-caddy-sous-linux/
https://www.digitalocean.com/community/tutorials/how-to-host-a-website-with-caddy-on-ubuntu-18-04-fr
https://www.howtoforge.com/tutorial/ubuntu-caddy-web-server-installation
https://caddyserver.com/docs/caddyfile/options
Déterminer mon architecture : uname -m
Aller sur https://github.com/caddyserver/caddy/releases
et télécharger le dernier .tar.gz de mon architecture avec le navigateur
ou avec wget https://github.com/caddyserver/caddy/releases/download/v2.8.4/caddy_2.8.4_linux_amd64.tar.gz
Extraire l'archive : sudo tar -C /usr/local/bin/ -xf caddy_2.8.4_linux_amd64.tar.gz caddy
Lancer caddy la page d'aide s'affichera, ensuite
- Créer Caddyfile :
mkdir /etc/caddy; micro /etc/caddy/Caddyfile - Tenir compte de la version de php installée (8.3)
setcap pour lancer caddy sans sudo
Caddy essaie d'écouter sur le port 443, qui est un port privilégié (inférieur à 1024). Sous Linux, seuls les processus exécutés en tant que root ou avec les bonnes capacités peuvent écouter sur ces ports.
Pour lui accorder la capacité CAP_NET_BIND_SERVICE, ce qui lui permet d'écouter sur les ports inférieurs à 1024 sans être root :
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
C'est une modification permanente tant que l'on ne met pas à jour ou ne remplace pas le binaire de Caddy.
Toutefois, si l'on met à jour Caddy, la permission sera probablement supprimée, et il faudra refaire la commande.
Pour vérifier si la permission est toujours active après une mise à jour:
getcap /usr/local/bin/caddy
Si la commande ne renvoie rien, cela signifie que la capacité a été supprimée et qu'il faut la réappliquer.
Utiliser caddy
https://ettayeb.fr/guide-dutilisation-dun-serveur-caddy-sous-linux/
caddy help caddy start --config /etc/caddy/Caddyfile
SSL
https://caddy.community/t/ssl-configuration-in-caddy/15535
J'utilise mes propres certificats (mkcert) ou des certificats certifiés par un CA
Pour ajouter les certificats: tls cert key
Si le certificat est certifié par un CA, le certificat est alors un bundle fait par
cat server.crt bundle.pem > fullchain.pem
cat certificate.crt ca_bundle.crt > fullchain.pem
error log pour php-fpm
Editer (décommenter dans) le fichier www.conf (situé à /etc/php/8.3/fpm/pool.d/www.conf):
catch_workers_output = yesphp_admin_value[error_log] = /var/log/fpm-php.www.logphp_admin_flag[log_errors] = on
ensuite
sudo touch /var/log/fpm-php.www.log- sudo
chown www-data:www-data /var/log/fpm-php.www.log
et redémarrerr php-fpm.
php.ini (pour php-cli)
On peut voir l'emplacement de php.ini
- avec phpinfo
php -i | grep php.ini
Editer php.ini
log_errors = on error_reporting = E_All error_log = /path/filename # OU BIEN error_log = syslog display_errors
Coment bloquer l'accès à certains répertoires et fichiers dans Caddy v2
@blocked {
path *.txt *.md *.mdown /dir1/* /dir2/*
}
respond @blocked 403
Vous pouver choisir rewrite ou redir ou respond pour bloquer ces requêtes.
Comment redémarrerr php-fpm?
https://serverfault.com/questions/189940/how-do-you-restart-php-fpm Note: prepend sudo si pas root
Avec init.d
/etc/init.d/php-fpm restart # typical /etc/init.d/php5-fpm restart # debian-style /etc/init.d/php8.3-fpm restart # debian-style PHP 8
Avec service
service php-fpm restart # typical service php5-fpm restart # debian-style service php8.3-fpm restart # debian-style PHP 8
Avec restart
restart php8.3-fpm # typical (ubuntu is debian-based) PHP 8 restart php5-fpm # typical (ubuntu is debian-based) restart php-fpm # uncommon
Avec systemd
systemctl restart php-fpm.service # typical systemctl restart php5-fpm.service # uncommon systemctl restart php8.3-fpm.service # uncommon PHP 8
Ou avec l'équivalent pour votre système.
Caddyfile
Voir mes fichiers sur mes serveurs
caddy en tant que service
- Assurez-vous de créer un utilisateur et un groupe caddy :
sudo useradd -r -d /var/lib/caddy -s /sbin/nologin caddy
- Ajouter un fichier
/etc/systemd/system/caddy.serviceet y mettre[Unit] Description=Caddy web server Documentation=https://caddyserver.com/docs/ After=network.target network-online.target Requires=network-online.target [Service] Type=notify User=caddy Group=caddy ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile TimeoutStopSec=5s LimitNOFILE=1048576 LimitNPROC=512 PrivateTmp=true ProtectSystem=full AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
- Après avoir créé le fichier service:
sudo systemctl daemon-reload sudo systemctl enable caddy sudo systemctl start caddy
Répertoires relatifs à caddy
Sur ilu.be (serveur) :
sudo find / -type d -name "*caddy*"
/root/.local/share/caddy /root/.config/caddy /var/log/caddy /etc/caddy
Le répertoire qui contient les certificats letsencrypt est :
/root/.local/share/caddy/certificates/
Sur PC101 :
sudo find / -type d -name "*caddy*"
/root/.config/caddy /root/.local/share/caddy /root/.local/share/caddy/acme/acme.zerossl.com-v2-dv90/users/caddy@zerossl.com /usr/share/caddy /etc/caddy /home/jean/.config/caddy /home/jean/.local/share/caddy /var/log/caddy
Pour bien analyser la structure faire :
sudo find / | grep caddy | less et chercher caddy
reverse-proxy
Si deno, ou python, ou php, sert des pages par exemple sur le port 6969, on peut utiliser un reverse-proxy dans caddy pour associer ces pages à un domaine.
Le caddyFile:
<domain> {
reverse_proxy localhost:6969
}
setup Caddy pour accès seulement au LAN local
site.whatever.com {
@whitelist {
remote_ip 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 127.0.0.1/8
}
handle @whitelist {
reverse_proxy 192.168.1.39
}
respond 403
}