6.6 KiB
Homelab Docker Server
Information de version
Les secrets seront mis en place progressivement, en prenant en compte les compatibilités de chaque service.
Ce projet configure un serveur Homelab Docker avec une configuration simple à l'avenir, d'autres services
Inspiration du projet et plus de détails
CrowdSec
Inspiration architecture du projet et documentation pour authentik :
- GitHub - hhf
- Merci à @hhf
Configuration Initiale
-
Renommer le fichier
.env.example
en.env
. -
Renseigner les variables dans le fichier
.env
:DOMAINNAME
: Nom de domaine.TZ
: Fuseau horaire.- Créer un compte sur CrowdSec (gratuit).
- Créer un secret avec la clé API générée sur Cloudflare pour Let's Encrypt. Voir le tutoriel ici.
- Ajouter la clé API Cloudflare dans
/secret/cf_dns_api_token
.
-
Génerer les secrets pour authentik :
Secrets à créer
Les secrets suivants (définis dans le fichier compose.yaml
de base) doivent être créés :
Je vous recommande de créer les secrets avec la syntaxe suivante :
echo -n 'VALEUR_CHANGEME' > NOM_DU_SECRET_CHANGEME
Consultez les informations sur Traefik à l'adresse suivante : https://doc.traefik.io/traefik/https/acme/#providers. Informations spécifiques à Cloudflare : https://go-acme.github.io/lego/dns/cloudflare/
cf_email
cf_dns_api_token
echo -n 'CHANGEME@gmail.com' > cf_email echo -n 'CHANGEME-LONGAPI-CHANGEME' > cf_dns_api_token
Spécifique à Authentik (https://docs.goauthentik.io/docs/installation/docker-compose#preparation)
authentik_postgresql_db
authentik_postgresql_user
authentik_postgresql_password
authentik_secret_key
echo -n 'authentik_db' > authentik_postgresql_db echo -n 'authentik_user' > authentik_postgresql_user openssl rand 36 | base64 -w 0 > authentik_postgresql_password openssl rand 60 | base64 -w 0 > authentik_secret_key
Créez un compte Gmail et saisissez les informations :
gmail_smtp_username
gmail_smtp_password
echo -n 'CHANGEME@gmail.com' > gmail_smtp_username echo -n 'CHANGEME' > gmail_smtp_password
Allez sur https://dev.maxmind.com/geoip/geolite2-free-geolocation-data pour générer une clé de licence gratuite (https://www.maxmind.com/en/accounts/current/license-key) à utiliser.
geoip_account_id
geoip_license_key
echo -n 'CHANGEME' > geoip_account_id echo -n 'CHANGEME' > geoip_license_key
-
Configuration Let's Encrypt dans
/appdata/traefik/config/traefik.yaml
:Developpement mode
- Pendant l'installation, assurez-vous que la ligne
caServer: https://acme-v02.api.letsencrypt.org/directory
est commentée. - remplacez
CHANGEME
par votre email
Passage en production :
- Supprimez le fichier
acme.json
dans/appdata/traefik/data/
. - Décommentez la ligne
caServer: https://acme-v02.api.letsencrypt.org/directory
dans/appdata/traefik/config/traefik.yaml
. - Relancez le projet pour obtenir un certificat SSL en production.
- Pendant l'installation, assurez-vous que la ligne
Lancement du Projet
-
Démarrer le projet :
Allez dans le dossier
/my-compose/
où se trouve le fichierdocker-compose.yaml
, puis exécutez la commande :docker compose up -d
-
Vérification des services :
Pour vérifier que tous les services sont actifs, exécutez :
docker ps
Astuce : Pour lire les logs d'un conteneur spécifique, utilisez :
docker logs 'nom_du_conteneur'
-
Ajouter le moteur de sécurité sur CrowdSec :
- Allez sur CrowdSec, cliquez sur "Add Security Engine", et copiez le token affiché après
sudo
.
- Allez sur CrowdSec, cliquez sur "Add Security Engine", et copiez le token affiché après
-
Exécuter la commande suivante dans le terminal :
docker exec crowdsec cscli console enroll -e context 'token récupéré'
-
Retourner sur le site CrowdSec :
- Dans la section "Engines", acceptez l'invitation. Vous devriez voir un élément actif apparaître.
-
Créer le bouncer Traefik :
Pour que CrowdSec puisse lire les logs de Traefik, exécutez :
docker exec crowdsec cscli bouncers add traefik-bouncer
-
Ajouter la clé API :
- Copiez la clé API générée et définissez la variable
CROWDSEC_TRAEFIK_BOUNCER_LAPI_KEY
dans le fichier.env
situé dans/my-compose/.env
.
- Copiez la clé API générée et définissez la variable
-
Relancer le projet :
docker compose up -d --force-recreate
-
Attendre quelques minutes pour l'activation du service CrowdSec :
- Après quelques minutes, vous devriez voir la page active sur l'interface web de CrowdSec.
Informations supplémentaires
-
Logs : Pour lire les logs de démarrage de CrowdSec ou Traefik, utilisez les commandes suivantes :
docker logs --tail 100 -f traefik
docker logs --tail 100 -f crowdsec
-
En cas d'erreurs : Supprimez le dossier
config
et relancez les services avec :docker compose up -d --force-recreate
Si cela échoue, supprimez les dossiers
appdata/crowdsec/db
etappdata/crowdsec/config
puis recommencez la configuration depuis le début (bouncer + add engine). -
Ajouter une base de données autre que SQLite :
- Lancez d'abord le projet avec SQLite.
- Suivez le tutoriel CrowdSec database custom.
- Modifiez le fichier
appdata/crowdsec/config/crowdsec/config.yaml
. - Supprimez le dossier
appdata/crowdsec/data
. - Reconfigurez à partir de zéro (engine + bouncer).
-
Commandes
cscli
disponibles : Consultez la documentation ici.
Qbittorrent (documentation à venir)
Pour obtenir le mot de passe Qbittorrent : exécutez la commande
docker logs qbittorrent
.
Servarr (documentation à venir) :
AUthentik
suivre cette documentation Authentik