Salta ai contenuti
PortoPorto

HTTPS e reverse proxy

Fuori da localhost Porto richiede un PORTO_BASE_URL in https: i cookie di sessione sono Secure e, con un URL https, Porto invia anche l’intestazione HSTS. Hai due possibilità.

Con PORTO_TLS_AUTOCERT_DOMAINS=porto.mio-marina.it Porto ottiene e rinnova da sé i certificati Let’s Encrypt e ascolta sulle porte 443 (HTTPS) e 80 (redirect e verifica ACME). Il dominio deve puntare al server e le due porte devono essere raggiungibili da internet. Con Docker pubblica 80 e 443 al posto della 8080. I certificati sono conservati nella cartella dati.

Lascia Porto su :8080 e fai terminare HTTPS al proxy. Indica a Porto da quali indirizzi arrivano le richieste del proxy, così ricava l’IP reale del client (usato dai limiti dei tentativi e delle richieste):

Finestra del terminale
PORTO_TRUSTED_PROXIES=127.0.0.1/32,172.16.0.0/12

Solo da questi indirizzi Porto legge X-Forwarded-For e X-Forwarded-Proto.

porto.mio-marina.it {
reverse_proxy 127.0.0.1:8080
}

Il pannello riceve gli aggiornamenti in tempo reale con Server-Sent Events: disattiva il buffering delle risposte e alza il timeout di lettura.

server {
listen 443 ssl;
server_name porto.mio-marina.it;
# ssl_certificate ... ; ssl_certificate_key ... ;
client_max_body_size 20m; # caricamento di foto e documenti
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 1h;
}
}

Con Traefik, Coolify o CapRover basta instradare il dominio alla porta 8080 del container; i modelli in deploy/ lo fanno già.

La pagina pubblica di prenotazione può essere incorporata in un iframe solo dai domini che il gestore autorizza nelle impostazioni della prenotazione online (frame-ancestors per marina). Il proxy non deve aggiungere un proprio X-Frame-Options o Content-Security-Policy, che prevarrebbero su quelli di Porto. Vedi Prenotazione online.

diCoste360.itCoste360.it

Porto è sviluppato da Coste360 SRL. Codice sorgente disponibile con licenza BSL 1.1; il marchio Porto è escluso dalla licenza.