# 환경설정

# 관리자 계정 만들기

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

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

[![admin_setup.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/admin-setup.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/admin-setup.png)

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

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

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

[![smtp_err.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/smtp-err.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/smtp-err.png)

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

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

[![config_location.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/config-location.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/config-location.png)

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

<p class="callout success">'default\_phone\_region' =&gt; 'KR',  
</p>

# Redis 설정

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

[![config_location.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/config-location.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/config-location.png)

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

<p class="callout success">'memcache.locking' =&gt; '\\\\OC\\\\Memcache\\\\Redis',  
 'redis' =&gt;  
 array  
 (  
 'host' =&gt; 'redis',  
 'port' =&gt; '6379',  
 'timeout' =&gt; '0',  
 'dbindex' =&gt; '0',  
 ),  
</p>

# 대용량 파일 업로드 설정

<span style="color: #000000;">php.ini 수정이 필요 합니다.</span>

<span style="color: #000000;">Docker Container 콘솔에서 "/etc/php8x"에서 직접 수정을 해줘도 되지만 이 경우 Docker image가 업데이트 될 시</span>

<span style="color: #000000;">초기화가 되므로 Mapping된 volume에서 수정하시는 것을 추천 드립니다.</span>

<span style="color: #000000;">"config &gt; php &gt; php-local.ini"를 열어서 아래 값들을 수정해 줍니다.</span>

<span style="color: #000000;">[![php-local_location.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/php-local-location.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/php-local-location.png)</span>

<p class="callout success"><span style="color: #000000;">max\_execution\_time = 3600  
max\_input\_time = 3600  
memory\_limit = 3072M  
post\_max\_size = 51200M  
upload\_max\_filesize = 51200M  
max\_file\_uploads = 1000</span></p>

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

<p class="callout success">client\_max\_body\_size = 51200M</p>

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

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

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

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

[![chunk.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/chunk.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/chunk.png)

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

[![file_size.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/file-size.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/file-size.png)

# NAS에 있는 외부 저장소 추가

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

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

[![portainer_container_edit.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/portainer-container-edit.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/portainer-container-edit.png)

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

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

[![Advanced_container_settings.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/advanced-container-settings.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/advanced-container-settings.png)

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

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

[![Advanced_container_settings2.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/advanced-container-settings2.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/advanced-container-settings2.png)

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

[![deploy.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/deploy.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/deploy.png)

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

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

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

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

[![ex_storage_app.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/ex-storage-app.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/ex-storage-app.png)

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

<p class="callout success"> 폴더 이름 : Nextcloud에서 표시될 폴더 이름  
 설정 : 위에서 Binding한 nextcloud container 내부 경로 입력  
</p>

[![ex_storage_setting.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/ex-storage-setting.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/ex-storage-setting.png)

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

[![ex_storage_result.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/ex-storage-result.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/ex-storage-result.png)

<div id="bkmrk-%EC%B5%9C%EC%B4%88-%ED%8C%8C%EC%9D%BC%EB%9F%89%EC%9D%B4-%EB%A7%8E%EC%9D%80-%EC%99%B8%EB%B6%80%EC%A0%80%EC%9E%A5%EC%86%8C%EB%A5%BC-%EC%B6%94%EA%B0%80">최초 파일량이 많은 외부저장소를 추가 시 백그라운드 인덱싱 작업으로 서버부하가 클 수 있습니다. 인덱싱이 끝나면 정상화 됩니다.</div><div id="bkmrk-%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%EC%9D%B8%EB%8D%B1%EC%8B%B1-%ED%9B%84%EC%97%90%EB%8F%84-%EC%9E%90%EB%A3%8C%EA%B0%80-%EB%8B%A4-">백그라운드 인덱싱 후에도 자료가 다 올라오질 않을 경우 수동으로 occ를 스캔할 수 있습니다.</div><p class="callout success">Portainer &gt; nextcloud 콘솔 &gt; occ files:scan --all 실행   
(도커 이미지가 공식이미지일 경우 sudo -u www-data php occ files:scan --all 입니다.)</p>

<div id="bkmrk--7">[![occ_scan.png](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/scaled-1680-/occ-scan.png)](https://wiki.dhcloud.me/uploads/images/gallery/2023-06/occ-scan.png)</div><div id="bkmrk--8"></div>**\[Tip\]**

1\. "@eaDir" 삭제 방법

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