On-Premise Cloud Service : Nextcloud
- Nextcloud 소개
- 사전준비
- 설치
- 성능향상
- 환경설정
- 업데이트
- 문제해결
- Redis : AOF 관련 오류 및 504 timeout
- 외부 저장소 추가 시 "Entry .... will not be accessible due to incompatible encoding" 문제
- "/.well-known/" 관련 문제
- SSL 인증서 오류 (기존 시놀로지 인증서 활용 방법)
- 로그인 시 IP 관련 오류 해결
- "server reached pm.max_children setting" 문제 발생 시
- "X-Robots-Tag" HTTP 헤더 문제 발생 시
- Nextcloud Update 이후 "INVALID_HASH" (db index error) 문제 발생 시
- 로그인 시간이 유난히 길때
- "sysvsem" 경고 문제 해결
- DB 속도 개선 (DB반응이 늦을때)
- "opcache" 경고 시
- "데이터베이스에 일부 인덱스가 없습니다" 오류 시
- "서버 유지관리 창의 시작 시간이 설정되지 않았습니다." 문제 발생
Nextcloud 소개
Nextcloud는 On-premises로 개인서버를 Cloud Storage로 만들 수 있는 오픈소스 프로젝트 입니다.
화상채팅, 오피스프로그램 연동 등 매우 많은 App을 제공하는 스토어까지 제공해 줍니다.
사전준비
Database 설치
1. Database는 MariaDB를 이용하며, Synology Package 센터에 있는 MariaDB 10을 예제로 설명 합니다.
다른 DBMS가 이미 있다면 이 단계는 넘어가시면 됩니다.
2. Synology Package 센터에서 MariaDB 10 앱을 설치 후 "TCP/IP 연결 활성화"를 체크하고, 포트는 3306으로 설정 합니다.
2. MariaDB에 Nextcloud Database 및 사용자 생성을 위해 Synology Package 센터에 있는 phpMyAdmin을 설치 합니다.
1) "데이터베이스 > 새로운"에서 "nextcloud"로 신규 Database를 생성 합니다.
2) "nextcloud" Database를 선택하고 우측 상단의 "권한"을 선택 합니다.
3) 아래 예제와 같이 사용자명에 "nextcloud"를 입력하고 암호와 재입력란에 사용하고자하는 암호를 입력 합니다.
그런 후 전체적 권한에 "모두 체크"를 선택하여, 사용자가 Database의 모든 권한을 사용할 수 있게 설정 합니다.
설치
Docker Volume 폴더 생성
Nextcloud의 Data 자료와 Config 설정을 Mapping 할 디렉토리를 생성 합니다.
생성할 디렉토리 구조는 아래와 같습니다.
nextcloud - data : nextcloud에 등록한 자료가 저장되는 디렉토리와 Mapping 할 디렉토리
ㄴ config : nextcloud의 설정값과 Mapping 할 디렉토리
저의 경우 예제로 "/volume3/nextcloud/data"와 "/volume3/nextcloud/config"의 경로로 두개의 디렉토리를 생성 했습니다.
mkdir /volume1/nextcloud/data
mkdir /volume1/nextcloud/config
디렉토리 생성 후 "777" 권한을 부여해 줍니다.
chmod 777 -R /volume1/nextcloud/data
chmod 777 -R /volume1/nextcloud/config
Nextcloud Docker 설치
1. Docker 이미지는 가장 많이 사용하는 "linuxserver.io"의 이미지를 사용 하겠습니다.
2. Docker 설치에 앞서 자신의 계정에 대한 "PUID"와 "PGID"를 확인 합니다.
id 계정명
여기서 uid값 (PUID)과 gid값 (PGID)를 기록해 둡니다. 제 경우 uid=1026, gid=100 입니다.
3. Docker를 설치 합니다.
docker run -d \
--name=nextcloud \
-e PUID=1026 \
-e PGID=100 \
-e TZ=Asia/Seoul \
-p 사용할포트:443 \
-v /volume1/nextcloud/config:/config \
-v /volume1/nextcloud/data:/data \
--restart unless-stopped \
lscr.io/linuxserver/nextcloud:latest
생성된 Docker Container를 전용 network에 연결합니다. 전용 network는 "home_network"라고 임의 설정 하였습니다.
docker network create home_network
docker network connect home_network nextcloud
모든 설치가 완료되면 "관리자 설정" 메뉴에서 정상 동작 여부를 확인합니다.
문제 발생 시 "문제해결" 챕터를 참고하시기 바랍니다.
Onlyoffice 설치 및 Nextcloud와 연동
Nextcloud에서 Onlyoffice 사용에 앞서 Onlyoffice Docker 설치가 필요 합니다.
1. "/volume1/docker/onlyoffice/DocumentServer/" 하위에 "logs", "data", "lib", "db" 디렉토리 생성 합니다.
mkdir /volume1/docker/onlyoffice/DocumentServer/logs
mkdir /volume1/docker/onlyoffice/DocumentServer/data
mkdir /volume1/docker/onlyoffice/DocumentServer/lib
mkdir /volume1/docker/onlyoffice/DocumentServer/db
2. 아래 명령으로Onlyoffice Docker를 설치 합니다.
sudo docker run -i -t -d -p 포트번호:443 --name=onlyoffice --restart=always \ # https 이용 (http는 nextcloud에서 연결 불가)
-v /volume1/docker/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /volume1/docker/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /volume1/docker/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /volume1/docker/onlyoffice/DocumentServer/db:/var/lib/postgresql \
#외부저장소를 붙였을때 필요한 환경 옵션 (Error occurred in the document service: Error while downloading the document file to be converted. 발생 시 필요)
-e USE_UNAUTHORIZED_STORAGE=true \
-e JWT_SECRET=비밀번호 onlyoffice/documentserver
3. 인증서를 생성 합니다. certbot도 이용 가능하지만 간단하게 기존 시놀로지 인증서 사용 하겠습니다.
인증서 생성 위치는 아래와 같으며, nano 또는 vi를 이용해 수정을 해줍니다.
nano /volume1/docker/onlyoffice/DocumentServer/certs/onlyoffice.key
nano /volume1/docker/onlyoffice/DocumentServer/certs/onlyoffice.crt
세부 방법은 "문제해결"에 있는 "SSL 인증서 오류 해결"과 동일 방식으로 진행하시면 됩니다.
4. Nextcloud의 "config.php" 설정을 수정해 줍니다.
"config/www/nextcloud/config/config.php"에 아래 항목을 추가해 줍니다.
'onlyoffice' => array (
'verify_peer_off' => true,
),
5. Nextcloud에 관리자로 접속 후" 앱"에서 onlyoffice 앱을 설치하고 관리자 설정을 진행 합니다.
성능향상
Redis 설치
성능 향상을 위해 Redis를 Docker로 설치하고 Nextcloud를 연결하도록 하겠습니다.
먼저 Redis의 "data" volume을 Mapping할 디렉토리를 생성 합니다.
제 경우 "/volume1/docker/redis/data"에 디렉토리를 생성하였습니다.
mkdir /volume1/docker/redis/data
아래와 같이 docker 명령어를 실행 합니다.
docker run --name redis \
-p 6379:6379 \
-v /volume1/docker/redis/data:/data \
-e TZ=Asia/Seoul \
-d redis:latest redis-server --appendonly yes
설치한 Redis를 "home_network"에 연결해 줍니다.
docker network connect home_network redis
Redis Container에 접속하여 "Memory overcommit"을 활성화 합니다.
[방법 1]
nano /etc/sysctl.conf 으로 vm.overcommit_memory = 1 추가
[방법2]
sysctl vm.overcommit_memory=1
환경설정
관리자 계정 만들기
웹브라우저를 통해 Nextcloud에 접속을 합니다. 처음 접속 시 아래와 같이 관리자 계정 생성 화면이 나옵니다.
데이터 폴더는 "/data"를 입력해주시고, 데이터베이스 항목은 앞서 mariaDB 생성 시 설정한 값을 넣어 줍니다.
이메일 서버 및 기본 국가 번호 설정
Nextcloud의 "관리자 설정"으로 들어갑니다.
초기 접속 시 smtp와 국가번호 관련 경고 화면이 나옵니다.
1. smtp : 관리자 설정 > 기본 설정 > 이메일 서버에 smtp 관련 사항을 넣어줍니다.
2. 국가 번호 설정 : "config/www/nextcloud/config/config.php" 파일을 수정합니다.
아래 문장을 "config.php"에 추가해 줍니다.
'default_phone_region' => 'KR',
Redis 설정
"config/www/nextcloud/config/config.php" 파일을 수정합니다.
아래 문장을 "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"를 열어서 아래 값들을 수정해 줍니다.
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)는 앞장에서 설명한 자신의 값을 넣어줍니다.
위 설정이 완료 됐으면 아래 사항을 최종 확인해 줍니다.
NAS에 있는 외부 저장소 추가
이 과정은 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 입니다.)
[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 {} \
업데이트
Nextcloud Version Update (v26.x.x 이전)
Nextcloud 도커 이미지를 Update해도 Nextcloud의 버전은 업데이트 되질 않습니다. 업데이트는 ssh에서 아래 명령을 실행 합니다.
어려가지 판올림이 있을 경우 아래 명령을 계속 실행해 순차적으로 버전을 올리셔야 합니다.
sudo docker exec -it nextcloud updater.phar
이후 안내되는 문구에 따라 업데이트를 진행 합니다.
"27.0.0-ls252" 이미지 기준 현재 최신버전 Nextcloud Version 27부터 Update가 지원되지 않습니다.
LinuxServer Changes:
Move Nextcloud installation inside container. Remove CLI updater. See changes announcement.
Remote Changes:
Updating to 27.0.0
Notification에 의하면, 27.0.0 부터는 Docker Image를 통한 업데이트를 지원 예정이라 합니다.
(All future updates to your Nextcloud instance will happen via container image updates.)
Watchtower 같은 Docker Image 업데이터 사용을 추천 드립니다.
https://wiki.dhcloud.me/books/docker-updater-watchtower
문제해결
Redis : AOF 관련 오류 및 504 timeout
디스크가 SSD가 아닌 경우 AOF 쓰기작업 디스크가 느려서 발생 하며, 주로 발생되는 증상은 한꺼번에 많은 파일을 동기화하는 과정에서 504 timeout이 나오는 증상이 발생 합니다.
Asynchronous AOF fsync is taking too long (disk is busy?).
Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
docker run --name redis \
-p 6379:6379 \
-v /volume1/docker/redis/data:/data \
-e TZ=Asia/Seoul \
-d redis:latest redis-server --appendonly yes --appendfsync no
이 경우 Redis Container 설치 시 "--appendfsync no" 옵션을 넣어 줍니다.
외부 저장소 추가 시 "Entry .... will not be accessible due to incompatible encoding" 문제
외부 저장소 추가 후 "occ files:scan" 동작시 "Entry .... will not be accessible due to incompatible encoding" error가 발생 되고,
자료 추가가 실패할 수 있습니다.
이 관련 문제는 외부 저장소의 Source단의 한글이나 특수문자로된 폴더/파일명 문제 입니다.
아래의 명령으로 문제가 되는 문자열을 utf-8로 일괄 변경 가능 합니다.
./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"로 압축해제 후 실행 하시면 됩니다.
"/.well-known/" 관련 문제
[보안 및 설치 경고]
설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.
웹 서버에서 "/.well-known/webfinger"을(를) 올바르게 처리할 수 없습니다. 더 많은 정보를 보려면 문서 ↗를 참고하십시오.
웹 서버에서 "/.well-known/nodeinfo"을(를) 올바르게 처리할 수 없습니다. 더 많은 정보를 보려면 문서 ↗를 참고하십시오.
웹 서버에서 "/.well-known/caldav"을(를) 올바르게 처리할 수 없습니다. 더 많은 정보를 보려면 문서 ↗를 참고하십시오.
웹 서버에서 "/.well-known/carddav"을(를) 올바르게 처리할 수 없습니다. 더 많은 정보를 보려면 문서 ↗를 참고하십시오
[해결책1] nginx 설정 수정
1. "config > nginx > site-confs"에 들어가면 "default.conf"가 있습니다.
2. "server { }" 중간에 아래를 추가 합니다. 또는 주석처리가 되어 있으면 주석 "#"를 삭제해 줍니다.
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
3. 중간에 "location ^~ /.well-known { }" 항목이 있는데 아래 3개 문장을 수정해 줍니다.
(경로에 https도메인과 포트 입력이 포인트 입니다.)
location = /.well-known/carddav { return 301 https://도메인:포트/remote.php/dav/; }
location = /.well-known/caldav { return 301 https://도메인:포트/remote.php/dav/; }
return 301 https://도메인:포트/index.php$request_uri;
[해결책2] Nginx Proxy Manager을 사용할 경우 (Nginx Proxy Manager의 advanced에 스크립트 추가)
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 1024k; #옵션
client_max_body_size 0;
#limit_rate 500k;
location = /.well-known/webfinger {
return 301 https://도메인/index.php/.well-known/webfinger;
}
location = /.well-known/nodeinfo {
return 301 https://도메인/index.php/.well-known/nodeinfo;
}
location = /.well-known/carddav {
return 301 https://도메인/remote.php/dav;
}
location = /.well-known/caldav {
return 301 https://도메인/remote.php/dav;
}
SSL 인증서 오류 (기존 시놀로지 인증서 활용 방법)
SSL 관련 오류를 해결하기 위해서는 SSL 인증서를 설치해 주셔야 합니다.
본 해결 방법은 시놀로지를 사용할 경우 간단히 시놀로지의 인증서를 빼내서 nextcloud에 적용하는 방법입니다.
1. "시놀로지 제어판 > 보안 > 인증서" 항목에서 기존 보유한 인증서를 선택 후 "인증서 내보내기"를 실행 합니다. (PC로 다운로드)
2. 압축을 풀고 이 중에서 사용할 인증서는 "cert.pem"와 "privkey.pem" 입니다.
3. nextcloud에 새로운 인증서 생성
1) "nextcloud/config" 밑에 "cert" 디렉토리를 생성 합니다.
2) cert 디렉토리 밑에 "cert1.crt" 파일을 생성하고 앞서 다운로드 받은 "cert.pem" 파일의 내용을 메모장을 열어 복사하고
붙여 줍니다.
3) cert 디렉토리 밑에 "cert1.key" 파일을 생성하고 앞서 다운로드 받은 "privkey.pem" 파일의 내용을 메모장을 열어 복사하고
붙여 줍니다.
4. nextcloud "ngnix > ssl.conf"에 신규 생성한 인증서 정보를 넣어 줍니다.
1) 위치는 "config > nginx > ssl.conf " 입니다. (nano 또는 시놀의 텍스트 편집기로 수정을 하시면 됩니다.)
2) 아래 두 문장을 주석 처리 합니다.
#ssl_certificate /config/keys/cert.crt;
#ssl_certificate_key /config/keys/cert.key;
3) 앞서 만든 root에 위치한 신규 인증서의 위치를 넣어 줍니다.
ssl_certificate /config/cert/cert1.crt;
ssl_certificate_key /config/cert/cert1.key;
5. Docker Container를 재시작 합니다.
로그인 시 IP 관련 오류 해결
사용 중인 ip에서 여러 번의 잘못된 로그인 시도를 감지했습니다. 30초 후에 다시 로그인할 수 있습니다.
이 문제는 로그인 시 Docker 내부가 가상의 ip로 처리를 시도하기 때문입니다.
이 경우 1차로 nextcloud의 관리자에 있는 "앱"에서 "Brute-force setting"을 "사용"으로 설정합니다.
"관리자 설정 > 관리항목"에 있는 "보안"으로 이동합니다.
- 무작위 대입 ip 허용목록 (화이트리스트)에 nextcloud 도커에서 사용하는 ip 대역을 넣어줍니다.
- 보통 Docker의 가상 ip는 "172.x.x.x"로 되어 있는데 portainer나 시놀로지 도커의 네트워크에서 ip 대역을 확인 할 수
있습니다. - ip는 "172.17.0.0/24"와 같이 맨 뒷자리는 "0"을 넣어주고 "/24"를 넣으면 됩니다.
(해당 게이트웨이에 있는 뒷자리 1~255까지의 대역 범위를 주는 의미)
"server reached pm.max_children setting" 문제 발생 시
1. Portainer 또는 다른 방법으로 nextcloud 컨테이너 Console 접속 후 "/etc/php81/php-fpm.d" 경로로 이동 합니다.
2. "www.conf" 수정를 nano나 vi editor로 아래와 같이 수정해 줍니다.
pm.max_children = 128
pm.start_servers = 32
pm.min_spare_servers = 32
pm.max_spare_servers = 96
"X-Robots-Tag" HTTP 헤더 문제 발생 시
"X-Robots-Tag" HTTP 헤더가 "noindex, nofollow"(으)로 설정되어 있지 않습니다. 잠재적인 정보 유출 및 보안 위협이 될 수 있으므로 설정을 변경하는 것을 추천합니다.
[해결책] nginx 설정 수정
1. "config > nginx > site-confs"에 들어가면 "default.conf"가 있습니다.
2. "add_header X-Robots-Tag" 부분을 찾아 아래와 같이 수정 합니다.
"add_header X-Robots-Tag "noindex, nofollow" always;"
Nextcloud Update 이후 "INVALID_HASH" (db index error) 문제 발생 시
- INVALID_HASH:
- core/js/mimetypelist.js:
- expected: ***************
- current: **************
1. Nextcloud의 Docker Console에서 아래 명령을 실행 합니다.
# occ db:add-missing-indices
2. Nextcloud의 "config > www > nextcloud > config.php"에 아래 문장을 추가해 줍니다.
'integrity.check.disabled' => true,
3. Nextcloud Docker Container를 재실행 합니다.
4. Nextcloud의 "관리자 설정" 진입 후 error 항목에서 "Rescan" 클릭 합니다.
5. 정상 확인 후 2번 항목을 원상복귀 (문장 삭제) 후 Nextcloud Docker Container를 재실행 합니다.
로그인 시간이 유난히 길때
"config/www/nextcloud/config/config.php"에 아래 문장을 추가해 줍니다.
"'auth.bruteforce.protection.enabled' => false,"
"sysvsem" 경고 문제 해결
이 인스턴스에 추천하는 PHP 모듈 중 일부가 존재하지 않습니다. 성능 향상과 호환성을 위하여 PHP 모듈을 설치하는 것을 추천합니다.
sysvsem
1. Nextcloud v26 버전부터 "sysvsem" PHP 모듈이 필요 합니다. 경고가 발생될 경우 Nextcloud의 Docker 이미지를 최신버전으로
업그레이드해 주셔야 합니다. (php.ini의 extention을 설정해도 경고 문구 발생)
2. linuxserver/nextcloud 대응 버전 : 21.03.23: - Add php81-sysvsem as new dep for v26. Update default X-Robots-Tag to `noindex,
nofollow``.
DB 속도 개선 (DB반응이 늦을때)
MariaDB에 "my.cnf"파일을 생성 후 내용을 추가해 줍니다.
touch /var/packages/MariaDB10/etc/my.cnf
"my.cnf" 에 작성되야할 내용은 아래와 같습니다.
[myisamchk]
key_buffer_size=64M
sort_buffer_size=64M
[mysqld]
max_connections = 1000
innodb_buffer_pool_size=500M
key_buffer=256M
key_buffer_size=256M
query_cache_limit=16M
query_cache_size=32M
max_allowed_packet=128M
thread_stack=192K
thread_cache_size=8
table_open_cache=128
sort_buffer_size=512K
read_buffer_size=512K
read_rnd_buffer_size=512K
skip-name-resolve
skip-host-cache
skip-external-locking
wait_timeout = 28800
innodb_log_file_size = 128MB
max_allowed_packet = 128M
아래 명령으로 MariaDB를 재실행 합니다.
/var/packages/MariaDB10/scripts/start-stop-status restart
"opcache" 경고 시
"php.ini"를 아래와 같이 수정 합니다.
opcache.enable=1
opcache.interned_strings_buffer=512
opcache.max_accelerated_files=10000
opcache.memory_consumption=2048
opcache.save_comments=1
opcache.revalidate_freq=1
"데이터베이스에 일부 인덱스가 없습니다" 오류 시
테이블 "oc_systemtag_object_mapping"에 인덱스 "systag_by_tagid"이(가) 없습니다.
테이블 "text_steps"에 인덱스 "textstep_session"이(가) 없습니다.
Nextcloud Version Update 시 발생되는 오류로 Nextcloud 콘솔에서 아래 명령을 실행하면 해결 됩니다.
occ db:add-missing-indices
"서버 유지관리 창의 시작 시간이 설정되지 않았습니다." 문제 발생
- 서버 유지관리 창의 시작 시간이 설정되지 않았습니다. 자원 집약적인 배경 작업이 사용자의 주된 사용 시간에 시작할 수 있습니다. 부하가 큰 작업에 의해 사용자가 불편을 겪지 않도록, 사용량이 적은 시간대로 이를 지정하십시오. 더 자세한 사항은 문서 ↗를 참조하십시오.
1. Nextcloud의 "config > www > nextcloud > config.php"에 아래 문장을 추가해 줍니다.
'maintenance_window_start' => 1,
2. Nextcloud Docker Container를 재실행 합니다.