Passer au contenu principal

Configuration Caddy avec certificat wildcard, reverse-proxy et DDNS

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

image-1620758616443.png

Ce qui va se passer
Ce qui donne en résumé !

image-1620758506752.png

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é !

image-1620758653222.png

Télécharger Caddy avec des modules supplémentaire

Caddy est extensible !
Installer caddy avec l'extension cloudflare depuis la page de téléchargement du site caddy

image-1620758857284.pngimage-1639911399209.png

Placer le binaire téléchargé 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
Compiler Caddy avec les modules supplémentaire

Télécharger et installer Go

https://go.dev/dl/go1.17.5.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.5.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 extension 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 admin@mail.frlucas.garre@gmail.com
        # Config globale ACME via DNS
        acme_dns cloudflare {Token-CloudFlare}<Acme_Cloudflare_Token>
        # Config HTTP3
        servers {
                protocol {
                        experimental_http3
                }
        }
        # Configuration DDNS via CloudFlare
        dynamic_dns {
                provider cloudflare <Acme_Cloudflare_Token>
                domains {
                        lgarre.fr mlh
                }
        }
}


# Utilisation d'un domaine Wildcard
*.domaine.lgarre.fr {

# BlocActivation configurationdes tlslogs 1.3pour tls1 an conforément à la loi Française
	log {
		protocolsoutput tls1.3file /var/log/caddy/access.json {
		roll_size 1gib
		roll_keep 5
		roll_keep_for 365d
	}
}

        # Compression des données encode( cause des problemes pour le moment)
        #encode zstd gzip

# BlocConfiguration desites déclarationweb

	des# sous-domainesUnraid
	à servir
@unraid {@hyperviseur host hyperviseur.domaine.lgarre.fr
	handle @hyperviseur {
		reverse_proxy 192.168.1.X:80
	}

	@bitwarden# {Gitea	
	@gitea host bitwarden.domaine.git.lgarre.fr
	}handle @gitea { 
		hostreverse_proxy git.domaine.fr192.168.1.X:80
	}
	@zabbix# S3
        @s3 host s3.lgarre.fr
        handle @s3 {
                reverse_proxy 192.168.1.X:80
        }

	# Minio
        @minio host zabbix.domaine.minio.lgarre.fr
        handle @minio {
                reverse_proxy 192.168.1.X:80
        }
   
	# Remotely
	@remotely host remote.lgarre.fr
	handle @remotely {
		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
	}

	# Wordpress
        @wordpress host dev-wp.lgarre.fr
        handle @wordpress {
		reverse_proxy 192.168.1.X:80
	}

	# Bookstack
	@bookstack host wiki.lgarre.fr
	handle @bookstack {
		hostreverse_proxy wiki.domaine.fr192.168.1.X:80
	}

	# RenvoieSi chaquel'hôte sous-domainene matchécorrespond verspas on envoie un serveur404
	webhandle par{
		reverse-proxyrespond reverse_proxy"Erreur @unraid404" 192.168.x.x:80404 reverse_proxy{
			@bitwardenclose
		192.168.x.x:8080}
	reverse_proxy @gitea 192.168.x.x:3000
reverse_proxy @zabbix 192.168.x.x:80
reverse_proxy @bookstack 192.168.x.x:80}
}