Soluzione della community

Condividere la porta 5000 delle app di CasaOS: cambia la porta dell’host, non quella del container

A June 2024 CasaOS question about MusicBrainz, HandBrake, and other apps sharing port 5000; a later reply identified changing the host port while preserving the container port.

Un utente di CasaOS ha installato diverse applicazioni web che si aspettavano la porta del container 5000. Era possibile raggiungere una sola app perché più container cercavano di pubblicare la stessa porta sull’host Debian. La modifica di entrambi i lati della mappatura ha causato l’interruzione della risposta di alcune applicazioni.

La regola pratica è semplice: mantieni invariata la porta del container dell’applicazione, a meno che la documentazione specifica dell’app non indichi che la porta di ascolto è configurabile. Modifica solo la porta sul lato host.

Leggere le mappature delle porte Docker da sinistra a destra

5001:5000

In questa mappatura, 5001 è la porta dell’host utilizzata nel browser e 5000 è la porta su cui l’applicazione è in ascolto all’interno del container. La guida ufficiale di Docker alla pubblicazione delle porte utilizza lo stesso modello host-container.

Mappare due app sulla porta 5000 su porte host diverse

Applicazione Porta host Porta container Indirizzo nel browser
MusicBrainz 5001 5000 http://SERVER-IP:5001
HandBrake 5002 5000 http://SERVER-IP:5002

Ogni coppia di indirizzo IP e porta dell’host deve essere univoca. Più container possono comunque essere in ascolto internamente sulla 5000, perché i relativi namespace di rete sono isolati.

Perché modificare la porta del container spesso causa il malfunzionamento dell’interfaccia web

Un’immagine può avviare il proprio server web su una porta interna fissa. Se CasaOS mappa la porta host 5001 sulla porta container 5001 mentre il processo è ancora in ascolto sulla 5000, Docker inoltra il traffico verso un socket vuoto. Il container può risultare attivo anche se il browser non riceve alcuna risposta.

Modifica la porta del container solo quando l’applicazione a monte espone un’impostazione o una variabile d’ambiente documentata che modifica anche la porta di ascolto del processo.

Modificare il campo corretto in CasaOS

  1. Apri le impostazioni dell’app o la configurazione per l’installazione personalizzata.
  2. Individua la voce della porta che mostra i valori dell’host e del container.
  3. Lascia il valore del container impostato sul valore predefinito dell’immagine.
  4. Scegli una porta host non utilizzata.
  5. Salva e ricrea o riavvia il container come richiesto.
  6. Apri l’app tramite la nuova porta host.

Verificare prima di assegnare una nuova porta

Controlla l’elenco delle app di CasaOS o la configurazione dei container per verificare le mappature esistenti. Considera anche i servizi installati direttamente su Debian, perché possono occupare la stessa porta host senza comparire come app di CasaOS. Evita di assegnare porte comuni dell’infrastruttura, come 22, 53, 80, 443 o 445, a meno che tu non conosca il servizio esistente.

La rete dell’host elimina questa flessibilità

Nella modalità di rete host, il container condivide il namespace di rete dell’host e non può rimappare normalmente una porta di ascolto già utilizzata. La documentazione di Docker sulla rete host conferma che un determinato servizio può associare una specifica porta host a una sola volta.

Domande frequenti sui conflitti di porte in CasaOS

Quale numero devo modificare?

Modifica la porta host, ovvero il primo numero in HOST:CONTAINER.

Ogni app può usare la porta container 5000?

Sì, se ogni container è isolato e ciascuno pubblica una porta host diversa.

Perché l’app è stata installata ma non si apre?

La mappatura potrebbe puntare a una porta del container sulla quale l’applicazione non è in ascolto.