Rendi configurabili le porte esposte sull'host
Le porte erano legate a 127.0.0.1, quindi l'applicazione non era raggiungibile per IP: andava bene solo accedendo da un dominio via Traefik. Ora interfaccia e porta si decidono separatamente nel .env, per ogni servizio. APP_BIND=0.0.0.0 APP_PORT=8080 app esposta (default) DB_BIND=127.0.0.1 DB_PORT_HOST=3306 database solo da localhost MAILPIT_BIND=127.0.0.1 solo col profilo dev Il database resta su localhost per due motivi: ci si arriva comunque con un tunnel SSH senza esporlo a Internet, e su un host con piu' progetti la 3306 va spesso in conflitto (per questo e' cambiabile con DB_PORT_HOST). Redis non pubblica nulla: non serve da fuori. SESSION_SECURE_COOKIE passa a false come default, perche' ora l'accesso tipico e' in HTTP per IP. Con true il cookie di sessione e' marcato "secure" e il browser non lo rimanda su HTTP: verificato, il login risponde 419 Page Expired e si torna alla schermata di accesso. Il tranello e' che provandolo su localhost non si manifesta, perche' i browser considerano localhost un contesto sicuro: emerge solo accedendo per IP. E' documentato in .env.example insieme al sintomo esatto. Verificato: app raggiungibile dall'IP di rete, porta del database chiusa dall'esterno e aperta da localhost, login e pagine funzionanti via IP. Nota: senza dominio il traffico e' in chiaro. Il README segnala il passaggio a HTTPS come consigliato, con le tre variabili da cambiare. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
33
README.md
33
README.md
@@ -93,9 +93,13 @@ valori:
|
||||
APP_NAME=TerManager2
|
||||
APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://territori.tuodominio.it
|
||||
APP_TIMEZONE=Europe/Rome
|
||||
|
||||
# Deve combaciare con l'indirizzo da cui accedi, porta inclusa.
|
||||
# per IP:porta -> http://IP-DEL-SERVER:8080
|
||||
# con dominio -> https://territori.tuodominio.it
|
||||
APP_URL=http://IP-DEL-SERVER:8080
|
||||
|
||||
# --- Chiavi e password (dal Passo 2) ---
|
||||
APP_KEY=base64:...
|
||||
DB_PASSWORD=...
|
||||
@@ -121,8 +125,15 @@ INITIAL_ADMIN_NAME=Nome Cognome
|
||||
INITIAL_ADMIN_EMAIL=admin@tuodominio.it
|
||||
INITIAL_ADMIN_PASSWORD=UnaPasswordSolida
|
||||
|
||||
# --- Porte esposte sull'host ---
|
||||
APP_BIND=0.0.0.0 # 127.0.0.1 se ci metti davanti un reverse proxy
|
||||
APP_PORT=8080
|
||||
DB_BIND=127.0.0.1 # database raggiungibile solo via tunnel SSH
|
||||
DB_PORT_HOST=3306
|
||||
|
||||
# --- Sessioni e log ---
|
||||
SESSION_SECURE_COOKIE=true
|
||||
# false con accesso HTTP, true solo in HTTPS: vedi .env.example
|
||||
SESSION_SECURE_COOKIE=false
|
||||
LOG_CHANNEL=stderr
|
||||
LOG_LEVEL=warning
|
||||
|
||||
@@ -141,7 +152,15 @@ MAIL_FROM_ADDRESS=noreply@tuodominio.it
|
||||
> la protezione contro l'host header injection, ed è la causa più comune di
|
||||
> "pagina che non si apre" al primo deploy.
|
||||
|
||||
### Passo 4 — Assegna il dominio
|
||||
### Passo 4 — Assegna il dominio (facoltativo)
|
||||
|
||||
Con la configurazione qui sopra l'applicazione risponde gia' su
|
||||
`http://IP-DEL-SERVER:8080`. Questo passo serve solo se vuoi un dominio con
|
||||
HTTPS — **consigliato**, perche' altrimenti password e sessioni viaggiano in
|
||||
chiaro.
|
||||
|
||||
Quando lo fai, cambia anche: `APP_URL=https://tuodominio.it`,
|
||||
`SESSION_SECURE_COOKIE=true` e `APP_BIND=127.0.0.1`.
|
||||
|
||||
**Domains** → **Add Domain**:
|
||||
|
||||
@@ -237,9 +256,9 @@ docker network create dokploy-network # una volta sola
|
||||
# nel .env, per l'uso locale:
|
||||
# APP_URL=http://localhost:8080
|
||||
# APP_ENV=local
|
||||
# SESSION_SECURE_COOKIE=false
|
||||
# MAIL_MAILER=smtp MAIL_HOST=mailpit MAIL_PORT=1025
|
||||
# e le tre password a piacere
|
||||
# (SESSION_SECURE_COOKIE=false e APP_BIND/APP_PORT vanno gia' bene)
|
||||
|
||||
docker compose --profile dev up -d --build
|
||||
```
|
||||
@@ -310,7 +329,11 @@ ridichiara le variabili applicative: le prende dal `.env` così com'è.
|
||||
| `APP_DEBUG` | `false` | **Mai `true` in produzione** |
|
||||
| `APP_TIMEZONE` | `Europe/Rome` | Fuso orario |
|
||||
| `LOG_LEVEL` | `warning` | `debug` per diagnosticare |
|
||||
| `SESSION_SECURE_COOKIE` | `true` | `false` solo su HTTP locale |
|
||||
| `SESSION_SECURE_COOKIE` | `false` | `true` solo servendo in HTTPS |
|
||||
| `APP_BIND` | `0.0.0.0` | `127.0.0.1` dietro un reverse proxy |
|
||||
| `APP_PORT` | `8080` | Porta dell'applicazione sull'host |
|
||||
| `DB_BIND` | `127.0.0.1` | Interfaccia della porta MariaDB |
|
||||
| `DB_PORT_HOST` | `3306` | Cambiala se la 3306 e' occupata |
|
||||
| `INITIAL_ADMIN_EMAIL` | — | Admin creato al primo avvio |
|
||||
| `INITIAL_ADMIN_PASSWORD` | — | Idem |
|
||||
| `INITIAL_ADMIN_NAME` | `Amministratore`| Idem |
|
||||
|
||||
Reference in New Issue
Block a user