기존 CasaOS 튜토리얼은 여전히 올바른 아키텍처 방향을 제시합니다. 일반적인 다중 사용자 환경에서 Nextcloud는 실제 데이터베이스를 사용해야 하지만, 2024년 후속 글에서는 “Connection refused” 오류가 해결되지 않았습니다. 사용자는 Nextcloud와 MariaDB를 브리지 네트워크에 배치했지만, 컨테이너는 여전히 서로 연결되지 않았습니다.
현재 더 안전한 방식은 두 서비스를 하나의 Docker Compose 프로젝트 또는 하나의 공유 사용자 정의 네트워크에서 실행하고, 컨테이너 IP가 아닌 MariaDB 서비스 이름을 Nextcloud에 지정하는 것입니다. 컨테이너 IP는 변경될 수 있기 때문입니다.
원문 스레드에서 실제로 확인된 내용
2023년 원문 게시물에는 튜토리얼 링크가 포함되어 있었습니다. 2024년에는 다른 사용자가 Nextcloud 관리자 계정을 설정하는 중 SQLSTATE[HY000] [2002] Connection refused 오류가 발생했다고 보고하며, 컨테이너가 서로 통신하지 못하는 것 같다고 추측했습니다. 이후 스레드에서는 해결 방법을 확인한 답변이 나오지 않았습니다.
따라서 “두 컨테이너를 모두 브리지 네트워크에 배치하라”는 방법을 완전한 해결책으로 제시해서는 안 됩니다.
공유 Compose 네트워크와 서비스 이름 사용
현재 Nextcloud MariaDB Compose 예시에서는 MariaDB 서비스 이름을 db로 지정하고 Nextcloud 컨테이너에 MYSQL_HOST=db를 설정합니다. 그러면 Docker의 내부 DNS가 서비스 이름을 통해 데이터베이스를 확인합니다.
이는 임시로 할당된 172.x.x.x 컨테이너 주소를 입력하는 것보다 안정적입니다.
양쪽의 데이터베이스 인증 정보 일치시키기
Nextcloud에는 MariaDB가 생성하는 것과 동일한 데이터베이스 이름, 사용자 이름 및 비밀번호가 필요합니다. 최신 Nextcloud 데이터베이스 가이드는 운영 환경에 적합한 배포 방식으로 MariaDB를 권장하며, 필요한 데이터베이스 값을 설명합니다.
호스트 이름은 확인되지만 인증에 실패한다면 스택을 다시 만들기 전에 MariaDB 환경 변수, Nextcloud 설정값 및 데이터베이스 로그를 비교하세요.
데이터베이스와 Nextcloud 데이터를 모두 영구 저장하기
MariaDB 상태를 컨테이너 레이어 내부에만 저장하지 마세요. /var/lib/mysql과 배포한 정확한 이미지에서 정의한 Nextcloud 애플리케이션 및 데이터 경로를 영구 저장해야 합니다. 데이터베이스는 Nextcloud 설정 및 사용자 데이터와 함께 백업하세요.
Nextcloud 배포 가이드에서는 데이터베이스 및 애플리케이션 저장소와 대용량 사용자 파일을 분리하는 방법을 안내합니다.
결론
포럼의 “Connection refused” 후속 문제는 해결되지 않은 상태로 남아 있습니다. 현재 CasaOS 또는 ZimaOS에 배포할 때는 하나의 Compose 스택 또는 하나의 공유 Docker 네트워크를 사용하고, 서비스 이름으로 Nextcloud를 MariaDB에 연결하며, 인증 정보를 일치시키고, 애플리케이션과 데이터베이스 저장소를 모두 영구 저장하세요.
