Rozwiązanie społecznościowe

Nextcloud nie może rozpoznać MariaDB w ZimaOS: diagnoza DNS w Dockerze i obejście problemu

A January 2026 troubleshooting thread where MariaDB was healthy but Nextcloud repeatedly failed with getaddrinfo for mariadb. Testing the MariaDB container IP let Nextcloud install, confirming a container-name resolution problem rather than a database password or local-access rule issue.

Ten wątek z stycznia 2026 roku dotyczący Nextcloud/MariaDB jest jednym z najbardziej przejrzystych przykładów tego, dlaczego sieć kontenerów należy diagnozować warstwa po warstwie. Użytkownik zainstalował osobne aplikacje Nextcloud i MariaDB, MariaDB osiągnęła prawidłowy stan „gotowa do obsługi połączeń”, ale Nextcloud nie powiódł się podczas początkowej konfiguracji z powodu getaddrinfo dla mariadb nie powiodło sięPonowna instalacja obu aplikacji i usunięcie ich folderów nie zmieniły błędu.

Przełom nastąpił, gdy społeczność sprawdziła rzeczywisty adres IP kontenera MariaDB w Dockerze. Nextcloud natychmiast rozpoczął instalację. Dowiodło to, że serwer bazy danych, dane uwierzytelniające i ścieżka TCP były zasadniczo sprawne, podczas gdy nazwa hosta mariadb nie było rozpoznawane z kontenera Nextcloud.

Użytkownik chciał osobnej bazy danych MariaDB dla Nextcloud

We wczesnych odpowiedziach omawiano alternatywy, takie jak obraz Nextcloud all-in-one z dołączonym PostgreSQL albo ręczne utworzenie bazy danych MariaDB i użytkownika za pomocą phpMyAdmin. Sugestie te nie wskazywały ostatecznego problemu. Użytkownik miał już działającą MariaDB i potrzebował, aby Nextcloud mógł się z nią połączyć.

Dzienniki MariaDB pokazały, że baza danych działa prawidłowo

Dziennik kontenera MariaDB w ZimaOS osiągnął stan gotowości do obsługi połączeń i nasłuchiwał na porcie 3306
Dziennik bazy danych osiągnął prawidłowy stan gotowości do obsługi połączeń, przez co awaria serwera MariaDB stawała się coraz mniej prawdopodobnym wyjaśnieniem.

Społeczność słusznie odradzała wielokrotne zmienianie haseł MariaDB i zmiennych środowiskowych po zainicjalizowaniu bazy danych. Wiele obrazów baz danych stosuje zmienne inicjalizacyjne tylko przy pierwszym utworzeniu katalogu danych.

Host bazy danych musi być osiągalny z wnętrza Nextcloud

Podczas początkowej konfiguracji Nextcloud w polu hosta bazy danych można podać nazwę hosta i port, na przykład:

mariadb:3306

Działa to tylko wtedy, gdy sieć Dockera zapewnia rozpoznawanie nazw dla mariadb z kontenera Nextcloud.

getaddrinfo dla mariadb nie powiodło się — czy to błąd kontenera związany z DNS?

Kluczowy błąd brzmiał:

php_network_getaddresses: getaddrinfo dla mariadb nie powiodło się

Dzieje się to, zanim MariaDB może zaakceptować lub odrzucić nazwę użytkownika i hasło. Jeśli nazwy nie można rozpoznać na adres IP, dane uwierzytelniające bazy danych nie są jeszcze weryfikowane.

Samo wyświetlanie „Bridge” przy obu aplikacjach nie rozwiązało rozpoznawania nazw

Użytkownik potwierdził, że obie aplikacje w ZimaOS wyświetlały sieć typu Bridge, ale mariadb nadal nie udało się tego rozwiązać. To ważny niuans Dockera: kontenery niezależnie podłączone do domyślnego mostu Dockera nie otrzymują automatycznie takiego samego rozpoznawania DNS nazw usług jak usługi podłączone do sieci mostowej zdefiniowanej przez użytkownika.

Dlatego stwierdzenie „oba mają tryb bridge” nie jest wystarczającym dowodem, że jeden kontener może rozpoznać nazwę drugiego kontenera.

Czysta reinstalacja nie naprawiła działania sieci

Użytkownik odinstalował Nextcloud i MariaDB, usunął ich foldery, a następnie zainstalował oba komponenty ponownie od zera. Ten sam błąd nazwy hosta pojawił się ponownie. Ten negatywny test jest przydatny, ponieważ pokazuje, że problem nie wynikał po prostu z nieaktualnych danych MariaDB ani z jednorazowo nieprawidłowego hasła.

Ostrzeżenie Nextcloud dotyczące dostępu lokalnego było odrębnym problemem

dziennik Nextcloud w ZimaOS informujący, że lokalny host nie został połączony, ponieważ narusza reguły dostępu lokalnego
Wątek źródłowy pokazał również ostrzeżenie Nextcloud dotyczące dostępu lokalnego, ale wystąpiło ono na innej warstwie niż nierozpoznana nazwa hosta MariaDB.

Użytkownik znalazł w Internecie sugestię włączenia allow_local_remote_servers. Zastosowanie tego ustawienia podczas początkowej konfiguracji spowodowało, że Nextcloud przestał się poprawnie uruchamiać. Społeczność wyjaśniła, że ta opcja dotyczyła innej reguły bezpieczeństwa Nextcloud i nie naprawiała rozpoznawania nazw w Dockerze.

Społeczność przeszła następnie do bezpośrednich testów sieci Docker

Osoba udzielająca odpowiedzi poprosiła o sprawdzenie:

  • czy oba kontenery działały;
  • rzeczywisty tryb sieci zgłoszony przez Dockera;
  • czy Nextcloud może rozpoznać lub pingować mariadb;
  • bieżący adres IP kontenera MariaDB w Dockerze.

To właściwy kolejny krok po tym, jak zrzuty ekranu konfiguracji przestają wyjaśniać zachowanie: należy przetestować połączenie z tej samej przestrzeni nazw sieciowych, w której działa Nextcloud.

Użycie adresu IP kontenera MariaDB umożliwiło instalację Nextcloud

Decydującym testem było zastąpienie mariadb:3306 tymczasowo, używając adresu IP i portu kontenera MariaDB w Dockerze. Użytkownik opisał, że Nextcloud rozpoczął wtedy instalację.

Osoba udzielająca odpowiedzi jasno podsumowała wynik:

  • mariadb:3306 zakończyło się niepowodzeniem;
  • bezpośredni adres IP Dockera na porcie 3306 zadziałał natychmiast.

To mocny dowód na problem z rozpoznawaniem nazwy kontenera.

Bezpośredni adres IP kontenera jest prawidłowym obejściem diagnostycznym

Użycie adresu IP potwierdza, że można dotrzeć do bazy danych, i pozwala kontynuować instalację. W opisanym przypadku było to skuteczne obejście problemu.

Jednak automatycznie przypisane adresy IP kontenerów mogą się zmienić po ponownym utworzeniu kontenera, jego usunięciu lub podłączeniu do innej sieci. Konfiguracja trwale zależna od 172.17.x.x może później przestać działać bez jakiejkolwiek zmiany konfiguracji Nextcloud lub MariaDB.

Sieć Docker zdefiniowana przez użytkownika to lepszy projekt długoterminowy

Bardziej niezawodna architektura polega na podłączeniu Nextcloud i MariaDB do tej samej, zdefiniowanej przez użytkownika sieci Docker oraz użyciu stabilnej nazwy usługi lub kontenera jako hosta bazy danych. Docker udostępnia wbudowany DNS w sieciach zdefiniowanych przez użytkownika właśnie w tym celu.

Obecna natywna edycja YAML w ZimaOS ułatwia definiowanie tego rodzaju sieci w porównaniu z czasem, gdy powstał wątek źródłowy. Podczas tworzenia współdzielonej sieci Nextcloud i MariaDB użyj obecnego modelu konfiguracji Compose w ZimaOS.

Celowo zachowaj dane MariaDB

Jeśli MariaDB zawiera już działającą bazę danych Nextcloud, nie usuwaj jej trwałego katalogu danych tylko po to, aby zmienić konfigurację sieci Docker. Członkostwo w sieci można zmienić bez odtwarzania zawartości bazy danych.

Przed każdą migracją wykonaj kopię zapasową bazy danych i zapisz bieżącego użytkownika, nazwę bazy danych oraz mapowanie woluminów.

Nie wyłączaj mechanizmów kontroli bezpieczeństwa Nextcloud, aby naprawić DNS Dockera

Ustawienia takie jak zaufane domeny, dostęp lokalnego serwera zdalnego i konfiguracja odwrotnego proxy chronią Nextcloud na poziomie HTTP/aplikacji. Należy je zmieniać tylko wtedy, gdy wymaga tego odpowiedni błąd Nextcloud.

A getaddrinfo Błąd dotyczący nazwy hosta bazy danych należy do warstwy sieci Docker.

Lepsze drzewo diagnostyczne

  1. Potwierdź, że MariaDB działa i nasłuchuje na porcie 3306.
  2. Potwierdź, że zamierzona baza danych istnieje i że znane są dane uwierzytelniające.
  3. Sprawdź, czy Nextcloud może rozpoznać nazwę hosta bazy danych.
  4. Jeśli rozpoznawanie nazwy hosta kończy się niepowodzeniem, przetestuj adres IP kontenera bazy danych.
  5. Jeśli adres IP działa, napraw sieć Docker zamiast zmieniać hasła do bazy danych.
  6. Przenieś oba kontenery do stabilnej, zdefiniowanej przez użytkownika sieci, aby zapewnić trwałą nazwę hosta.

FAQ dotyczące Nextcloud i MariaDB

Czy sama MariaDB była uszkodzona?

Nie. Jego dziennik wskazywał, że był gotowy na połączenia.

Co oznaczał komunikat „getaddrinfo for mariadb failed”?

Nextcloud nie mógł rozpoznać nazwy hosta bazy danych, zanim w ogóle dotarł do etapu uwierzytelniania.

Co potwierdziło diagnozę?

Użycie bezpośredniego adresu IP kontenera MariaDB w Dockerze pozwoliło Nextcloud rozpocząć instalację.

Czy bezpośredni adres IP kontenera powinien być stałym hostem bazy danych?

Może działać, ale współdzielona, zdefiniowana przez użytkownika sieć Docker ze stabilnym rozpoznawaniem nazw jest bardziej niezawodna.

Czy ponowna instalacja obu aplikacji rozwiązała problem?

Nie. Użytkownik źródłowy wykonał czystą ponowną instalację, a ten sam błąd rozpoznawania nazwy hosta pojawił się ponownie.