Este hilo de enero de 2026 sobre Nextcloud/MariaDB es uno de los ejemplos más claros de por qué las redes de contenedores deben diagnosticarse por capas. El usuario instaló aplicaciones independientes de Nextcloud y MariaDB; MariaDB alcanzó un estado saludable de «lista para aceptar conexiones», pero Nextcloud falló durante la configuración inicial con getaddrinfo for mariadb failedReinstalar ambas aplicaciones y eliminar sus carpetas no cambió el error.
El avance decisivo se produjo cuando la comunidad probó la IP real del contenedor de MariaDB en Docker. Nextcloud comenzó a instalarse de inmediato. Eso demostró que el servidor de base de datos, las credenciales y la ruta TCP eran básicamente funcionales, mientras que el nombre de host mariadb no se resolvía desde el contenedor de Nextcloud.
El usuario quería una base de datos de MariaDB independiente para Nextcloud
Las primeras respuestas analizaron alternativas, como una imagen de Nextcloud todo en uno con PostgreSQL incluido o la creación manual de una base de datos y un usuario de MariaDB mediante phpMyAdmin. Esas sugerencias no constituían el problema final. El usuario ya tenía MariaDB en funcionamiento y necesitaba que Nextcloud pudiera conectarse a ella.
Los registros de MariaDB mostraban que la base de datos estaba en buen estado
La comunidad recomendó acertadamente no seguir cambiando las contraseñas de MariaDB y las variables de entorno después de que la base de datos ya se hubiera inicializado. Muchas imágenes de bases de datos aplican las variables de inicialización solo al crear por primera vez el directorio de datos.
El host de la base de datos debe ser accesible desde el interior de Nextcloud
Durante la configuración inicial de Nextcloud, el campo del host de la base de datos puede contener un nombre de host y un puerto, como:
mariadb:3306
Eso solo funciona cuando la red de Docker proporciona resolución de nombres para mariadb del contenedor de Nextcloud.
getaddrinfo for mariadb failed: ¿es un error de contenedor relacionado con DNS?
El error clave fue:
php_network_getaddresses: getaddrinfo for mariadb failed
Esto ocurre antes de que MariaDB pueda aceptar o rechazar un nombre de usuario y una contraseña. Si el nombre no se puede resolver a una dirección IP, las credenciales de la base de datos todavía no se han evaluado.
Que ambas aplicaciones indicaran «Bridge» no resolvió la resolución de nombres
El usuario confirmó que ambas aplicaciones mostraban una red de tipo Bridge en ZimaOS, pero mariadb todavía no se resolvía. Este es un matiz importante de Docker: los contenedores conectados de forma independiente al puente predeterminado de Docker no obtienen automáticamente el mismo comportamiento de DNS por nombre de servicio que los servicios conectados a una red de puente definida por el usuario.
Por lo tanto, que «ambos indiquen bridge» no demuestra suficientemente que un contenedor pueda resolver el nombre del otro.
Una reinstalación limpia no solucionó el comportamiento de la red
El usuario desinstaló Nextcloud y MariaDB, eliminó sus carpetas y volvió a instalarlos desde cero. Apareció el mismo error de nombre de host. Esta prueba negativa es útil porque muestra que el problema no era simplemente de datos obsoletos de MariaDB ni de una contraseña incorrecta puntual.
Una advertencia de acceso local de Nextcloud era un problema independiente
El usuario encontró una sugerencia en línea para activar allow_local_remote_servers. Aplicar esa configuración durante la instalación inicial hizo que Nextcloud dejara de iniciarse correctamente. La comunidad explicó que esa opción abordaba una regla de seguridad diferente de Nextcloud y no solucionaba la resolución de nombres de Docker.
La comunidad pasó entonces a realizar pruebas directas de la red de Docker
La persona que respondió solicitó comprobaciones de:
- si ambos contenedores estaban en ejecución;
- el modo de red real informado por Docker;
- si Nextcloud podía resolver mediante DNS o hacer ping a
mariadb; - la IP actual de Docker del contenedor de MariaDB.
Este es el paso correcto después de que las capturas de configuración dejan de explicar el comportamiento: probar la conexión desde el mismo espacio de nombres de red en el que se ejecuta Nextcloud.
Usar la IP del contenedor de MariaDB permitió instalar Nextcloud
La prueba decisiva fue sustituir mariadb:3306 temporalmente con la IP y el puerto de Docker del contenedor de MariaDB. El usuario original respondió que Nextcloud se estaba instalando.
El usuario que respondió resumió claramente el resultado:
-
mariadb:3306falló; - la IP directa de Docker en el puerto 3306 funcionó de inmediato.
Eso es una prueba contundente de que existe un problema de resolución del nombre del contenedor.
Una IP directa del contenedor es una solución alternativa de diagnóstico válida
Usar la IP demuestra que se puede acceder a la base de datos y permite continuar con la instalación. Para el caso original, fue una solución alternativa eficaz.
Pero las IP asignadas automáticamente a los contenedores pueden cambiar cuando un contenedor se recrea, se elimina o se conecta a una red diferente. Una configuración que dependa permanentemente de 172.17.x.x puede fallar más adelante sin ningún cambio en la configuración de Nextcloud o MariaDB.
Una red de Docker definida por el usuario es un diseño mejor a largo plazo
La arquitectura más sólida consiste en conectar Nextcloud y MariaDB a la misma red de Docker definida por el usuario y usar un nombre estable de servicio o contenedor como host de la base de datos. Docker proporciona DNS integrado en las redes definidas por el usuario específicamente para este propósito.
La edición nativa de YAML de ZimaOS permite definir este tipo de red con más facilidad que cuando se creó el hilo original. Usa el modelo de configuración actual de Compose de ZimaOS al crear una red compartida para Nextcloud y MariaDB.
Conserva deliberadamente los datos de MariaDB
Si MariaDB ya contiene una base de datos de Nextcloud operativa, no elimines su directorio de datos persistentes simplemente para cambiar la red de Docker. La pertenencia a la red puede cambiarse sin recrear el contenido de la base de datos.
Antes de cualquier migración, haz una copia de seguridad de la base de datos y anota el usuario actual, el nombre de la base de datos y la asignación de volúmenes.
No desactives los controles de seguridad de Nextcloud para reparar el DNS de Docker
Configuraciones como los dominios de confianza, el acceso remoto local al servidor y la configuración del proxy inverso protegen Nextcloud en la capa HTTP/de la aplicación. Solo deben modificarse cuando el error correspondiente de Nextcloud lo requiera.
A getaddrinfo El error del nombre de host de la base de datos pertenece a la capa de red de Docker.
Un árbol de diagnóstico mejor
- Confirma que MariaDB está ejecutándose y escuchando en el puerto 3306.
- Confirma que existe la base de datos prevista y que conoces las credenciales.
- Comprueba si Nextcloud puede resolver el nombre de host de la base de datos.
- Si falla la resolución del nombre de host, prueba la IP del contenedor de la base de datos.
- Si la IP funciona, corrige la red de Docker en lugar de cambiar las contraseñas de la base de datos.
- Mueve ambos contenedores a una red estable definida por el usuario para obtener un nombre de host duradero.
Preguntas frecuentes sobre Nextcloud y MariaDB
¿La propia MariaDB estaba averiada?
No. Su registro indicaba que estaba listo para aceptar conexiones.
¿Qué significaba que getaddrinfo para mariadb hubiera fallado?
Nextcloud no pudo resolver el nombre de host de la base de datos antes siquiera de llegar a la etapa de autenticación.
¿Qué confirmó el diagnóstico?
Usar la IP directa de Docker del contenedor de MariaDB permitió que Nextcloud comenzara la instalación.
¿Debería la IP directa del contenedor ser el host permanente de la base de datos?
Puede funcionar, pero una red de Docker compartida y definida por el usuario, con una resolución de nombres estable, es más sólida.
¿Reinstalar ambas aplicaciones solucionó el problema?
No. El usuario original realizó una reinstalación limpia y volvió a aparecer el mismo error de resolución del nombre de host.
