Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
70 lines
3.3 KiB
Plaintext
70 lines
3.3 KiB
Plaintext
# =============================================================================
|
|
# 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=
|