Rozwiązanie społecznościowe

Nextcloud i MariaDB w CasaOS: naprawa odmowy połączenia

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

Stary samouczek CasaOS nadal wskazuje właściwy kierunek architektoniczny — podczas typowego użytkowania przez wielu użytkowników Nextcloud powinien korzystać z prawdziwej bazy danych — jednak uzupełnienie z 2024 roku nie rozwiązało błędu „Connection refused”. Użytkownik umieścił Nextcloud i MariaDB w sieci typu bridge, ale kontenery nadal nie mogły się połączyć.

Bezpieczniejszym obecnie rozwiązaniem jest uruchomienie obu usług w jednym projekcie Docker Compose lub we wspólnej sieci zdefiniowanej przez użytkownika oraz wskazanie w Nextcloud nazwy usługi MariaDB, a nie adresu IP kontenera, który może się zmienić.

Co faktycznie potwierdzono w wątku źródłowym

Oryginalny wpis z 2023 roku zawierał link do samouczka. W 2024 roku inny użytkownik zgłosił błąd SQLSTATE[HY000] [2002] Connection refused podczas konfiguracji konta administratora Nextcloud i podejrzewał, że kontenery nie komunikują się ze sobą. Żadna późniejsza odpowiedź w wątku nie potwierdziła rozwiązania problemu.

Oznacza to, że samo „umieszczenie obu usług w sieci bridge” nie powinno być przedstawiane jako kompletne rozwiązanie.

Użyj wspólnej sieci Compose i nazwy usługi

Obecny przykład Compose dla Nextcloud i MariaDB korzysta z usługi MariaDB o nazwie db i ustawia MYSQL_HOST=db dla kontenera Nextcloud. Wewnętrzny DNS Dockera rozwiązuje następnie bazę danych na podstawie nazwy usługi.

Jest to trwalsze rozwiązanie niż wpisywanie tymczasowego adresu kontenera 172.x.x.x.

Dopasuj dane uwierzytelniające bazy danych po obu stronach

Nextcloud potrzebuje tej samej nazwy bazy danych, użytkownika i hasła, które tworzy MariaDB. Aktualny przewodnik po bazie danych Nextcloud zaleca MariaDB w przypadku wdrożeń produkcyjnych i opisuje wymagane wartości bazy danych.

Jeśli nazwa hosta jest rozpoznawana, ale uwierzytelnianie kończy się niepowodzeniem, przed ponownym utworzeniem stosu porównaj zmienne środowiskowe MariaDB, wartości Nextcloud oraz dzienniki bazy danych.

Trwale przechowuj zarówno bazę danych, jak i dane Nextcloud

Nie przechowuj stanu MariaDB wyłącznie w warstwie kontenera. Utrwal /var/lib/mysql oraz ścieżki aplikacji i danych Nextcloud zdefiniowane przez dokładnie używany obraz. Twórz kopie zapasowe bazy danych razem z konfiguracją Nextcloud i danymi użytkowników.

Przewodnik wdrażania Nextcloud pomaga rozdzielić pamięć masową bazy danych i aplikacji od dużych zbiorów plików użytkowników.

Podsumowanie

Problem „Connection refused” opisany w uzupełnieniu na forum pozostał nierozwiązany. W przypadku obecnego wdrożenia CasaOS lub ZimaOS użyj jednego stosu Compose albo jednej wspólnej sieci Dockera, połącz Nextcloud z MariaDB za pomocą nazwy usługi, zachowaj spójne dane uwierzytelniające oraz trwale przechowuj zarówno dane aplikacji, jak i bazy danych.