외부 저장소 추가 (Local directory mount)
이 과정은 Portainer 같은 Docker 관리툴을 이용하면 편합니다. Portainer를 이용한 방법을 설명 드립니다.
1. Portainer 접속 후 Nextcloud Container에 진입해 "Duplicate/Edit"를 선택 합니다.
"Advanced container settings"을 찾아 "Volumes" 선택합니다.
" Volume mapping"에서 "map additional volume"을 선택합니다.
"container" 필드는 nextcloud에서 사용될 경로 입니다. 위치 입력 후 오른쪽 "Blind" 옵션 선택 합니다.
제 경우는 nextcloud root 및 data 디렉토리 밑에 임의 위치를 설정했습니다.
"host" 필드에는 NAS에 위치한 마운트할 대상물의 절대 경로를 입력합니다.
"Actions"에서 "Deploy the container"로 컨테이너를 재빌드 해줍니다.
마운트할 외부 디렉토리에 "777" 권한을 부여 합니다.
# chmod 777 -R /volume1/xxxx (host에서 설정한 디렉토리)
이제는 Nextcloud에서 외부저장소를 설정해줄 차례 입니다.
Nextcloud에 관리자로 접속 후 "앱"에서 "External storage support" 앱을 찾아 설치해 줍니다.
관리자 설정 진입 후 "관리 > "외부 저장소"를 선택하고 아래 값을 넣으 줍니다.
폴더 이름 : Nextcloud에서 표시될 폴더 이름
설정 : 위에서 Binding한 nextcloud container 내부 경로 입력
설정이 완료 됐으면 아래와 같이 외부저장소가 추가된 것을 확인 할 수 있습니다.
Portainer > nextcloud 콘솔 > occ files:scan --all 실행
(도커 이미지가 공식이미지일 경우 sudo -u www-data php occ files:scan --all 입니다.)
[Trouble Shooting]
1. "@eaDir" 삭제 방법
# cd /volume1
# find -type d -name '@eaDir' -print0 | xargs -0 rm -rfv
# find -name 'thumbs.db' -exec rm -vf {} \;
# find -name 'Thumbs.db' -exec rm -vf {} \
2. "Entry "...." will not be accessible due to incompatible encoding" 관련 문제는 한글이나 특수문자로된 폴더/파일명 문제 입니다.
# ./convmv -f utf-8 -t utf-8 -r --notest --nfc <nextcloud-data-folder>
Portainer > nextcloud 콘솔 > occ files:scan --all 재실행
* convmv가 없어 실행 불가 시 "wget http://www.j3e.de/linux/convmv/convmv-2.05.tar.gz"으로 받아
"tar xzvf convmv-2.05.tar.gz"로 압축해제 후 실행 하시면 됩니다.