환경설정

관리자 계정 만들기

웹브라우저를 통해 Nextcloud에 접속을 합니다. 처음 접속 시 아래와 같이 관리자 계정 생성 화면이 나옵니다.

데이터 폴더는 "/data"를 입력해주시고, 데이터베이스 항목은 앞서 mariaDB 생성 시 설정한 값을 넣어 줍니다.

admin_setup.png

이메일 서버 및 기본 국가 번호 설정

Nextcloud의 "관리자 설정"으로 들어갑니다.

초기 접속 시 smtp와 국가번호 관련 경고 화면이 나옵니다.

smtp_err.png

1. smtp : 관리자 설정 > 기본 설정 > 이메일 서버에 smtp 관련 사항을 넣어줍니다.

2. 국가 번호 설정  : "config/www/nextcloud/config/config.php" 파일을 수정합니다.

config_location.png

아래 문장을 "config.php"에 추가해 줍니다.

'default_phone_region' => 'KR',

Redis 설정

"config/www/nextcloud/config/config.php" 파일을 수정합니다.

config_location.png

아래 문장을 "config.php"에 추가해 줍니다.

'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
    array
    (
 'host' => 'redis',
    'port' => '6379',
    'timeout' => '0',
    'dbindex' => '0',
    ),

대용량 파일 업로드 설정

php.ini 수정이 필요 합니다.

Docker Container 콘솔에서 "/etc/php8x"에서 직접 수정을 해줘도 되지만 이 경우 Docker image가 업데이트 될 시

초기화가 되므로 Mapping된 volume에서 수정하시는 것을 추천 드립니다.

"config > php > php-local.ini"를 열어서 아래 값들을 수정해 줍니다.

php-local_location.png

max_execution_time = 3600
max_input_time = 3600
memory_limit = 3072M
post_max_size = 51200M
upload_max_filesize = 51200M
max_file_uploads = 1000

이번에는 "/config/nginx/site-confs/default.conf"를 열어서 위와 같은 방법으로 수정해 줍니다.

client_max_body_size = 51200M

마지막으로 대용량 업로드가 끊길 시 옵션사항으로 청크를 설정해 줍니다. (기본 청크 값 0에서 500MB로 수정)

단, 작은 파일들이 많을 시 느려질 수 있으므로 사용자 환경에 맞게 설정이 필요 합니다. 

sudo docker exec -u (PUID) nextcloud php81 /config/www/nextcloud/occ config:app:set files max_chunk_size --value 524288000

(PUID)는 앞장에서 설명한 자신의 값을 넣어줍니다.

chunk.png

위 설정이 완료 됐으면 아래 사항을 최종 확인해 줍니다.

file_size.png

NAS에 있는 외부 저장소 추가

이 과정은 Portainer 같은 Docker 관리툴을 이용하면 편합니다. Portainer를 이용한 방법을 설명 드립니다.

1. Portainer 접속 후 Nextcloud Container에 진입해 "Duplicate/Edit"를 선택 합니다.

portainer_container_edit.png

"Advanced container settings"을 찾아  "Volumes" 선택합니다.

" Volume mapping"에서 "map additional volume"을 선택합니다.

Advanced_container_settings.png

"container" 필드는 nextcloud에서 사용될 경로 입니다. 위치 입력 후 오른쪽 "Blind" 옵션 선택 합니다.
제 경우는 nextcloud root 및 data 디렉토리 밑에 임의 위치를 설정했습니다.

"host" 필드에는 NAS에 위치한 마운트할 대상물의 절대 경로를 입력합니다.

Advanced_container_settings2.png

"Actions"에서 "Deploy the container"로 컨테이너를 재빌드 해줍니다.

deploy.png

마운트할 외부 디렉토리에 "777" 권한을 부여 합니다.

chmod 777 -R /volume1/xxxx (host에서 설정한 디렉토리)

이제는 Nextcloud에서 외부저장소를 설정해줄 차례 입니다.

Nextcloud에 관리자로 접속 후 "앱"에서 "External storage support" 앱을 찾아 설치해 줍니다.

ex_storage_app.png

관리자 설정 진입 후 "관리 > "외부 저장소"를 선택하고 아래 값을 넣으 줍니다.

 폴더 이름 : Nextcloud에서 표시될 폴더 이름
 설정 : 위에서 Binding한 nextcloud container 내부 경로 입력

ex_storage_setting.png

설정이 완료 됐으면 아래와 같이 외부저장소가 추가된 것을 확인 할 수 있습니다.

ex_storage_result.png

최초 파일량이 많은 외부저장소를 추가 시 백그라운드 인덱싱 작업으로 서버부하가 클 수 있습니다. 인덱싱이 끝나면 정상화 됩니다.
백그라운드 인덱싱 후에도 자료가 다 올라오질 않을 경우 수동으로 occ를 스캔할 수 있습니다.

Portainer > nextcloud 콘솔 > occ files:scan --all 실행
(도커 이미지가 공식이미지일 경우 sudo -u www-data php occ files:scan --all 입니다.)

occ_scan.png

[Tip]

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 {} \