개요
TrueNAS는 오픈소스NAS OS중에서는 가장 강력하지만, 유저편의적인 부분은 많이 부족합니다. 특히, 개인 조립NAS를 헤놀로지로 입문한 경우, DSM의 높은 편의성 덕분에, TrueNAS를 다루는 것에 엄청난 벽을 느끼게 되고, 이내 적응하지 못한 채 떠나버리게 되죠.
이런 부분을 그나마 커버하기 위해 TrueNAS 안에는 여러 도커 이미지를 활용한 Apps기능이 있고, 이를 통해 부족한 부분을 메꾸어 사용할 수 있습니다.
그 중에서도, NAS OS를 고민했던 분들이라면 한 번쯤은 이름을 접해봤을 Nextcloud를 설치하고 TrueNAS의 Dataset과 연결해보겠습니다.
Nextcloud 설치하기
Dataset 구성하기
Nextcloud는 적어도 3개(앱 데이터, DB, DB백업)의 저장소를 필요로 합니다.
이 글에선 아래와 같이 3개의 dataset을 구성하고 www-data에게 권한을 모두 설정해줬습니다.
원래 권장되는 것은 소유자(Owner)를 www-data로 바꿔 주는 것이지만,
- 직접 설치해보니 db용으로 사용되는 Dataset의 소유자는 자동적으로 netdata로 바뀌어 버리기도 했고
- 직접 TrueNAS내부의 다른 Dataset을 넘겨줄 예정이기도 해서
www-data:www-data에게 모든 권한을 설정해주는 것으로 해결했습니다.
또한, db, dbbackup dataset안에는 다른 파일이 일체 존재하면 안됩니다. 숨김 파일, 혹은 휴지통이 활성화되어 있다면 해당 파일까지 제거해주셔야 db 컨테이너 deploy과정에서 에러가 발생하지 않습니다.
Apps에서 설치하기
Nextcloud는 TrueNAS 카탈로그에 공식 앱으로 등록되어 있기 때문에, 검색으로 바로 찾으실 수 있습니다. Install을 클릭해 진행합니다.
인증서를 선택하는 화면이 있는데, TrueNAS기본 인증서를 선택해주고 넘어갑니다.
이후, 리버스 프록시를 적용할 예정이라면 인증서를 ‘없음’ 선택하고 넘어가야 합니다.
기본 관리자로 사용할 계정을 설정합니다.
그 아래 Install ffmpeg, Install smbclient는 체크하고 진행합니다.
그리고 위에서 구성했던 dataset 3가지를 Data Volume, Postgres Data Volume(DB), Postgres Backup Volume(DB backup) 매칭시켜줍니다.
그 외에 추가적으로 Extra Host Path Volumes에서 필요한 dataset을 같이 넘겨줄 수 있습니다. 이 글에서는 제가 사용하는 임의의 dataset을 pod내부에 /mnt/sample에 넘겨보겠습니다. 이렇게 넘긴 데이터는 추후 nextcloud의 외부 저장소 플러그인을 통해 불러올 수 있습니다. 추가적으로 넘겨주는 저장소 또한 www-data:www-data에 권한 설정이 필요하므로 잊으시면 안됩니다.
2024년 5월 15일 변경 내용 : Nextcloud 29 업데이트에 따라 필수구성되어야 하는 Dataset에 변동사항이 있습니다 아래 글을 참고해주세요
TrueNAS에 Nextcloud 29버전 업데이트 시 Dataset 재설정하기
개요얼마 전 Nextcloud Hub 8 (29.0.0)이 발표되면서, TrueNAS 공식 카탈로그 앱 이미지도 계속해서 마이너 업데이트 중입니다.이 중 변경점으로 userdata를 분리하면서, Storage구성 시 변경점이 발생하여 짧
worklazy.net
기본적으로 Cronjob 구성은 강력하게 권장되는 요소이므로 체크해서 활성화시켜줍니다.
TrueNAS 기본값은 15분마다 작동되는 것인데, Nextcloud 개발자 권장은 매 5분마다 작동시키는 것입니다. 취향에 맞게 설정하고 넘어가면 됩니다.
(5분마다 작동되기를 원한다면 */15를 */5로 수정하면 됩니다.)
이 과정이 누락되거나, 시간 텀이 지나치게 길다면 아래 사진처럼 Nextcloud 내부에서 경고를 띄웁니다.
마지막으로, Nextcloud에 자원 할당을 제한적으로 하고 싶다면 설정해주고 Install을 클릭해 설치를 시작합니다.
사양에 따라 첫 구성 시 상당한 시간이 소요되므로 인내심이 필요할 수 있습니다 =ㅅ=.
Nextcloud 초기 설정하기
외부 파일/폴더 인식 설정
Nextcloud는 app 외부에서 발생한 파일 및 폴더의 변화를 감지하지 못합니다.
그래서 config파일에 별도 한 줄을 추가하는 과정이 필요합니다.
TrueNAS 쉘에 접속하여 아래와 같이 입력합니다.
nano /mnt/apps/nextcloud/nextcloud-data/config/config.php
경로는 개별 환경상 dataset주소를 따라가야 합니다.
파일 맨 아래 하단에 아래와 같이 한 줄을 삽입합니다.
'filesystem_check_changes' => 1,
저장 후 Nextcloud를 재실행하면 됩니다.
도메인 연결하기
보유한 도메인을 연결하여 접속할 경우 config.php파일을 일부 수정해야 합니다.
nano /mnt/apps/nextcloud/nextcloud-data/config/config.php
수정해야 할 부분은 총 2곳입니다.
trusted_proxies와 trusted_domains입니다.
리버스 프록시를 구성하여 운용중일 경우 해당 주소를 trusted_proxies에 기입합니다.
그 후, 연결할 도메인을 trusted_domains에 기입하면 됩니다.
기존에 적혀있던 번호에 하나씩 붙여가며 기입하시면 되며, 마지막에 “,”을 찍어주는 것을 잊지 마세요!
이후, 아래의 두 줄을 지워줍니다. 접속 경로와 무관하게 명기된 주소를 사용하게 하는 옵션으로, 리버스 프록시 사용 시 불필요합니다.
'overwritehost' => '10.10.10.10:9001',
'overwriteprotocol' => 'http',
저장 후 pod을 재실행해주시면 됩니다.
Nextcloud 외부 저장소(External Storage) 설정
일단 Nextcloud가 실행되었다면 Web Portal버튼을 클릭해 접근할 수 있습니다.
Status가 Deploying이라 해도, 아래처럼 nextcloud 컨테이너의 log를 확인할 수 있는 단계에 왔다면, 접속 가능한 상태인 겁니다.
처음 생성 당시 설정했던 관리자 계정을 입력하여 로그인 해 줍니다.
아래처럼 각 사용자의 userdata가 TrueNAS의 nextcloud-data(./data/user/files) dataset에 저장되고 있음을 알 수 있습니다.
상단의 프로필 아이콘을 클릭해 ‘앱’ 메뉴로 이동합니다.
검색창에서 ‘External Storage’를 검색하면 External Storage Support라는 앱을 볼 수 있습니다. ‘사용함’을 클릭하여 활성화 해 줍니다.
다시 우측 상단의 프로필 아이콘을 클릭하여 ‘관리자 설정’ 항목으로 이동합니다.
좌측 메뉴 중 ‘외부 저장소’를 클릭한 뒤, 추가적인 외부 저장소를 지정할 수 있습니다.
일반적으로는 여기서 SMB를 이용해서 외부 저장소를 연동하는 방식을 많이 채택하지만, 맨 위에서 nextcloud컨테이너에 추가적으로 볼륨매핑했던 dataset을 그대로 가져오겠습니다.
이 방식은 SMB로 연결된 저장소보다 더 좋은 퍼포먼스를 보여줍니다.
폴더 이름, 혹은 지정사용자의 경우 개인 환경에 맞게 설정하시면 됩니다. Nextcloud 내에 여러 개의 계정이 있고, 특정 저장소를 특정인만 접근할 수 있게 설정해야 한다면, 사용자를 특정하여 지정할 수 있습니다.
이와 같이 설정을 완료한 후, 파일 탭으로 돌아가 보시면, 아래처럼 저장소가 연결된 것을 확인할 수 있습니다.
‘데이터베이스에 일부 인덱스가 없습니다’ 해결하기
보안 및 설치 경고 쪽에서 아래와 같은 에러가 나타날 수 있습니다.
일반적인 환경이라면 occ db:add-missing-indices명령어를 실행하는 것이 어렵지 않겠지만, 우리는 TrueNAS 속 환경이므로 약간의 까다로운 절차를 거쳐야 합니다.
일단 Apps내에서 Nextcloud 쉘로 이동합니다.
/var/www/html 경로로 이동하여 su를 입력해 root계정으로 전환합니다.
(해외 커뮤니티 피셜 컨테이너에 sudo가 없다고 합니다)
cd /var/www/html
pwd
su
아래와 같이 입력합니다.
su -m www-data -c 'php $(pwd)/occ maintenance:mode --on'
유지보수 모드가 활성화되었다는 메세지가 출력됩니다.
이 때 Nextcloud에 접속해보면 하단과 같이 유지보수 중이라는 메세지가 출력됩니다.
이번엔, 아래와 같은 명령어를 입력해 줍니다. 그러면, 하단과 같이 oc_filecache table updated successfully 문구를 확인할 수 있습니다.
su -m www-data -c 'php $(pwd)/occ db:add-missing-indices'
다시 아래 명령어를 입력하면 유지보수 모드가 종료되었다는 문구가 출력되는 것을 확인할 수 있습니다.
이와 동시에, Nextcloud에 다시 접근 가능해지며, 데이터베이스에 일부 인덱스가 없다는 메세지가 사라진 것을 확인할 수 있습니다.
su -m www-data -c 'php $(pwd)/occ maintenance:mode --off'
‘기본 국가 번호가 설정되지 않았습니다.’ 해결하기
위의 요령으로 config.php 편집기를 열어준 뒤, 아래 내용을 추가하고 저장합니다.
해당 줄이 마지막 줄이라면 반점(,)을 찍지 마시고, 중간에 삽입하는 거라면 반점을 찍어주셔야 합니다.
'default_phone_region' => 'KR',
이후 Nextcloud를 재시작하면 기본 국가 번호가 설정되지 않았다는 메세지가 사라졌음을 확인할 수 있습니다.
‘서버 유지관리 창의 시작 시간이 설정되지 않았습니다.’ 해결하기
마찬가지로 config.php 편집기를 열어 아래 내용을 추가하고 저장해야 합니다.
'maintenance_window_start' => 1,
해당 숫자는 UTC시간대를 따라갑니다. 한국 시간은 UTC+9이므로, 값을 1시로 설정하는 것은 곧 10시로 설정한다는 뜻과 같습니다. 해당 작업은 서버에서 수행되는 작업이 있을 경우 최대 4시간까지 시작을 연장합니다. 유지관리 작업이 언제 시작되어도 무관하다고 하면 값을 100으로 설정하면 됩니다.
config.php를 편집하는 것이 내키지 않는다면, pod내부 쉘에서 명령어를 통해 수행할 수도 있습니다.
아래 예시는 한국시간으로 밤10시(22시)에 수행되도록 지시하는 명령입니다.
cd /var/www/html
pwd
su
su -m www-data -c 'php $(pwd)/occ config:system:set maintenance_window_start --type=integer --value=13'
‘이메일 서버 설정이 입력되지 않았거나 검증되지 않았습니다.’ 해결하기
맨 처음 Nextcloud 설치 시 설정했던 최초 관리자 계정으로 로그인한 뒤, 개인 설정 – 개인 정보 탭으로 이동하여 알람용으로 사용할 이메일 주소를 입력합니다.
이 과정 없이 SMTP설정만 진행하면, Nextcloud가 튕겨냅니다.
다시 관리자 설정 – 기본 설정 탭에 가서 이메일 서버 항목에 필요한 정보를 채워 넣습니다.
메일 서비스 공급자의 SMTP 관련 설정은, 보통 IMAP설정 쪽에 있습니다.
이후 테스트 메일을 발송하면, 제대로 작동하는 것을 확인할 수 있습니다
관련 글
2025.01.22 - [Nextcloud] - TrueNAS + Nextcloud 업데이트 시 '명령줄 업데이터를 사용하세요.' 대처법
TrueNAS + Nextcloud 업데이트 시 '명령줄 업데이터를 사용하세요.' 대처법
개요최근 사용중인 Nextcloud의 업데이트를 미루다가 한 번에 몰아서 하고 나니 아래같은 메세지를 받았습니다.심지어 문서를 눌렀더니 해당 내용이 아닌 nextcloud wiki메인페이지로 보내버려서 하
worklazy.net
2025.01.22 - [Nextcloud] - Redis로 Nextcloud 성능 끌어올리기
Redis로 Nextcloud 성능 끌어올리기
개요구글에서 Nextcloud를 검색해보면 나오는 많은 글들 중 하나가 Nextcloud가 원래 이렇게 느리냐? 입니다.제 사용환경에서는 그렇게까지 느리다곤 생각되진 않긴 하지만, PHP로 작동되는만큼 태생
worklazy.net
2025.01.22 - [Nextcloud] - Nextcloud에서 Office문서 편집하기
Nextcloud에서 Office문서 편집하기
개요제가 시놀로지를 사용하면서 편하다고 느꼈던 앱 중 가장 좋았던 건 시놀로지 오피스(Synology Office)였습니다. 시놀로지 드라이브(Synology Drive)와 하나처럼 엮여서 자료를 동기화하고, NAS에서
worklazy.net
2025.01.23 - [Nextcloud] - TrueNAS에 Nextcloud 29버전 업데이트 시 Dataset 재설정하기
TrueNAS에 Nextcloud 29버전 업데이트 시 Dataset 재설정하기
개요얼마 전 Nextcloud Hub 8 (29.0.0)이 발표되면서, TrueNAS 공식 카탈로그 앱 이미지도 계속해서 마이너 업데이트 중입니다.이 중 변경점으로 userdata를 분리하면서, Storage구성 시 변경점이 발생하여 짧
worklazy.net
2025.01.23 - [Nextcloud] - Cloudflare Tunnel 환경에서 Nextcloud 구성 시 오류 해결하기
Cloudflare Tunnel 환경에서 Nextcloud 구성 시 오류 해결하기
개요Nextcloud 초기 설치 이후 관리자 설정으로 진입하면 해결해야 할 오류들을 친절하게(?) 띄워줍니다.일부분은 Nextcloud 자체적으로 해결할 수 있지만, 몇몇 오류는 리버스 프록시에서 해결해줘
worklazy.net
2025.01.23 - [Nextcloud] - Nextcloud 계정 생성 시 초기 파일 수정하기
Nextcloud 계정 생성 시 초기 파일 수정하기
개요Nextcloud 구축 후 새로운 계정을 생성할 때마다 아래처럼 필요없는 파일들이 왕창 생성됩니다.해당 파일들을 제거하는 것과 Readme.md를 수정하여 신규 사용자에게 안내할 내용을 기입하는 등
worklazy.net