# ============================================================================= # Noeud de donnees (db-01) - variables d'environnement # ============================================================================= # Sur le serveur : /opt/xpeditis/data-node/.env.data (chmod 600, root:root) # Dans Git : infra/prod/data-node/data-node.sops.env (chiffre SOPS) # # sops -e --input-type dotenv --output-type dotenv \ # /opt/xpeditis/data-node/.env.data > data-node/data-node.sops.env # sops -d --input-type dotenv --output-type dotenv \ # data-node/data-node.sops.env > /opt/xpeditis/data-node/.env.data # # Generer un secret : openssl rand -base64 32 | tr -d '\n/+=' | head -c 40 # Ne JAMAIS reutiliser un secret de preprod : ceux presents dans le depot sont # compromis (cf. docs/mise-en-prod/13-securite-durcissement.md, "Rotation # obligatoire avant la mise en production"). # --- Reseau ------------------------------------------------------------------ # IP privee de db-01 : seule interface sur laquelle Postgres et Redis sont # publies. Doit correspondre a var.db_private_ip cote Terraform. PRIVATE_IP=10.10.1.20 # --- PostgreSQL -------------------------------------------------------------- POSTGRES_DB=xpeditis_prod POSTGRES_USER=xpeditis POSTGRES_PASSWORD=REMPLACER_40_CARACTERES_ALEATOIRES # --- Redis ------------------------------------------------------------------- REDIS_PASSWORD=REMPLACER_40_CARACTERES_ALEATOIRES # --- WAL-G : archivage continu vers Hetzner Object Storage ------------------- # Bucket DEDIE aux sauvegardes, distinct du bucket des documents applicatifs, # avec son propre jeu de cles S3. Si les cles applicatives fuitent, les # sauvegardes restent hors de portee. WALG_S3_PREFIX=s3://xpeditis-prod-pgbackup WALG_S3_ENDPOINT=https://fsn1.your-objectstorage.com WALG_S3_REGION=fsn1 WALG_ACCESS_KEY_ID=REMPLACER WALG_SECRET_ACCESS_KEY=REMPLACER # Chiffrement cote client des sauvegardes physiques. # WAL-G attend une cle de 32 octets encodee en HEXADECIMAL (64 caracteres) : # openssl rand -hex 32 # Sans cette cle, aucune restauration n'est possible : conservez-la dans le # coffre-fort ET hors ligne. WALG_LIBSODIUM_KEY=REMPLACER_64_CARACTERES_HEXADECIMAUX # --- Chiffrement des dumps logiques (age) ------------------------------------ # Cle publique age destinataire des dumps quotidiens. # age-keygen -o backup-age.key && grep 'public key' backup-age.key BACKUP_AGE_RECIPIENT=age1REMPLACER # Chemin de la cle PRIVEE sur db-01, lue par pg-restore.sh. BACKUP_AGE_KEY_FILE=/root/.config/xpeditis/backup-age.key # --- Storage Box Hetzner (seconde copie des dumps) --------------------------- # Souscrite separement (BX11 ~4 EUR/mois). Cf. 12-sauvegardes-restauration.md. STORAGEBOX_HOST=uXXXXXX.your-storagebox.de STORAGEBOX_USER=uXXXXXX STORAGEBOX_PORT=23 STORAGEBOX_SSH_KEY=/root/.ssh/storagebox # --- Alertes ----------------------------------------------------------------- # Meme webhook que la CI/CD : une sauvegarde en echec doit se voir. DISCORD_WEBHOOK_URL= # Battement de coeur externe appele a chaque sauvegarde reussie # (BetterStack Heartbeats ou healthchecks.io, gratuit). Le service alerte quand # l'appel n'arrive PAS -- c'est ce qui detecte un serveur eteint ou un timer # systemd desactive, ce qu'une supervision interne ne verrait jamais. BACKUP_HEARTBEAT_URL=