Nextcloud 대용량 파일 업로드 다운로드 하기

시스템 환경

본 가이드는 Nextcloud의 대용량 파일 업로드에 관한 공식 문서를 참고하여 내 시스템에 맞게 작성되었습니다.


Nginx Reverse Proxy 설정


나는 리버스 프록시를 관리하기 위해 jc21/nginx-proxy-manager라는 이미지를 사용한다.
흔히 NPM이라고도 부르는 것인데, 이것으로 간단히 하나 설정을 해줘야 할 것이 있다.

Nextcloud Big File Download NPM Setting

본인의 Nginx Proxy Manager 관리 콘솔에 접속한다.

그 후 Nextcloud 프록시 호스트를 찾아 edit을 클릭, ‘Custom Locations’ 탭을 연다.

Add Location을 누르고 Define location에는 /를 입력한다.
스키마에는 https, IP는 Nextcloud 서버의 내부 IP를 입력한다.
Forward Port에는 Nextcloud 컨테이너의 포트를 입력한다.

그리고 우측 상단 톱니바퀴를 누르면 아래와 같이 코드를 입력할 수 있는 박스가 생긴다.
다음 내용을 복사해서 붙여넣는다.

proxy_max_temp_file_size 40960M;


이 설정은 대용량의 파일을 다운받을 수 있게 하기 위한 것이다.

기본적으로 이 값이 1024M으로 설정되어 있어 한 번에 다운받을 수 있는 파일의 최대 크기가 1GB이다.
1.5GB의 파일을 받으려면 1GB까지만 다운되고 ‘인터넷 연결을 확인해주세요’라는 멘트와 함께 다운로드가 중지된다.
물론 ‘다시 시도’를 누르면 나머지 0.5GB도 이어서 받게 되지만, 1.5GB가 아닌 10GB 파일을 받기라도 한다면 이 짓을 10번이나 반복해야 한다.

내가 설정한 값은 40GB이다. (코드를 입력할 때는 M단위로 입력)
임시 파일 크기를 설정해 주는 것이므로, 시스템이 설치된 저장장치의 남은 용량을 고려해서 크기를 설정하도록 한다.

PHP 설정


이제 PHP 설정을 건드려야 한다.

SSH가 편하다면 그렇게 하면 되지만, 나는 Portainer에서 직접 컨테이너 콘솔로 들어가는게 편하기 때문에 Portainer 기준으로 설명할 것이다.

Nextcloud Big File Upload Portainer 1

Portainer에 접속해서 컨테이너 목록으로 들어간 후, Nextcloud 컨테이너를 찾아 동그라미친 곳을 누른다.

Nextcloud Big File Upload Portainer 2

그러면 위와 같은 창이 나오는데 ‘connect’ 버튼을 눌러 컨테이너 콘솔에 접속한다.

접속 후 아래 명령어를 입력한다.

sudo nano /config/php/php-local.ini

그러면 아래와 같은 화면이 뜰 것이다.

Nextcloud Big File Upload PHP Settings

php-local.ini 파일을 나노 에디터로 연 모습이다.

다음 코드를 복사해 위 사진과 같이 붙여 넣어주면 된다.
(단, Portainer 콘솔에서 복사/붙여넣기를 할 때는 키보드 단축키가 아닌 마우스 우클릭을 사용할 것을 권장한다.)

date.timezone = Asia/Seoul
upload_max_filesize = 60G
post_max_size = 60G
memory_limit = 7G
max_file_uploads = 1000


타임존 설정은 서버 시간대 맞추는 것이다.

upload_max_filesizepost_max_size, memory_limit은 엄밀히 말하면 post_max_size값 보다 upload_max_filesize 값이 작아야 하고 memory_limitupload_max_filesize 값 이하여야 하지만 사실 60기가 정도 되는 파일이면 SMB로 옮길 것이기 때문에 그냥 저렇게 설정했다.

메모리 값은 본인 시스템에 맞게 수정해서 넣어주면 된다.


수정 후 Ctrl+X를 누르고 Y를 누른 후 엔터를 쳐주면 파일이 정상적으로 저장된다.
그리고 Portainer에서 컨테이너를 재시작 시켜주면 된다.
정상적으로 수정되었다면 Nextcloud 관리자 페이지 시스템 항목에서 아래와 같이 바뀐 것을 확인할 수 있다.

Nextcloud Big File Upload System

Nextcloud 청크 크기 설정


Nextcloud에는 기본적으로 파일 업로드시 청크 크기가 10MB로 설정이 되어있다.

이게 무슨 말이냐면, 100MB 파일을 업로드할 때 서버 측에서 얘를 10MB 씩 끊어서 받는다는 것이다.
파일을 끊어 받는 과정에서 시간 딜레이가 꽤 생기기 때문에 파일 용량이 GB 단위가 된다면 상당히 많은 시간이 지체된다.

그래서 이 청크 크기를 더 크게 잡고자 한다.

이 청크 크기를 0으로 설정하는 방법도 있지만, 업로드 과정에서 에러가 발생할 확률이 높아지고 불안정해질 수 있기 때문에 500MB 정도로 설정하는 것을 추천한다.


php 설정과 마찬가지로 Portainer를 열어 Nextcloud 컨테이너 콘솔에 접속한 후, 다음 코드를 붙여넣는다.

occ config:app:set files max_chunk_size --value 524288000


Cloudflare DNS를 사용 중인 사람은 위와 같이 설정하면 안된다.

무료 요금제의 경우 파일 업로드 용량을 100MB로 제한하고 있기 때문에 청크 크기를 100MB 보다 작게 설정해야 한다.

나는 조금 더 안정적인 90MB로 설정했다.

occ config:app:set files max_chunk_size --value 94371840

Leave a Comment