# 설치

# Docker Volume 폴더 생성

Nextcloud의 Data 자료와 Config 설정을 Mapping 할 디렉토리를 생성 합니다.

생성할 디렉토리 구조는 아래와 같습니다.

<p class="callout success">**nextcloud - data : nextcloud에 등록한 자료가 저장되는 디렉토리와 Mapping 할 디렉토리**  
 **ㄴ config : nextcloud의 설정값과 Mapping 할 디렉토리**</p>

저의 경우 예제로 "/volume3/nextcloud/data"와 "/volume3/nextcloud/config"의 경로로 두개의 디렉토리를 생성 했습니다.

```shell
mkdir /volume1/nextcloud/data
mkdir /volume1/nextcloud/config
```

디렉토리 생성 후 "777" 권한을 부여해 줍니다.

```shell
chmod 777 -R /volume1/nextcloud/data
chmod 777 -R /volume1/nextcloud/config
```

# Nextcloud Docker 설치

1\. Docker 이미지는 가장 많이 사용하는 "linuxserver.io"의 이미지를 사용 하겠습니다.

2\. Docker 설치에 앞서 자신의 계정에 대한 "PUID"와 "PGID"를 확인 합니다.

```shell
id 계정명
```

여기서 uid값 (PUID)과 gid값 (PGID)를 기록해 둡니다. 제 경우 uid=1026, gid=100 입니다.

3\. Docker를 설치 합니다.

```shell
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"라고 임의 설정 하였습니다.

```shell
docker network create home_network
docker network connect home_network nextcloud
```

모든 설치가 완료되면 "관리자 설정" 메뉴에서 정상 동작 여부를 확인합니다.

문제 발생 시 "문제해결" 챕터를 참고하시기 바랍니다.

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

# Onlyoffice 설치 및 Nextcloud와 연동

Nextcloud에서 Onlyoffice 사용에 앞서 Onlyoffice Docker 설치가 필요 합니다.

1\. "/volume1/docker/onlyoffice/DocumentServer/" 하위에 "logs", "data", "lib", "db" 디렉토리 생성 합니다.

```shell
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를 설치 합니다.

```shell
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를 이용해 수정을 해줍니다.

```shell
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"에 아래 항목을 추가해 줍니다.

<p class="callout success">'onlyoffice' =&gt; array (  
 'verify\_peer\_off' =&gt; true,  
),</p>

5\. Nextcloud에 관리자로 접속 후" 앱"에서 onlyoffice 앱을 설치하고 관리자 설정을 진행 합니다.

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