Configuration Caddy avec certificat wildcard, reverse-proxy et DDNS
Oui je sais c'est un service Américain
Nous utiliserons CloudFlare comme les plugins utilisés ne sont compatible que avec CloudFlare
Configuration des entrée DNS sur CloudFlare
Créer plusieurs enregistrement dans votre DNS.
Comment nommer ses entrées DNS
- Nommer l'entrée A avec par exemple le nom de code d'emplacement du serveur ( SXB pour Strasbourg MLH pour Mulhouse etc...)
- Un enregistrement A (IPv4) mlh pointant sur une IPv4 publique
- Si IPv6 est disponible un enregistrement AAAA (Ipv6) mlh pointant sur une IPv6 publique
- Une enregistrement CNAME (Alias) * pointant sur mlh.lgarre.fr
Création du jeton sur cloudflare
Sur son compte cloudflare créer le jeton avec les autorisations suivantes:
- Lecture de la Zone DNS
- Modification de la DNS
Ce qui va se passer
Ce qui donne en résumé !
N'allez pas trop vite !
à la fin le jeton est crée, il faut précieusement copier le jeton, ensuite il ne sera plus affiché !
Compiler Caddy avec les modules supplémentaire
Télécharger et installer Go
https://go.dev/dl/go1.19.2.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.2.linux-amd64.tar.gz
Ajouter go dans les variables d'environnement système
Ou ça ?
Emplacement du fichier: /etc/profile
Ajouter à la fin du fichier ceci:
export PATH=$PATH:/usr/local/go/bin
Téléchargez et installer xCaddy
# Installation de xCaddy depuis une source externe à Debian ( pas forcément conseillé de faire en Prod !!!)
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-xcaddy.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-xcaddy.list
apt update && apt install xcaddy
xcaddy build --with github.com/caddy-dns/cloudflare --with github.com/mholt/caddy-dynamicdns
Compiler caddy avec les extensions suivantes:
xcaddy build --with github.com/caddy-dns/cloudflare --with github.com/mholt/caddy-dynamicdns
Placer le binaire produit dans /usr/bin
# Arrêt du service caddy
service caddy stop
# Déplacement du nouveau binaire vers le répertoire des binaires
mv ./caddy /usr/bin
# Attribution des droits
chmod +x /usr/bin/caddy
# Lancement du service avec le nouveau binaire à jour
service caddy start
Voici ci dessous la configuration de caddy actuellement utilisé par votre serviteur
# Bloc configuration globale
{
# Desactivation de l'api de configuration
admin off
# Option TLS
email lucas.garre@gmail.com
# Config globale ACME via DNS
acme_dns cloudflare <Acme_Cloudflare_Token>
# Configuration DDNS via CloudFlare
dynamic_dns {
provider cloudflare <Acme_Cloudflare_Token>
domains {
lgarre.fr mlh
}
}
}
# Utilisation d'un domaine Wildcard
*.lgarre.fr {
# Activation des logs pour 1 an conforément à la loi Française
log {
output file /var/log/caddy/access.json {
roll_size 1gib
roll_keep 5
roll_keep_for 365d
}
}
# Compression des données ( cause des problemes pour le moment)
#encode zstd gzip
# Configuration sites web
# Unraid
@hyperviseur host hyperviseur.lgarre.fr
handle @hyperviseur {
reverse_proxy 192.168.1.X:80
}
# Gitea
@gitea host git.lgarre.fr
handle @gitea {
reverse_proxy 192.168.1.X:80
}
# S3
@s3 host s3.lgarre.fr
handle @s3 {
reverse_proxy 192.168.1.X:80
}
# Minio
@minio host minio.lgarre.fr
handle @minio {
reverse_proxy 192.168.1.X:80
}
# NextCloud
@nextcloud host cloud.lgarre.fr
handle @nextcloud {
reverse_proxy 192.168.1.X:80
redir /.well-known/carddav /remote.php/dav 301
redir /.well-known/caldav /remote.php/dav 301
}
# Bookstack
@bookstack host wiki.lgarre.fr
handle @bookstack {
reverse_proxy 192.168.1.X:80
}
# Si l'hôte ne correspond pas on envoie un 404
handle {
respond "Erreur 404" 404 {
close
}
}
}



