В этой статье мы нарастим функционал Nextcloud. Установим ONLYOFFICE офисный пакет — редактор документов, таблиц и презентаций, с открытым исходным кодом, разработанный компанией Ascensio System SIA. Этот редактор имеет неоспоримый плюс, он 100% совместим с Microsoft Office, а так есть очень полезный раздел как «Совместная работа» что позволяет редактировать документы «онлайн» будем считать его аналогом Google Docs.
1. Установка Cервера документов — ONLYOFFICE Docs и сопутствующих программ
Статья по сути является переводом инструкции взятой с официльного сайта и некоторыми дополнениями и тонкостями с которыми мне пришлось столкнуться.
Добавим GPG-ключ:
mkdir -p -m 700 ~/.gnupg
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | gpg --no-default-keyring --keyring gnupg-ring:/tmp/onlyoffice.gpg --import
chmod 644 /tmp/onlyoffice.gpg
sudo chown root:root /tmp/onlyoffice.gpg
sudo mv /tmp/onlyoffice.gpg /usr/share/keyrings/onlyoffice.gpg
Добавим репозиторий ONLYOFFICE Docs:
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
Хотя данный пакет APT собран для дистрибутива Debian Squeeze, он совместим с рядом производных Debian (включая Ubuntu), а значит можно использовать один репозиторий для всех этих дистрибутивов.
Обновим репозиторй
sudo apt update
Установка на Debian — основанные дистрибутивы также требует наличия в системе libstdc++6, NGINX и PostgreSQL.
Есть и другие зависимости, которые устанавливаются совместно с ONLYOFFICE Docs:
• libcurl3 • libxml2 • supervisor • fonts-dejavu • fonts-liberation • ttf-mscorefonts-installer • fonts-crosextra-carlito • fonts-takao-gothic • fonts-opensymbol
Установим postgresql и создадим базу данных и пользователя для onlyoffice
Нужно создать базу данных и пользователя с именем "onlyoffice", пароль по вашему усмотрению.
sudo apt-get install postgresql
sudo -i -u postgres psql -c "CREATE DATABASE bd_onlyoffice;"
sudo -i -u postgres psql -c "CREATE USER user_onlyoffice WITH password 'вашпароль';"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE bd_onlyoffice TO user_onlyoffice;"
Если у вас в системе установлен другой веб-сервер, при установке может быть конфликт портов, поэтому остановите демон apache2: $ sudo systemctl stop apache2 и продолжите установку NGINX, позже мы поменяем стандартный порт 80 и 443 на другие.
Установка NGINX
sudo apt-get install nginx
Установка mscorefonts ( Основные шрифты Microsoft TrueType для Интернета )
sudo apt-get install ttf-mscorefonts-installer
Установка REDIS (резидентная система управления базами данных класса NoSQL с открытым исходным кодом)
sudo apt-get install redis-server
Установка rabbitmq (тиражируемое связующее программное обеспечение, ориентированное на обработку сообщений)
При установке будет требовать пароль от базы данных, которую мы создали раньше.
2. Подключение ssl сертификатов и перевод сайта на режим работы в HTTPS
Сейчас я пользуюсь проксирующим сервером на nginx, что очень удобно в случае большого количества серверов для которого необходимы https. Кому интересно можете прочитать статью, меня очень выручает данное решение.
Лучше использоваться ssl сертификаты и использовать HTTPS протокол, поддерживающий шифрование.
Воспользуемся центром сертификации Let’s Encrypt — предоставляющий бесплатные криптографические сертификаты X.509.
Поищем модуль в репозиториях по ключевым словам:
sudo apt-cache search certbot
sudo apt-get install python3-certbot-apache
sudo apt install certbot
Вот так выглядит установка и генерация сертификата.
certbot --apache -d wadis.ru -d www.wadis.ru
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Requesting a certificate for wadis.ru and www.wadis.ru
Created an SSL vhost at /etc/apache2/sites-available/wadis-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/wadis-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/wadis-le-ssl.conf
We were unable to find a vhost with a ServerName or Address of www.wadis.ru.
Which virtual host would you like to choose?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: 000-default.conf | | | Enabled
2: wadis.conf | wadis.ru | | Enabled
3: wadis-le-ssl.conf | wadis.ru | HTTPS | Enabled
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 3
Deploying Certificate to VirtualHost /etc/apache2/sites-available/wadis-le-ssl.conf
Redirecting vhost in /etc/apache2/sites-enabled/wadis.conf to ssl vhost in /etc/apache2/sites-available/wadis-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://wadis.ru and
https://www.wadis.ru
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email:).
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/wadis.ru/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/wadis.ru/privkey.pem
Your certificate will expire on 2022-09-18. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again with the "certonly" option. To non-interactively
renew *all* of your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Поменяем стандартный порт :80 NGING на любой другой. Хотя я не буду использоваться http и мне это совсем не нужно, но может кому то понадобится использовать не защищенное соединение.
sudo nano /etc/nginx/sites-available/default
По умолчанию Сервер документов - ONLYOFFICE Docs слушает входящие соединения на порту 80. Начиная с версии 4.3 вы можете сменить порт.
Сменим порты NGNX для Сервера документов ONLYOFFICE и укажем путь к нашим ssl сертификатам.
mcedit /etc/nginx/conf.d/ds.conf
include /etc/nginx/includes/http-common.conf;
## Normal HTTP host
server {
listen 0.0.0.0:8099;
listen [::]:8099 default_server;
server_name _;
server_tokens off;
## Redirects all traffic to the HTTPS host
root /nowhere; ## root doesn't have to be a valid path since we are redirecting
rewrite ^ https://$host$request_uri? permanent;
}
#HTTP host for internal services
server {
listen 127.0.0.1:8099;
listen [::1]:8099;
server_name localhost;
server_tokens off;
..
include /etc/nginx/includes/ds-common.conf;
include /etc/nginx/includes/ds-docservice.conf;
}
## HTTPS host
server {
listen 0.0.0.0:4455 ssl;
listen [::]:4455 ssl default_server;
server_tokens off;
root /usr/share/nginx/html;
## Strong SSL Security
## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl on;
ssl_certificate /etc/letsencrypt/live/wadis.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wadis.ru/privkey.pem;
ssl_verify_client off;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=31536000;
# add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
include /etc/nginx/includes/ds-*.conf;
}
Смена порта для Сервера документов, используемого по умолчанию
Это можно сделать с помощью команды:
echo onlyoffice-documentserver onlyoffice/ds-port select | sudo debconf-set-selections
sudo echo onlyoffice-documentserver onlyoffice/ds-port select 4455 | sudo debconf-set-selections
Запускаем службу
sudo supervisorctl start all
У меня возникла ошибка. unix:///var/run/supervisor.sock no such file. Так же при прописании сервера документов в nextcloud вышла ошибка bad gateway 502
Чтобы исправить ошибку нужно создать каталог в любой удобной директории
mkdir /home/mailoffice/supervisor
и прописываем пути для pid файла в конфигурационном файле супервизора
sudo nano /etc/supervisor/supervisord.conf
pidfile=/home/mailoffice/supervisior/supervisor.pid
sudo supervisorctl start all
ds:docservice: started
ds:converter: started
ds:metrics: started
ds:example: started
Проверим работу сервиса перейдя по адресу. ваш_ip:порт что мы указали в debconf
3. Заключительный этап
Находим и включаем приложение в nextcloud
Переходим в настройки ONLYOFFICE и прописываем наш только что настроенный сервис документов
В поле адрес сервера для внутренних запросов ONLYOFFICE Docs пропишем домен где находится Nextcloud, в моем случае jira.wadis.ru
В поле адрес ONLYOFFICE Docs для внутренних запросов сервера: путь до нашего сервера документов.
Секретный ключ берем с файла local.json
cat /etc/onlyoffice/documentserver/local.json | grep secret
Теперь у нас появился новый функционал. Попробуем создать документ
На этом установка и настройка Сервера документов завершен.
Давайте дальше расширим функционал, следующая статья будет посвящена установке и настройке Nextcloud Talk ( удобное расширение, которое позволяет совершать конференции на своем личном сервере, а так же обмениватся сообщениями, голосовать, создавать опрос в рамках этой конференции )