YannStatic
  • Etiquettes
  • Liens
  • Aide

Caddy serveur

  • serveur
  •  22 déc.  2023 30 déc.  2023
Afficher/cacher Sommaire

Caddy est un serveur web écrit en Go, open source et disponible avec HTTPS automatiquement

Caddy

Installation

Guide d’utilisation d’un serveur Caddy sous Linux
https://caddyserver.com/docs/running#using-the-service

Prérequis

sudo apt update
sudo apt install libcap2-bin libnss3-tools wget tar

suivre ces instructions pour une installation “manuelle”

Exigences :

  • binaire Caddy que vous avez téléchargé ou construit à partir des sources.
  • systemctl –version 232 ou plus récent
  • privilèges sudo

Télécharger le binaire linux amd64

Déplacez le binaire caddy dans votre $PATH, par exemple :

sudo mv caddy_linux_amd64 /usr/local/bin/caddy
sudo chmod +x /usr/local/bin/caddy

Testez : caddy version
v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=

Configuration

Les serveurs Web tels que Caddy sont généralement exposés sur l’Internet, lancer tout logiciel qui est exposé en tant qu’utilisateur restreint.

configurer un utilisateur restreint nommé caddy avec le répertoire personnel de /etc/caddy en exécutant la commande suivante

sudo useradd --shell /bin/false --home-dir /etc/caddy --system caddy

Caddy stocke la configuration dans le répertoire .config, et les certificats dans le répertoire .local.
Exécutez la commande suivante pour créer ces deux répertoires

sudo mkdir -p /etc/caddy/.config /etc/caddy/.local

répertoire lié à Caddy pour stocker les logs

sudo mkdir -p /var/log/caddy

Modifier la propriété des répertoires au profit de l’utilisateur caddy

sudo chown -R caddy: /etc/caddy /var/log/caddy

Lorsque vous exécutez un logiciel en tant qu’utilisateur non root, Linux interdit à ces processus d’écouter des numéros de port inférieurs à 1024. Pour contourner cette restriction et exécuter Caddy en toute sécurité en tant qu’utilisateur non root, ajoutez la capacité cap_net_bind_service au binaire caddy :

sudo setcap cap_net_bind_service+ep /usr/local/bin/caddy

Caddy service

configurer Caddy comme un service du système qui démarrera automatiquement

Créer le fichier

sudo nano /etc/systemd/system/caddy.service
[Unit]
Description=Caddy web server
After=network-online.target

[Service]
User=caddy
Group=caddy
Type=exec
WorkingDirectory=/var/caddy/html

ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
ExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile
ExecStop=/usr/local/bin/caddy stop

LimitNOFILE=1048576
LimitNPROC=512

PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
ReadWritePaths=/etc/caddy/.local /etc/caddy/.config /var/log

CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Noter , répertoire par défaut : /var/caddy/html
Création : sudo mkdir -p /var/caddy/html

Site proxy

Créer un proxy avec un accès protégé

sudo nano /etc/caddy/Caddyfile
xoyaz.xyz {
    reverse_proxy 127.0.0.1:8100
}

Démarrer et activer le service

sudo systemctl daemon-reload
sudo systemctl enable caddy --now

Accès https://xoyaz.xyz

Accès avec authentification

Entrez ceci dans le terminal pour générer un hachage du mot de passe (par défaut, l’algorithme de hachage bcrypt est utilisé).

caddy hash-password

Saisir le mot de passe à hacher, qui va donner un résultat , exemple
JDJhJDE0JElab2ZPM25zdU40bE5SSURlTHd3OHVBeVJvYTlMN3dMOEFMdFVCRzNYS1l5ODl6TlVyQllH

Vous trouverez ci-dessous un modèle qu’il vous suffit de remplacer par le nom d’utilisateur et le code d’accès, puis de le placer dans votre fichier Caddy /etc/caddy/Caddyfile

basicauth * {
	bob JDJhJDE0JElab2ZPM25zdU40bE5SSURlTHd3OHVBeVJvYTlMN3dMOEFMdFVCRzNYS1l5ODl6TlVyQllH
}

Si vous souhaitez sécuriser un certain chemin, la syntaxe suivante peut être utilisée

basicauth /homework/* {
	bob JDJhJDE0JElab2ZPM25zdU40bE5SSURlTHd3OHVBeVJvYTlMN3dMOEFMdFVCRzNYS1l5ODl6TlVyQllH
}

Recharger le caddy

caddy reload
# OU
sudo systemctl reload caddy

Activer PHP dans Caddy

En mode su

Tout d’abord, installez PHP et les autres extensions nécessaires

apt-get install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-common php-xml php8.2-xmlrpc -y

Après avoir installé PHP, éditez le fichier de configuration PHP-FPM et changez l’utilisateur et le groupe par défaut avec caddy

nano /etc/php/8.2/fpm/pool.d/www.conf

Recherchez et remplacez le nom d’utilisateur et de groupe de www-data par caddy :

user = caddy
group = caddy
listen.owner = caddy
listen.group = caddy

Enregistrez et fermez le fichier puis redémarrez le service PHP-FPM pour appliquer les modifications

systemctl restart php8.2-fpm

Créer un fichier de configuration d’hôte virtuel Caddy dans /etc/caddy/Caddyfile

nano /etc/caddy/Caddyfile

Ajouter les lignes suivantes :

php.xoyaz.xyz {
    root * /var/lib/caddy/
    encode gzip zstd
    php_fastcgi unix//run/php/php8.2-fpm.sock
}

Redémarrer le service Caddy pour appliquer les modifications :

systemctl restart caddy

Ensuite, créer un fichier PHP de test pour Caddy

nano /var/lib/caddy/info.php

Ajoutez les lignes suivantes :

<?php phpinfo(); ?>

Tester le lien https://php.xoyaz.xyz/info.php

Directive file_server

Directive file_server

La directive index est lié à file_server

ouestline.xyz {
	root * /mnt/sambashare/alpine
	file_server {
	 index index.html index.php
        }
}

Journalisation des requêtes

Par défaut, Caddy ne journalise pas les demandes. Toutefois, vous pouvez configurer Caddy pour qu’il journalise les requêtes grâce à la directive “log”. Par défaut, Caddy stocke ses journaux sous forme de lignes de JSON, bien que d’autres formats soient également disponibles.

Comme nous l’avons vu dans les sections précédentes, le fichier Caddy est composé de sections dans lesquelles vous ajoutez la configuration pour chaque site Web. Pour configurer la journalisation, modifiez le fichier Caddy de sorte que chaque bloc ressemble à ceci :

<YOUR DOMAIN NAME HERE, OR SPECIFY "http://"> {
    encode gzip
    file_server
    log {
        output file /var/log/caddy/access.log
    }
}

Une fois que vous avez enregistré le fichier Caddy, rechargez la configuration avec :

sudo systemctl reload caddy  # avec systemd
sudo service caddy reload

Maintenant, visitez le site Web dans un navigateur, afin de générer quelques entrées de journal. Exécutez la commande suivante pour afficher les journaux :

sudo cat /var/log/caddy/access.log

Modèles Caddyfile courants

Cette page présente quelques configurations Caddyfile complètes et minimales pour les cas d’utilisation courants. Ceux-ci peuvent être des points de départ utiles pour vos propres documents Caddyfile.

Ce ne sont pas des solutions instantanées ; vous devrez personnaliser votre nom de domaine, vos ports/sockets, vos chemins de répertoire, etc. Ils sont destinés à illustrer certains des modèles de configuration les plus courants.

Common Caddyfile Patterns

PRÉCÉDENTAlpine Linux dans un environnement virtuel KVM Lenovo
SUIVANTServeur de messagerie IMAP SMTP
Recherche