Soluzione della community

Ospita un sito web su CasaOS in sicurezza con Nginx Docker senza esporre la dashboard di CasaOS

An October 2023 CasaOS discussion asking whether Apache, Nginx, or another web server should be used to publish a site. The community recommended a Dockerized web server and warned against exposing the CasaOS management interface directly to the Internet.

CasaOS può ospitare un sito web, ma il sito e l’interfaccia di amministrazione di CasaOS devono essere considerati servizi separati. Questo era il consiglio più importante in questa breve discussione dell’ottobre 2023: eseguire un server web in Docker è ragionevole, mentre esporre direttamente su Internet il pannello di CasaOS è una decisione diversa e molto più rischiosa.

Per un semplice sito statico, Nginx rimane una valida scelta in un container, perché l’immagine ufficiale può servire una directory contenente HTML, CSS, JavaScript e immagini con una configurazione minima.

Esegui il sito web in un container dedicato

CasaOS è un livello di gestione per Docker e per i file presenti sull’host Linux sottostante. Di conseguenza, un sito web non deve essere installato direttamente nel servizio di gestione di CasaOS.

Mantieni il server web isolato in un container dedicato, con una directory per i contenuti e solo le porte necessarie.

L’immagine ufficiale di Nginx può servire direttamente contenuti statici

L’attuale immagine Docker di Nginx supporta il montaggio in sola lettura di una directory locale del sito in:

/usr/share/nginx/html

Questo modello è ideale per un sito personale statico, perché il processo del server può leggere i contenuti senza modificare i file sorgente.

Usa l’attuale struttura del container ufficiale di Nginx per i contenuti statici invece di copiare un’immagine di terze parti obsoleta da un tutorial del 2021.

Anche Apache è una scelta valida, ma la scelta non costituisce il confine di sicurezza

La domanda originale chiedeva un confronto tra Apache e Nginx. Entrambi possono ospitare bene un sito web. Le decisioni più importanti riguardano invece il modo in cui il container viene aggiornato, la posizione dei file del sito, la configurazione di TLS e le porte di rete esposte.

Passare da Nginx ad Apache non rende sicuro un pannello di amministrazione esposto pubblicamente.

Mantieni privato il pannello di CasaOS

Il membro della community aveva esplicitamente sconsigliato di esporre CasaOS su Internet. L’interfaccia di gestione può controllare file, container e altre funzioni del server; esporla crea una superficie di attacco molto più ampia rispetto a quella di un container per siti web configurato in modo restrittivo.

Mantieni l’amministrazione sulla LAN o dietro un livello privato di accesso remoto.

Usa una rete privata per l’amministrazione

L’utente della fonte aveva deciso di tenere CasaOS a casa per Jellyfin e di usare Tailscale per l’accesso remoto a Nextcloud. È una buona separazione delle responsabilità: il traffico pubblico del sito può raggiungere il container web, mentre i servizi di amministrazione rimangono accessibili solo tramite una rete overlay privata.

Se il sito deve essere pubblico, aggiungi TLS e un percorso di ingresso chiaro

Un sito pubblico normalmente richiede un nome di dominio, un certificato HTTPS e l’inoltro delle porte sul router oppure un’architettura con tunnel inverso autenticato. La scelta esatta dipende dalla disponibilità di un IP pubblico e dal livello di infrastruttura che si desidera gestire.

Pubblica solo le porte del server web necessarie al sito. Non inoltrare porte non pertinenti di CasaOS o della gestione di Docker.

Aggiorna il container web e il relativo stack di contenuti

Un sito statico Nginx minimale ha una superficie di attacco relativamente ridotta, ma anche il container necessita di aggiornamenti di sicurezza. I siti dinamici basati su PHP, WordPress, Node.js o un database aggiungono molte più componenti e devono essere aggiornati come uno stack applicativo, non trattati come semplici file statici.

Esegui il backup dei contenuti del sito separatamente dal container

Conserva i file del sito in una cartella persistente sull’host o in un repository. Se il container viene ricreato, il sito deve poter essere ripristinato senza ricostruire i contenuti dal file system di un container temporaneo.

Domande frequenti sul server web in CasaOS

CasaOS può ospitare un sito web?

Sì. Un server Nginx o Apache eseguito in Docker può pubblicare contenuti web indipendentemente dall’interfaccia di CasaOS.

È consigliabile esporre pubblicamente il pannello di CasaOS?

La community della fonte lo ha sconsigliato espressamente. Mantieni privata la gestione.

Qual è il server più semplice per un sito statico?

L’immagine Docker ufficiale di Nginx offre un flusso di lavoro semplice per i contenuti statici.