NextCloud에서 Internal Server Error 발생시 해결 방법
1. 발생원인 파악
OMV의 docker 환경에서 NextCloud를 설치해 정상적으로 사용하던 중 갑자기 아래와 같은 Internal Server Error가 발생했다. 국내외 블로그 및 여러 사이트를 찾아 보았지만 한동안 해결 방법을 찾지 못하다가 최근 해결 방법을 찾게 되어 공유하고자 한다.
우선, 위와 같은 Internal Server Error 메시지는 OMV 머신을 재부팅 하거나, container를 다시 deploy하는 와중에 MariaDB에 할당된 IP주소가 변경되면서 발생한다. 다시 말하면, NextCloud 입장에서는 참조하던 DB서버가 갑자기 사라져 버린 것이다.
위에 그림에서 보면, OMV 머신이 재부팅된 이후 IP 주소는 172.17.0.2이나, NextCloud의 config.php에 설정된 DB 서버의 주소는 172.17.0.4이다(아래 그림).
2. 첫 번째 시도(시행착오)
어? 그러면 MariaDB를 고정 IP주소로 할당하면 되지 않을까? Portainer로 접속, MariaDB 컨테이너를 선택하고 "Duplicate/Edit" 버튼을 눌러 편집 모드로 들어갔다.
"Network" 탭에서 내부 IP주소 대역대로 IP 주소를 설정하고 "Deploy the container" 버튼을 누르니 아래와 같은 에러 메시지를 출력하면서 실패했다.
위에서 "bridge" 네트워크에서는 고정 IP주소 할당이 불가능한 모양이다.
3. 문제 해결
3-1. 신규 네트워크 설정
Portainer의 "Networks" 메뉴(아이콘)을 클릭하여 Network list에서 "Add network" 버튼을 클릭한다.
아래처럼 새로 만들 네트워크 이름(ServerNetwork), 드라이버(bridge)를 선택하고, 원하는 서브넷과 게이트웨이를 입력한 후 아래쪽의 "Create the network" 버튼을 클릭한다.
나의 경우, 원래 bridge 네트워크 대역이 172.17.0.0/16 대역 이었으므로, 여기서는 172.20.0.0/16 대역으로 설정하였다.
3-2. 컨테이너 수정
이제 MariaDB와 NextCloud 컨테이너에 대한 네트워크 드라이버 변경 및 IP주소를 설정해 줄 차례이다. MariaDB에 고정IP 주소 설정이 필요하고 NextCloud에서 MariaDB 참조가 필요하므로, 두 컨테이너를 같이 수정해 주어야 한다.
아래 그림처럼 MariaDB 컨테이너 수정모드로 들어가 "Network" 탭을 선택하고, 네트워크 드라이버를 아까 만든 "ServerNetwork"로, IP주소를 아래처럼 172.20 대역으로 수정한 후 Deploy 해준다.
NextCloud도 마찬가지로 아래처럼 수정한다.
3-3. NextCloud 환경설정 수정
이제 NetworkCloud의 콘솔로 들어가 "/config/www/nextcloud/config/config.php" 파일에서 dbhost 부분을 수정된 MariaDB IP 주소를 입력한 후 다시 저장한다.
이제 NextCloud에 다시 접속해 보면 아래와 같이 정상 접속되는 것을 확인할 수 있다. 물론 이제부터는 시스템 재부팅에 영향을 받지도 않는다.