mirror of
https://github.com/R0m1k3/Apiflow-gateway.git
synced 2026-10-20 13:38:12 +02:00
feat: gateway sécurisé, miroir de schéma automatique et sync incrémentale
- Schéma Hostinger recopié automatiquement depuis PG Debian (colonnes, PK, index) : plus d'init.sql maintenu à la main (corrige articles.artcentrale, mvtart.no_id et les 12 tables manquantes) - Stratégies : full transactionnel (DELETE + INSERT, garde-fou de volume) et window (signature mensuelle + 10 derniers jours) pour les grosses tables - Attente de la fin de la sync Debian (_run), pg_try_advisory_lock, cron 07:30 Europe/Paris, force honoré, alertes webhook - Dashboard : basic auth, CSP sans script inline, plus d'innerHTML, port 3002 non publié (accès via Nginx Proxy Manager) - Secrets hors du compose (.env), frps épinglé 0.71.0 avec TLS forcé, allowPorts et additionalScopes - Suppression de sync.sh, tables.js, utils.js, init.sql ; README de déploiement L'ancien mot de passe de la base `post` figure dans l'historique git : il doit être changé sur le serveur (voir README). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f8575b9ff2
commit
ea084034b9
26 files changed
+2767
-922
No files matched your search
+38
-7
@@ -1,11 +1,42 @@
|
||||
# Copier ce fichier en .env et remplir les valeurs
|
||||
# Copier ce fichier en .env (exclu du git) et remplir les valeurs.
|
||||
# Le token frp n'est pas ici : il est dans frps.toml (voir frps.toml.example).
|
||||
|
||||
# Token partagé entre frps (Hostinger) et frpc (magasin)
|
||||
# Doit être identique dans frps.toml ET frpc.toml côté magasin
|
||||
FRP_TOKEN=CHANGE_ME_FRP_SECRET_TOKEN
|
||||
|
||||
# Credentials PostgreSQL Debian (source du sync)
|
||||
# Même valeurs que dans foirfouille-api/.env.docker
|
||||
# --- Source : PostgreSQL Debian, joint via le tunnel frps:15432 ---
|
||||
# Mêmes valeurs que foirfouille-api/.env.docker (idéalement un rôle en lecture seule)
|
||||
SRC_HOST=frps
|
||||
SRC_PORT=15432
|
||||
SRC_DB=CHANGE_ME_DB_NAME
|
||||
SRC_USER=CHANGE_ME_DB_USER
|
||||
SRC_PASS=CHANGE_ME_DB_PASSWORD
|
||||
|
||||
# --- Destination : PostgreSQL Hostinger (container postgres_db sur nginx_default) ---
|
||||
DST_HOST=postgres_db
|
||||
DST_PORT=5432
|
||||
DST_DB=CHANGE_ME_DST_DB
|
||||
DST_USER=CHANGE_ME_DST_USER
|
||||
# Mot de passe long et aléatoire (openssl rand -hex 24) — l'ancien a fuité dans l'historique git
|
||||
DST_PASS=CHANGE_ME_DST_PASSWORD
|
||||
|
||||
# --- Planification (cron 5 champs, fuseau ci-dessous) ---
|
||||
SYNC_CRON=30 7 * * *
|
||||
SYNC_TZ=Europe/Paris
|
||||
|
||||
# --- Tables ---
|
||||
# Tables source à ne pas répliquer (liste séparée par des virgules), ex : client,adrclient,cartes
|
||||
EXCLUDE_TABLES=
|
||||
# Surcharge des tables "fenêtre" (table:colonne_date,…). Vide = liste par défaut du code :
|
||||
# mvtart:datmvt,mvtreg:datmvt,mvtart_motif:datmvt,histo_art_gamme:date,demarques:datmvt,meteo:date,fidelite_jour:date
|
||||
WINDOW_TABLES=
|
||||
# Nombre de jours toujours rechargés pour les tables "fenêtre"
|
||||
WINDOW_RECENT_DAYS=10
|
||||
|
||||
# --- Attente de la sync Debian (sync_log._run = 'running') ---
|
||||
DEBIAN_WAIT_POLL_MIN=2
|
||||
DEBIAN_WAIT_MAX_MIN=180
|
||||
|
||||
# --- Dashboard (HTTP Basic auth). Sans ces deux variables, le dashboard répond 503 ---
|
||||
DASHBOARD_USER=CHANGE_ME_USER
|
||||
DASHBOARD_PASSWORD=CHANGE_ME_LONG_RANDOM_PASSWORD
|
||||
|
||||
# --- Alerte webhook (Slack, Discord, Mattermost…) : vide = pas d'alerte ---
|
||||
ALERT_WEBHOOK_URL=
|
||||
Reference in new issue
Block a user