Инструкции
August 20, 2023

NextCloud+Caddy+OnlyOffice+https

Эта инструкция состоит из пяти шагов, с учетом запуск VPS на хостинге.

Вся установка займет не более 20 минут. Немного телодвижений в консоли VPS и потом немного в браузере настройки.

Вся установка NextCloud и Onlyffice состоит из:

  1. Установка Docker + Docker-Compose
  2. Запуск docker-compose up -d
  3. Запуск sudo docker run...

Все собранно на основании рекомендации официальной документации


1. Используемая документация:

https://github.com/nextcloud/all-in-one#how-to-use-this

https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md

https://github.com/nextcloud/all-in-one/discussions/575

https://github.com/nextcloud/all-in-one/discussions/890#discussioncomment-3089903

https://github.com/thomisus/Docker-DocumentServer/pkgs/container/onlyoffice-documentserver-unlimited


2. Кратко все действия установки

В консоли VPS сделаем следующие телодвижения:

  1. Запустим два VPS
  2. Установим Docker + Docker-Compose на двух VPS (набор команд).
  3. Создадим два файла на VPS NextCloud: docker-compose.yml и Caddyfile
  4. Запустим NextCloud одной командой: docker-compose up -d
  5. Запустим OnlyOffice одной командой: sudo docker run...

Потом в браузере на странице установки NextCloud отметим нужные галочки установки, укажем путь бэкапа и локализацию офиса.

После установки NextCloud установите модуль OnlyOffice и укажете реквизиты доступа OnlyOffice во вкладе настройки NextCloud.

Прежде чем запускать приложения на сервере направьте два доменных имени в DNS на IP с NextCloud и OnlyOffice.


3. Выбор и установка VPS

Как пример использую VPS на этом сервисе.

https://beget.com/p786588

На двух VPS указываю Ubuntu 20.04

Для VPS-NextCloud беру:

  • 4 Core Процессор
  • 6 GB ОЗУ (заполнилось до 3,5 GB по умолчанию)
  • 40 GB SSD (после установки на VPS заняло 9 GB места вместе с OS)

Ценник:

Для VPS- OnlyOffice беру:

  • 2 Core Процессор
  • 2 GB ОЗУ (заполнилось до 1,2 GB по умолчанию)
  • 10 GB SSD (после установки на VPS заняло 8 GB места вместе с OS)

Ценник:

Итого цена вопроса в среднем: 1 950 руб./месяц, за документальный портал с онлайн офисом.


4. Установка Docker + Docker-Compose

Установка Docker

Устанавливаем на VPS-NextCloud, VPS-OnlyOffice.

sudo apt update
apt upgrade
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
docker-ce:
Installed: (none)
Candidate: 5:19.03.9~3-0~ubuntu-focal
Version table:
5:19.03.9~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
sudo apt install docker-ce
sudo systemctl status docker
Output● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 24321 (dockerd)
Tasks: 8
Memory: 46.4M
CGroup: /system.slice/docker.service
└─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Эти же действия производим на VPS- OnlyOffice

Установка Docker-Compose

Устанавливаем на VPS-NextCloud

curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

5. Установка NextCloud+SSL (https)

Создал каталог

mkdir /root/nextcloud

перехожу в папку

cd /root/nextcloud

Там создаю два файла docker-compose.yml

version: "3.8"
services:
caddy:
image: caddy:alpine
restart: unless-stopped
container_name: caddy

volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./certs:/certs
- ./config:/config
- ./data:/data
- ./sites:/srv
network_mode: "host"

nextcloud:
image: nextcloud/all-in-one:latest
restart: unless-stopped
container_name: nextcloud-aio-mastercontainer

ports:
- "8080:8080"
environment:
- APACHE_PORT=11000
- APACHE_IP_BINDING=127.0.0.1

volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- caddy
volumes:
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer

и Caddyfile

https://cloud.domain.com:443 {
    header Strict-Transport-Security max-age=31536000;
    reverse_proxy localhost:11000
	encode zstd gzip
	
		# Rules here are all from .htaccess
	redir /.well-known/carddav /remote.php/dav 301
	redir /.well-known/caldav /remote.php/dav 301
	redir /.well-known/* /index.php{uri} 301 # Nextcloud front-controller handles routes to /.well-known
	redir /remote/* /remote.php{uri} 301

	# Secure headers, all from .htaccess except Permissions-Policy, STS and X-Powered-By
	header {
		Strict-Transport-Security max-age=31536000
		Permissions-Policy interest-cohort=()
		X-Content-Type-Options nosniff
		X-Frame-Options SAMEORIGIN
		Referrer-Policy no-referrer
		X-XSS-Protection "1; mode=block"
		X-Permitted-Cross-Domain-Policies none
		X-Robots-Tag "noindex, nofollow"
		-X-Powered-By
}

	# PHP block
	# As I said before, i'm a fan of Unix sockets, so I use them as much as I can. But you can do :9000 also for TCP.
	php_fastcgi unix//run/nextcloud/nextcloud.sock {
		root /var/www/html # This is needed because inside the container the root directory is different from the one I put in the "root" directive of this Caddyfile. If you don't change this, php-fpm will not be able to find the files to process.
		env front_controller_active true # Enable pretty urls
		env modHeadersAvailable true # Avoid sending the security headers twice
	}

	# From .htaccess, deny access to sensible files and directories
	@forbidden {
		path /build/* /tests/* /config/* /lib/* /3rdparty/* /templates/* /data/*
		path /.* /autotest* /occ* /issue* /indie* /db_* /console*
		not path /.well-known/*
	}
	error @forbidden 404

	# From .htaccess, set cache for versioned static files (cache-busting)
	@immutable {
		path *.css *.js *.mjs *.svg *.gif *.png *.jpg *.ico *.wasm *.tflite
		query v=*
	}
	header @immutable Cache-Control "max-age=15778463, immutable"

	# From .htaccess, set cache for normal static files
	@static {
		path *.css *.js *.mjs *.svg *.gif *.png *.jpg *.ico *.wasm *.tflite
		not query v=*
	}
	# From .htaccess, cache fonts for 1 week
	@woff2 path *.woff2
	header @woff2 Cache-Control "max-age=604800"

	file_server
}

cloud.domain.com - замените на NextCloud домен

Запускаю команду

docker-compose up -d

Переходите по адресу

https://cloud.domain.com:8080 (ваш домен Nextcloud)

Откроется страница Nextcloud AIO.

Настройте ее как вам нужно

И запустите там кнопку запуск контейнеров.

Копируйте свой логин пароль и переходите на страницу входа в Nextcloud (ваш домен NextCloud).

6. Установка OnlyOffice+https

Установите модуль OnlyOffice в NextCloud

И укажите настройки вашего будущего сервера OnlyOffice

NextCloud домен

my-secret (придумайте ключ и вставьте его ниже в команду или удалите строку в команде с ключом OnlyOffice сам создаст ключ, потом скопируйте его, будет подсказка после установки)

AuthorizationJwt

OnlyOffice домен

NextCloud домен

Запускаем команду в консоли VPS-OnlyOffice:

sudo docker run -i -t -d --restart=always --name onlyoffice-document-server -p 80:80 -p 443:443 \
 -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
 -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
 -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
 -v /app/onlyoffice/DocumentServer/rabbitmq:/var/lib/rabbitmq \
 -v /app/onlyoffice/DocumentServer/redis:/var/lib/redis \
 -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
 -e LETS_ENCRYPT_DOMAIN=mydomen.ltd \
 -e LETS_ENCRYPT_MAIL=admin@mydomen.ltd \
 -e JWT_ENABLED=true \
 -e JWT_SECRET=my-secret \
 -e JWT_HEADER=AuthorizationJwt onlyoffice/documentserver

mydomen.ltd - домена OnlyOffice

admin@mydomen.ltd - почтовый ящик для Let's Encrypt

Заходим по вашей ссылке домена OnlyOffice:

Можем узнать ваш my-secret

Проверяем на стороне NextCloud сохраняя настройки

Пользуемся на здоровье!

7. Firewall ufw

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw allow 2222
sudo ufw allow 80
sudo ufw allow 443/tcp
sudo ufw allow 3478
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw enable
sudo ufw status

7. Вывод:

Вся установка NextCloud и OnlyOffice состоит из:

  1. Установим Docker + Docker-Compose
  2. Запустим docker-compose up -d
  3. Запустим sudo docker run...

Полезные команды

docker-compose ps
sudo docker-compose down 
docker-compose up -d
docker ps
sudo docker-compose down && sudo docker-compose up -d