Questa discussione di gennaio 2026 su Nextcloud/MariaDB è uno degli esempi più chiari del motivo per cui il networking dei container dovrebbe essere diagnosticato strato per strato. L’utente aveva installato separatamente le app Nextcloud e MariaDB; MariaDB aveva raggiunto uno stato operativo di “disponibilità per le connessioni”, ma Nextcloud non riusciva a completare la configurazione iniziale con getaddrinfo per mariadb non riuscitoReinstallare entrambe le app ed eliminare le relative cartelle non ha modificato l’errore.
La svolta è arrivata quando la community ha verificato l’effettivo IP Docker del container MariaDB. Nextcloud ha iniziato immediatamente l’installazione. Questo ha dimostrato che il server del database, le credenziali e il percorso TCP erano sostanzialmente funzionanti, mentre il nome host mariadb non veniva risolto dal container di Nextcloud.
L’utente voleva un database MariaDB separato per Nextcloud
Le prime risposte discutevano alternative come un’immagine Nextcloud tutto-in-uno con PostgreSQL integrato oppure la creazione manuale di un database e di un utente MariaDB tramite phpMyAdmin. Questi suggerimenti non riguardavano il problema finale. L’utente aveva già MariaDB in esecuzione e doveva consentire a Nextcloud di raggiungerlo.
I log di MariaDB mostravano che il database era operativo
La community ha correttamente sconsigliato di continuare a modificare le password di MariaDB e le variabili d’ambiente dopo che il database era già stato inizializzato. Molte immagini di database applicano le variabili di inizializzazione solo alla prima creazione della directory dei dati.
L’host del database deve essere raggiungibile dall’interno di Nextcloud
Durante la configurazione iniziale di Nextcloud, il campo dell’host del database può contenere un nome host e una porta, ad esempio:
mariadb:3306
Funziona solo quando il networking di Docker fornisce la risoluzione dei nomi per mariadb dal container di Nextcloud.
getaddrinfo per mariadb non riuscito: è un errore del container relativo al DNS?
L’errore chiave era:
php_network_getaddresses: getaddrinfo per mariadb non riuscito
Questo avviene prima che MariaDB possa accettare o rifiutare un nome utente e una password. Se il nome non può essere risolto in un indirizzo IP, le credenziali del database non vengono ancora verificate.
Il fatto che entrambe le app mostrassero “Bridge” non ha risolto la risoluzione dei nomi
L’utente ha confermato che entrambe le applicazioni mostravano il networking Bridge in ZimaOS, ma mariadb non ha ancora risolto. Questa è un’importante peculiarità di Docker: i container collegati indipendentemente al bridge predefinito di Docker non ottengono automaticamente lo stesso comportamento DNS basato sui nomi dei servizi dei servizi collegati a una rete bridge definita dall’utente.
Pertanto, «entrambi indicano bridge» non è una prova sufficiente che un container possa risolvere il nome dell'altro container.
Una reinstallazione pulita non ha risolto il comportamento della rete
L'utente ha disinstallato Nextcloud e MariaDB, eliminato le relative cartelle e reinstallato tutto da zero. È ricomparso lo stesso errore relativo al nome host. Questo test negativo è utile perché dimostra che il problema non dipendeva semplicemente da dati MariaDB obsoleti o da una password errata occasionale.
Un avviso di accesso locale di Nextcloud era un problema separato
L'utente ha trovato online un suggerimento per abilitare allow_local_remote_servers. L'applicazione di questa impostazione durante la configurazione iniziale ha impedito a Nextcloud di avviarsi correttamente. La community ha spiegato che questa opzione riguardava una regola di sicurezza diversa di Nextcloud e non risolveva la risoluzione dei nomi Docker.
La community è quindi passata ai test diretti della rete Docker
Il responder ha richiesto verifiche su:
- se entrambi i container erano in esecuzione;
- l'effettiva modalità di rete riportata da Docker;
- se Nextcloud riusciva a risolvere o a eseguire il ping di
mariadb; - l'IP Docker attuale del container MariaDB.
Questo è il corretto passaggio successivo quando gli screenshot della configurazione non spiegano più il comportamento: testare la connessione dallo stesso spazio dei nomi di rete in cui è in esecuzione Nextcloud.
L'utilizzo dell'IP del container MariaDB ha consentito di installare Nextcloud
Il test decisivo consisteva nel sostituire mariadb:3306 temporaneamente con l'IP Docker e la porta del container MariaDB. L'utente della fonte ha risposto che Nextcloud si stava quindi installando.
Il responder ha riassunto chiaramente il risultato:
-
mariadb:3306non riusciva; - l'IP Docker diretto sulla porta 3306 ha funzionato immediatamente.
È una prova forte di un problema di risoluzione del nome del container.
Un IP diretto del container è una soluzione alternativa valida per la diagnostica
L'utilizzo dell'IP dimostra che il database è raggiungibile e consente di procedere con l'installazione. Nel caso in questione, è stata una soluzione alternativa efficace.
Tuttavia, gli indirizzi IP assegnati automaticamente ai container possono cambiare quando un container viene ricreato, rimosso o collegato a una rete diversa. Una configurazione che dipende permanentemente da 172.17.x.x può smettere di funzionare in seguito senza alcuna modifica alla configurazione di Nextcloud o MariaDB.
Una rete Docker definita dall'utente è una soluzione progettuale migliore a lungo termine
L’architettura più affidabile consiste nel collegare Nextcloud e MariaDB alla stessa rete Docker definita dall’utente e nell’utilizzare come host del database un nome stabile del servizio o del container. Docker fornisce un DNS integrato sulle reti definite dall’utente proprio a questo scopo.
L’attuale modifica nativa dei file YAML in ZimaOS rende questo tipo di definizione della rete più semplice rispetto a quando è stato creato il thread originale. Usa l’attuale modello di configurazione Compose di ZimaOS quando crei una rete condivisa per Nextcloud e MariaDB.
Conserva deliberatamente i dati di MariaDB
Se MariaDB contiene già un database Nextcloud funzionante, non eliminare la directory dei dati persistenti solo per modificare la rete Docker. L’appartenenza alla rete può essere modificata senza ricreare i contenuti del database.
Prima di qualsiasi migrazione, esegui il backup del database e annota l’utente corrente, il nome del database e la mappatura dei volumi.
Non disabilitare i controlli di sicurezza di Nextcloud per correggere il DNS Docker
Impostazioni come i domini attendibili, l’accesso remoto locale al server e la configurazione del proxy inverso proteggono Nextcloud a livello HTTP/applicazione. Devono essere modificate solo quando lo richiede il corrispondente errore di Nextcloud.
A getaddrinfo L’errore relativo al nome host del database appartiene al livello della rete Docker.
Un albero diagnostico migliore
- Conferma che MariaDB sia in esecuzione e in ascolto sulla porta 3306.
- Conferma che il database previsto esista e che le credenziali siano note.
- Verifica se Nextcloud riesce a risolvere il nome host del database.
- Se la risoluzione del nome host non funziona, prova l’IP del container del database.
- Se l’IP funziona, correggi la rete Docker invece di cambiare le password del database.
- Sposta entrambi i container su una rete stabile definita dall’utente per ottenere un nome host persistente.
Domande frequenti su Nextcloud e MariaDB
MariaDB era danneggiato?
No. Il suo registro mostrava che era pronto ad accettare connessioni.
Che cosa significava getaddrinfo for mariadb failed?
Nextcloud non riusciva a risolvere il nome host del database ancor prima di arrivare alla fase di autenticazione.
Che cosa ha confermato la diagnosi?
L’uso dell’IP Docker diretto del container MariaDB ha permesso a Nextcloud di avviare l’installazione.
L’IP diretto del container deve essere l’host permanente del database?
Può funzionare, ma una rete Docker condivisa, definita dall’utente, con una risoluzione dei nomi stabile è più affidabile.
La reinstallazione di entrambe le app ha risolto il problema?
No. L’utente di origine ha eseguito una reinstallazione pulita e si è ripresentato lo stesso errore di risoluzione del nome host.
