From 1576fa190bde2bf8691490b0a0752cf8a5b5eefa Mon Sep 17 00:00:00 2001 From: AdrianoDev Date: Mon, 21 Sep 2026 22:40:06 +0200 Subject: [PATCH] deploy(compose): SESSION_COOKIE_SECURE per l'on-premise su HTTP in LAN (#38) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker-compose.dev.yml (Nginx senza SSL, l'installazione on-premise): default false. .env.example: default true documentato, con la spiegazione di quando va a false. La lettura in src/frontend/flask_app/config.py รจ del lotto B2, non ancora landata: qui si documenta e si predispone solo la variabile lato deploy. Co-Authored-By: Claude Sonnet 5 --- .env.example | 21 +++++++++++++++++++++ docker-compose.dev.yml | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/.env.example b/.env.example index faf29ff..643cd48 100644 --- a/.env.example +++ b/.env.example @@ -59,6 +59,27 @@ SETUP_PASSWORD= # Password per /api/setup, vuoto = disabilitato OPENROUTER_API_KEY= # API key per parsing schede tecniche, vuoto = disabilitato OPENROUTER_MODEL=anthropic/claude-sonnet-4 # Modello AI da utilizzare +# --- Deploy (introdotte dalla revisione del 21/09/2026) --- +# Dominio pubblico dell'installazione, usato nelle rule Traefik di +# docker-compose.yml (produzione). Obbligatorio, senza default. +APP_DOMAIN= +# Quanti hop di reverse proxy fidati ci sono davanti al server (Nginx o +# Traefik): serve a calcolare l'IP reale del tablet per il rate limiter. +TRUSTED_PROXY_COUNT=1 +# Numero di worker Uvicorn del server. Il Dockerfile ne avvia 4 di default +# indipendentemente da questa variabile; impostarla esplicitamente per farla +# coincidere se si cambia il numero di worker nell'immagine. +WEB_CONCURRENCY=1 +# Cookie di sessione Flask con flag Secure. true di default (richiede HTTPS, +# come dietro Traefik in docker-compose.yml). Le installazioni on-premise su +# rete LAN in HTTP semplice (docker-compose.dev.yml, Nginx senza SSL) la +# impostano a false, altrimenti il browser non rimanda mai indietro il cookie. +SESSION_COOKIE_SECURE=true +# Timeout (secondi) di un'esecuzione del worker di visione. +VISION_RUN_TIMEOUT_S=100 +# Quante esecuzioni di visione in parallelo accetta il worker. +VISION_MAX_CONCURRENCY=2 + # --- Docker --- # DB_ROOT_PASSWORD: in produzione (docker-compose.yml) obbligatoria, senza default. DB_ROOT_PASSWORD=root_password_change_me diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 3c267e8..ec964a1 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -79,6 +79,10 @@ services: - .env environment: API_SERVER_URL: http://server:8000 + # Nginx qui non termina SSL (vedi nginx/nginx.conf): un'installazione + # on-premise su LAN in HTTP semplice ha bisogno del cookie non-secure, + # altrimenti il browser non lo rimanda mai indietro. + SESSION_COOKIE_SECURE: ${SESSION_COOKIE_SECURE:-false} depends_on: server: condition: service_healthy