Phase 2.1.1 : durcissement avant exposition publique
Fail-fast sur la configuration. Une limite de debit illisible (10/hours, 10/banana, -1/hour) arrete desormais le demarrage avec un message nommant la variable, au lieu de desactiver silencieusement la protection : seules les valeurs 0, off, none, disabled et vide desactivent volontairement. Meme traitement pour MAX_SHARED_MAPS, MAX_SHARE_SIZE_MB, DEFAULT_SHARE_EXPIRY_DAYS et chaque entree de TRUSTED_PROXY_CIDRS. X-Forwarded-For n'est plus cru sur la seule foi de TRUST_PROXY_HEADERS : la connexion doit aussi provenir d'un reseau declare dans TRUSTED_PROXY_CIDRS (ipaddress, IPv4/IPv6/CIDR). Activer la confiance sans declarer de reseau est refuse au demarrage, faute de quoi la configuration semblerait active sans l'etre. L'adresse retenue est normalisee : les differentes ecritures d'une meme IPv6 ne donnent plus des compteurs distincts. MAX_SHARED_MAPS : comptage et insertion serialises par un verrou de processus, pour que deux creations simultanees ne franchissent pas ensemble la derniere place. Documente comme valable pour un service applicatif unique. Ajoute APP_BIND pour ne pas publier 8080 sur toutes les interfaces en production, une option backup --keep pour la retention, et documente Nginx, Traefik en override, cron et systemd. Corrige un bug de rendu du build local : mon edition avait reecrit docker-entrypoint.sh en CRLF, rendant le shebang introuvable dans le conteneur. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
21
.env.example
21
.env.example
@@ -9,6 +9,11 @@ APP_NAME=OpenMind
|
||||
# Port publie sur l'hote. L'application ecoute toujours sur 8080 dans le conteneur.
|
||||
APP_PORT=8080
|
||||
|
||||
# Interface sur laquelle le port est publie. En production derriere un reverse
|
||||
# proxy installe sur l'hote, mettez 127.0.0.1 : OpenMind n'est alors joignable
|
||||
# que par le proxy, jamais directement depuis Internet.
|
||||
APP_BIND=0.0.0.0
|
||||
|
||||
# Base SQLite des cartes PARTAGEES uniquement.
|
||||
# /app/data est monte depuis ./data sur l'hote (bind mount).
|
||||
DATABASE_URL=sqlite:////app/data/openmind.db
|
||||
@@ -26,8 +31,10 @@ MAX_NODES=5000
|
||||
SHARING_ENABLED=true
|
||||
|
||||
# Limites de debit, au format <nombre>/<fenetre> (second, minute, hour, day).
|
||||
# Vide ou 0 desactive la limite. Les compteurs sont en memoire : ils repartent
|
||||
# de zero au redemarrage du conteneur.
|
||||
# Pour desactiver une limite : 0, off, none, disabled, ou une valeur vide.
|
||||
# Toute autre valeur illisible (10/hours, 10/banana...) ARRETE le demarrage :
|
||||
# une faute de frappe ne doit pas desactiver silencieusement une protection.
|
||||
# Les compteurs sont en memoire : ils repartent de zero au redemarrage.
|
||||
SHARE_CREATE_RATE_LIMIT=10/hour
|
||||
SHARE_READ_RATE_LIMIT=120/minute
|
||||
SHARE_WRITE_RATE_LIMIT=60/hour
|
||||
@@ -46,8 +53,18 @@ ALLOW_PERMANENT_SHARES=true
|
||||
|
||||
# A activer UNIQUEMENT derriere un reverse proxy de confiance : sinon un client
|
||||
# direct pourrait falsifier X-Forwarded-For et contourner les limites de debit.
|
||||
# Activer TRUST_PROXY_HEADERS impose de renseigner TRUSTED_PROXY_CIDRS : sans
|
||||
# reseau declare, aucun en-tete ne serait accepte, et le demarrage echoue plutot
|
||||
# que de laisser croire a une configuration active.
|
||||
TRUST_PROXY_HEADERS=false
|
||||
|
||||
# Reseaux depuis lesquels X-Forwarded-For est accepte (IPv4, IPv6, CIDR),
|
||||
# separes par des virgules. Exemple pour un proxy dans Docker :
|
||||
# TRUSTED_PROXY_CIDRS=172.16.0.0/12,10.0.0.0/8
|
||||
# Pour un Nginx sur l'hote, avec un port publie sur 127.0.0.1 :
|
||||
# TRUSTED_PROXY_CIDRS=127.0.0.1/32,::1/128
|
||||
TRUSTED_PROXY_CIDRS=
|
||||
|
||||
# Origines autorisees en CORS, separees par des virgules.
|
||||
# Vide = aucune origine externe (l'interface est servie par ce meme serveur).
|
||||
CORS_ORIGINS=
|
||||
|
||||
Reference in New Issue
Block a user