Solução da comunidade

Nextcloud e MariaDB no CasaOS: corrigir o erro de ligação recusada

A CasaOS Nextcloud tutorial later received a Connection refused report from a user whose Nextcloud and MariaDB containers were not communicating.

O antigo tutorial do CasaOS continua a apontar na direção arquitetural certa — o Nextcloud deve utilizar uma base de dados real para uma utilização normal por vários utilizadores —, mas o seguimento de 2024 nunca resolveu o erro «Connection refused». O utilizador tinha colocado o Nextcloud e o MariaDB numa rede bridge, mas os contentores continuavam sem conseguir comunicar.

O padrão atual mais seguro consiste em executar ambos os serviços no mesmo projeto Docker Compose ou numa única rede definida pelo utilizador e apontar o Nextcloud para o nome do serviço MariaDB, em vez de utilizar um IP de contentor que pode mudar.

O que o tópico original confirmou realmente

A publicação original de 2023 tinha uma ligação para um tutorial. Em 2024, outro utilizador relatou SQLSTATE[HY000] [2002] Connection refused durante a configuração da conta de administrador do Nextcloud e suspeitou de que os contentores não estavam a comunicar entre si. Nenhuma resposta posterior no tópico confirmou uma solução.

Isto significa que «colocar ambos em bridge» não deve ser apresentado como uma solução completa.

Utilize uma rede Compose partilhada e o nome do serviço

O atual exemplo Compose do Nextcloud com MariaDB utiliza um serviço MariaDB chamado db e define MYSQL_HOST=db para o contentor do Nextcloud. O DNS interno do Docker resolve então a base de dados pelo nome do serviço.

Isto é mais robusto do que introduzir o endereço temporário de um contentor 172.x.x.x.

Faça corresponder as credenciais da base de dados em ambos os lados

O Nextcloud precisa do mesmo nome da base de dados, utilizador e palavra-passe que o MariaDB cria. O atual guia de bases de dados do Nextcloud recomenda o MariaDB para implementações de estilo produtivo e documenta os valores de base de dados necessários.

Se o nome do anfitrião for resolvido, mas a autenticação falhar, compare as variáveis de ambiente do MariaDB, os valores do Nextcloud e os registos da base de dados antes de recriar a stack.

Persista a base de dados e os dados do Nextcloud

Não armazene o estado do MariaDB apenas na camada do contentor. Persista /var/lib/mysql e os caminhos da aplicação e dos dados do Nextcloud definidos pela imagem exata que implementar. Faça uma cópia de segurança da base de dados juntamente com a configuração do Nextcloud e os dados dos utilizadores.

O guia de implementação do Nextcloud ajuda a separar o armazenamento da base de dados e da aplicação dos ficheiros de utilizador em grande volume.

Conclusão

O seguimento do fórum sobre «Connection refused» ficou sem resolução. Para uma implementação atual no CasaOS ou ZimaOS, utilize uma única stack Compose ou uma única rede Docker partilhada, ligue o Nextcloud ao MariaDB através do nome do serviço, mantenha as credenciais consistentes e persista o armazenamento da aplicação e da base de dados.