NextCloud+Caddy+OnlyOffice+https
Эта инструкция состоит из пяти шагов, с учетом запуск VPS на хостинге.
Вся установка займет не более 20 минут. Немного телодвижений в консоли VPS и потом немного в браузере настройки.
Вся установка NextCloud и Onlyffice состоит из:
Все собранно на основании рекомендации официальной документации
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 сделаем следующие телодвижения:
- Запустим два VPS
- Установим Docker + Docker-Compose на двух VPS (набор команд).
- Создадим два файла на VPS NextCloud: docker-compose.yml и Caddyfile
- Запустим NextCloud одной командой: docker-compose up -d
- Запустим OnlyOffice одной командой: sudo docker run...
Потом в браузере на странице установки NextCloud отметим нужные галочки установки, укажем путь бэкапа и локализацию офиса.
После установки NextCloud установите модуль OnlyOffice и укажете реквизиты доступа OnlyOffice во вкладе настройки NextCloud.
Прежде чем запускать приложения на сервере направьте два доменных имени в DNS на IP с NextCloud и OnlyOffice.
3. Выбор и установка VPS
Как пример использую VPS на этом сервисе.
На двух VPS указываю Ubuntu 20.04
- 4 Core Процессор
- 6 GB ОЗУ (заполнилось до 3,5 GB по умолчанию)
- 40 GB SSD (после установки на VPS заняло 9 GB места вместе с OS)
- 2 Core Процессор
- 2 GB ОЗУ (заполнилось до 1,2 GB по умолчанию)
- 10 GB SSD (после установки на VPS заняло 8 GB места вместе с OS)
Итого цена вопроса в среднем: 1 950 руб./месяц, за документальный портал с онлайн офисом.
4. Установка Docker + Docker-Compose
Устанавливаем на 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
Устанавливаем на 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
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
my-secret (придумайте ключ и вставьте его ниже в команду или удалите строку в команде с ключом OnlyOffice сам создаст ключ, потом скопируйте его, будет подсказка после установки)
Запускаем команду в консоли 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:
Проверяем на стороне 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 состоит из:
Полезные команды
docker-compose ps
sudo docker-compose down
docker-compose up -d
docker ps
sudo docker-compose down && sudo docker-compose up -d