1 Exploitation
pepper edited this page 2026-06-27 03:07:54 +00:00

Exploitation au quotidien

Commandes de base

# État de la stack
sudo docker compose ps

# Logs en temps réel
sudo docker compose logs -f
sudo docker compose logs -f <service>       # un service
sudo docker compose logs -f swag authentik-server  # plusieurs

# Redémarrer un service
sudo docker compose restart <service>

# Recréer après modif du compose
sudo docker compose up -d <service>

# Arrêter / démarrer la stack complète
sudo docker compose down -v
sudo docker compose up -d

Mettre à jour un service

Services opt-in Watchtower (automatique)

Watchtower gère : swag, wireguard, qbittorrent, node-exporter. Ces services sont mis à jour automatiquement lors de la prochaine vérification.

Services épinglés (mise à jour manuelle)

# Vérifier la dernière image disponible
sudo docker compose pull <service>

# Recréer avec la nouvelle image
sudo docker compose up -d <service>

# Nettoyer l'ancienne image
sudo docker image prune -f

Services épinglés (version fixée) :

Service Image épinglée Raison
postgresql postgres:18-alpine Migration de données requise
nextcloud nextcloud:34 Mises à jour majeures risquées
authentik-server goauthentik/server:2026.x.x Migrations DB Authentik

Mise à jour Nextcloud

# 1. Sauvegarder
sudo ./backup.sh

# 2. Changer la version dans .env ou docker-compose.yml
# NEXTCLOUD_VERSION=35 (par exemple)

# 3. Puller et recréer
sudo docker compose pull nextcloud nextcloud-cron
sudo docker compose up -d nextcloud nextcloud-cron

# 4. Lancer la mise à jour OCC (si version majeure)
sudo docker exec -u www-data nextcloud php occ upgrade

Ajouter un nouveau service

  1. Ajouter le service dans docker-compose.yml avec les bons réseaux
  2. Créer la config nginx dans ./swag/conf/nginx/<service>.conf (ou copier un .sample)
  3. Si le service a besoin d'un secret : créer secrets/<nom>.txt + déclarer dans compose
  4. Si OIDC : créer l'application dans Authentik
  5. sudo docker compose up -d <nouveau_service>
  6. sudo docker compose restart swag (pour charger la config nginx)
  7. Commiter et pousser : git add … && git commit … && ./git-push.sh

Gestion des certificats

Let's Encrypt est géré automatiquement par SWAG (DNS challenge Cloudflare).

# Voir les certificats
sudo docker exec swag ls /config/etc/letsencrypt/live/

# Forcer le renouvellement
sudo docker exec swag certbot renew --force-renewal

# Logs du renouvellement automatique
sudo docker compose logs swag | grep -i certbot

Versionnement git

Le dépôt est sur forgejo.molok.fr/pepper/docker-infra.

Le push passe par le réseau Docker interne (hairpin NAT) :

# Vérifier l'état
git status
git log --oneline -10

# Commiter et pousser
git add docker-compose.yml .env ...
git commit -m "Description du changement"
./git-push.sh

Le token Forgejo est dans secrets/forgejo_git_token.txt. Ne jamais commiter ce fichier (secrets/ est dans .gitignore).


Inspecter un conteneur

# Entrer dans un conteneur
sudo docker exec -it <service> sh

# Voir les variables d'environnement d'un conteneur
sudo docker exec <service> env | sort

# Voir les montages (volumes)
sudo docker inspect <service> | python3 -c "
import sys, json
c = json.load(sys.stdin)[0]
for m in c['Mounts']:
    print(m['Source'], '->', m['Destination'])
"

# Utilisation des ressources en temps réel
sudo docker stats

Diagnostic réseau

# Tester la connectivité entre deux conteneurs
sudo docker exec swag curl -s http://forgejo:3000/api/healthz
sudo docker exec swag curl -s http://authentik-server:9000/-/health/ready/

# Voir les DNS internes
sudo docker exec swag cat /etc/resolv.conf
sudo docker exec swag nslookup postgresql