Использование сервера TEGU с интерфейсом NextCloud¶
Choose a language: RU | EN | ZH
- Содержание
- Использование сервера TEGU с интерфейсом NextCloud
- Подготовительные работы
- Установка базы данных Postgres
- Конфигурируем компоненты Postgres
- Установка модулей PHP + Apache
- Установка Nextcloud
- Настройка Apache
- Продолжаем установку в Web интерфейсе
- Дополнительные настройки
- Публикация конфигурации для Apache Reverse Proxy
- Полезные команды при настройке и отладке Nextcloud
- Интеграция с LDAP / AD
- Настройка интеграции Nextcloud с LDAP из командной строки
- Установка и настройка Rainloop
- Установка Onlyoffice
- Подготовительные работы
- Настройка и установка системной локали по умолчанию
- Установка, настройка и изменение часового пояса
- Устанавливаем совместимую с дистрибутивом базу данных PostgreSQL
- Подключаемся к PostgreSQL
- Создаем пользователя и базу для onlyoffice
- Устанавливаем брокер сообщений RabbitMQ
- Устанавливаем дополнения веб-сервера nginx-extras
- Обновляем пакетный менеджер
- Устанавливаем пакет стандартных шрифтов майкрософт
- Проверка работоспособности серверной части
- Установка клиентской части и интеграция с nextcloud
- Настрока Apache Revers Proxy для работы сервера через протокол HTTPS
- Вопросы и ответы
NextCloud - набор инструментов с открытым исходным кодом для создания облачного хранилища.
Это веб-приложение и для своей работы требует настроенного веб-сервера.
Возможности NextCloud¶
Файлы NextCloud хранятся на сервере и могут быть доступны через WebDAV, если это необходимо. Пользовательские файлы зашифровываются во время транзита (необходимо включить шифрование).
Может быть интегрирован с пакетом онлайн-офиса OnlyOffice, что даст возможность создавать и редактировать файлы doc, ppt, xls прямо из NextCloud.
Приложения-клиент для синхронизации доступны для систем Linux, macOS, Windows, iOS и Android.
Пользователи Nextcloud могут управлять календарями (CalDAV), контактами (CardDAV), планировать задачи изнутри платформы.
Nextcloud позволяет управлять пользователями и группами с помощью OpenID или LDAP.
Пользователи Nextcloud могут делиться файлами через веб-ссылки.
В данной инструкции мы рассмотрим процесс настройки сервиса в связке в Apache и Apache Reverce Proxy
на базе дистрибутива OS Debian 11 и PHP 7.4, хотя дистрибутив поддерживается любой.
Предполагается, что у вас уже установлен и настроен Apache Reverce Proxy (Обратный Прокси).
Обратный прокси-сервер – это тип прокси-сервера, который ретранслирует HTTP/HTPPS-запросы на один или несколько бэкенд-серверов (к которым пользователи не должны иметь доступ напрямую).
В конце инструкции мы опубликуем два рабочих конфига для обратного прокси и инструкцию по генерации валидных SSL сертификатов.
Также предполагается что у вас настроена и сконфигурирована доменная зона для Nextcloud.
Рассмотрим эту запись не примере:
Хост
cloud.tegu.online A 95.163.87.33
Подготовительные работы¶
Настройка и установка системной локали по умолчанию¶
dpkg-reconfigure locales
выбираем ru_RU.UTF-8
Установка, настройка и изменение часового пояса¶
timedatectl set-timezone Europe/Moscow
Установка базы данных Postgres¶
Здесь мы рассматриваем установку обычной версии Postgres, допускается установка версии Pro:
sudo apt install postgresql postgresql-contrib
После завершения установки вы можете убедиться, что служба PostgreSQL активна. Для чего в командной строке наберите:
sudo systemctl is-active postgresql
Также, посмотрите, включена ли служба:
sudo systemctl is-enabled postgresql
Проверка запуска PostgreSQL - как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04.
И наконец, вы можете увидеть статус службы PostgreSQL:
sudo systemctl status postgresql
Проверка статуса PostgreSQL.
После чего, убедитесь, что PostgreSQL-сервер готов принимать подключения от клиентов:
sudo pg_isready
Проверка готовности PostgreSQL - как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04.
Конфигурируем компоненты Postgres¶
Конфигурируем PostgreSQL.
Подключаемся к PostgreSQL:
sudo -u postgres psql
или такой командой:
su - postgres -s /bin/bash
psql
Создаем пользователя и базу для NextCloud:
CREATE USER nextcloud WITH PASSWORD 'your_password'; CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE'; ALTER DATABASE nextcloud OWNER TO nextcloud; GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; \q
Смотрим вывод в консоли после исполнения вышеперечисленных команд:
postgres=# CREATE USER nextcloud WITH PASSWORD 'Qwe123Poi'; CREATE ROLE postgres=# CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE'; CREATE DATABASE postgres=# ALTER DATABASE nextcloud OWNER TO nextcloud; ALTER DATABASE postgres=# GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; GRANT postgres=#
Установка модулей PHP + Apache¶
apt install -y php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp libapache2-mod-php php7.4-pgsql php7.4-ldap apache2
Настраиваем php.ini:
nano /etc/php/7.4/apache2/php.ini
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
Посмотреть версию PHP можно командой:
php -v
Для применения изменений в настройках PHP необходимо перезапустить Apache:
systemctl reload apache2
Установка Nextcloud¶
Скачиваем NextCloud¶
wget https://cloud.mbk-lab.ru/index.php/s/w6QZ8gzgyGEdjc8/download/nextcloud-24.0.4.tar.bz2 tar xjvf nextcloud-24.0.4.tar.bz2 cp -R nextcloud /var/www/
Меняем владельца каталога¶
chown -R www-data:www-data /var/www/nextcloud/
Настройка Apache¶
Разрешаем модули ssl, rewrite и headers¶
a2enmod ssl a2enmod rewrite a2enmod headers
Создаем виртуальный домен и настраиваем его для работы с облачным сервисом¶
nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80> ServerName localhost ServerAdmin root@localhost DocumentRoot "/var/www/nextcloud" Redirect 301 /.well-known/carddav https://cloud.tegu.online/remote.php/dav Redirect 301 /.well-known/caldav https://cloud.tegu.online/remote.php/dav Redirect 301 /.well-known/webdav https://cloud.tegu.online/remote.php/dav <Directory "/var/www/nextcloud"> Options FollowSymLinks MultiViews AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory> <IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> ErrorLog /var/log/apache2/error_log TransferLog /var/log/apache2/access_log </VirtualHost>где
- cloud.tegu.online — домен, на котором будет работать сервис;
- /var/www/nextcloud — каталог с порталом.
Запускаем Apache¶
Включаем нашу конфигурацию:
a2ensite nextcloud.conf
Выключаем дефолтные конфиги Apache:
a2dissite 000-default.conf a2dissite default-ssl.conf
Проверяем конфигурацию Apache:
apachectl configtest
Если видим:
Syntax OK
Разрешаем автозапуск апача и перезапускаем сервис:
systemctl enable apache2 systemctl restart apache2
Продолжаем установку в Web интерфейсе¶
Перед установкой рекомендуется сделать резервную копию и внимательно заполнить конфиг, если по ошибке введете неправильно данные сервера базы и данных и пароль, необходимо будет вручную исправить это в конфигах PHP:
/var/www/nextcloud/config/config.php
После завершения установки необходимо отказаться от установки рекомендованных приложений.
Нажимаем отмена.
Настройка фоновых заданий через Cron¶
Открываем crontab файл из под пользователя "www-data":
crontab -u www-data -e
Необходимо выбрать вариант 1 (Редактор Nano), тем кто привык к редактору Vim, выбрать второй вариант:
Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny Choose 1-2 [1]: 1
Далее необходимо добавить задание в Crontab на исполнение каждые 5 минут и сохранить файл:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Продолжим настройку в Web интерфейсе¶
Необходимо навести мышкой в правый верхний углу на профиль пользователя, выбрать настройки и в левой стороне экрана - " основные параметры", и сменить настройку Ajax на рекомендованный Cron.
Необходимо установить модуль php-imagick и SVG¶
apt install imagemagick
Дополнительные настройки¶
Необходимо зайти в общие сведения и проверить и исправить предупреждения связанные с безопасностью.
Исправляем предупреждение о php¶
Разрешённое максимальное значение использования памяти PHP не ниже рекомендуемого значения в 512 МБ:
nano /etc/php/7.4/fpm/php.ini
Ищем memory_limit и вводим, 512M вместо 128M.
Приводим пример (часть конфига):
; Maximum amount of memory a script may consume ; http://php.net/memory-limit memory_limit = 512M
Перезапускаем Apache:
systemctl reload apache2
Не указан регион размещения этого сервера Nextcloud¶
Что требуется для возможности проверки номеров телефонов без указания кода страны?
Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны,
добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1.
Для устранения данного предупреждения откроем конфигурационный файл NextCloud:
nano /var/www/nextcloud/config/config.php
И добавим следующие строки:
'default_phone_region' => 'RU',
Проблема: Не настроена система кеширования¶
Для увеличения производительности сервера, по возможности, настройте memcache.
Для решения проблемы устанавливаем Redis:
apt install -y redis-server php-redis systemctl start redis-server systemctl enable redis-server phpenmod redis
Добавляем в конец конфига следующие значения:
sudo nano /var/www/nextcloud/config/config.php
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
Должно получится так:
'installed' => true, 'default_phone_region' => 'RU', 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), );
Перезапускаем Apache и PHP-FPM:
systemctl restart apache2 php7.4-fpm
Настройка почтового сервера¶
Переходим в основные параметры и прописываем настройки учетной записи и почтового сервера.
На предупреждение об отправке тестового письма переходим по рекомендуемой ссылке:
http://cloud.tegu.online/index.php/settings/user
Заполняем реквизиты.
Заголовки обратного прокси¶
Заголовки обратного прокси настроены неправильно, либо подключение к серверу Nextcloud осуществляется через доверенный прокси. Если Nextcloud открыт не через доверенный прокси, то это проблема безопасности, которая может позволить атакующему подделать IP-адрес, определяемый сервером Nextcloud. Дополнительная информация представлена в документации.
Добавляем в конфиг IP обратного прокси сразу после конфига обратного прокси:
nano /var/www/nextcloud/config/config.php
'trusted_proxies' => array ( 0 => '10.199.199.11', ),
Должно получиться так:
'trusted_domains' => array ( 0 => 'cloud.tegu.online', 1 => '10.44.44.32', ), 'trusted_proxies' => array ( 0 => '10.199.199.11', ),
Перезапускаем Apache и PHP:
systemctl restart apache2 php7.4-fpm
Небезопасные ссылки¶
Сервер создаёт небезопасные ссылки, несмотря на то, что к нему осуществлено безопасное подключение. Скорее всего, причиной являются неверно настроенные параметры обратного прокси и значения переменных перезаписи исходного адреса. Рекомендации по верной настройке приведены в документации.
Редактируем следующий конфиг:
nano /var/www/nextcloud/config/config.php
Добавляем параметр:
'overwriteprotocol' => 'https'
перед настройкой mail.
Должно получится так:
'overwriteprotocol' => 'https', 'mail_smtpmode' => 'smtp', 'mail_smtpsecure' => 'ssl', 'mail_sendmailmode' => 'smtp',
Перезапускаем Apache и PHP:
systemctl restart apache2 php7.4-fpm
Проверяем остались ли еще какие то предупреждения или нет.
Ура, все предупреждения безопасности полностью пофиксены о чем свидетельствует результат проверки на скриншоте.
Публикация конфигурации для Apache Reverse Proxy¶
Идем по пути:
cd /etc/apache2/sites-available
Создаем конфиг. Этап первый:
nano nextcloud.conf
Вставляем конфиг со своими параметрами:
<VirtualHost *:80> ServerName cloud.tegu.online ErrorLog /var/log/apache2/cloud-tegu-error.log TransferLog /var/log/apache2/cloud-tegu-access.log RewriteEngine on RewriteCond %{SERVER_NAME} =cloud.tegu.online RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Включаем конфиг:
a2ensite nextcloud.conf
Получаем сертификат Certbort. На вопрос перенаправлять на SSL, отвечаем да (2).
Здесь указываете свои параметры домена:
certbot --apache -d cloud.tegu.online
Редактируем конфиг для работы с SSL:
nano nexcloud-le-ssl.conf
Должно получится так:
<IfModule mod_ssl.c> <VirtualHost *:443> <IfModule mod_proxy.c> ProxyPass /.well-known/acme-challenge ! </IfModule> <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" </IfModule> RewriteEngine On RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] ServerName cloud.tegu.online RequestHeader set X-Forwarded-Proto "https" ProxyRequests Off ProxyPreserveHost On ProxyPass / http://10.44.44.32/ ProxyPassReverse / http://10.44.44.32/ RemoteIPHeader X-Real-IP RemoteIPInternalProxy 10.44.44.0/24 ErrorLog /var/log/apache2/cloud-tegu-error.log TransferLog /var/log/apache2/cloud-tegu-access.log SSLCertificateFile /etc/letsencrypt/live/cloud.tegu.online/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/cloud.tegu.online/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>
Полезные команды при настройке и отладке Nextcloud¶
Отключение сброса пароля¶
Нужно добавить в файл nano /var/www/nextcloud/config/config.php :
'lost_password_link' => 'disabled',
Вывести из бана ip адрес¶
sudo -u www-data php /var/www/nextcloud/occ security:bruteforce:reset 10.252.128.1
Отключение "Создайте свою бесплатную учётную запись"¶
Отключение ссылки на https://nextcloud.com/signup/ .
Нужно добавить в файл nano /var/www/nextcloud/config/config.php :
'simpleSignUpLink.shown' => false,
Работа с пользователями из UNIX-Shell¶
В состав nextcloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.
Добавление пользователя.
Создать нового пользователя можно командой:
sudo -u www-data php /var/www/nextcloud/occ user:add admin
- где admin — имя учетной записи.
Сброс пароля.
При необходимости сбросить пароль пользователя, можно воспользоваться командой:
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin
- где admin — учетная запись пользователя, чей пароль хотим сбросить.
Интеграция с LDAP / AD¶
Для настройки интеграции с LDAP необходимо включить данный компонент.
Идем в профиль пользователя -> Приложения.
Опускаемся в самый низ списка приложений, находим LDAP и включаем его.
Переходим обратно в профиль -> Настройки.
Слева внизу экрана появится настройка: LDAP/AD интеграция.
Проваливаемся внутрь и заполняем своими данными настройки.
Настройка пользователей¶
Переходим на вкладку “пользователи” и вписываем запрос LDAP:
(&(objectclass=user)(mail=*))
На вкладке “Учетные данные” вписать следующий запрос LDAP¶
(mail=%uid)
На вкладке “Группы” вписываем запрос¶
(objectclass=group)
Настройка интеграции Nextcloud с LDAP из командной строки¶
Нам необходимо убедиться в наличие модуля php-ldap.
Иначе в процессе настройки мы можем получить ошибку:
the library ldap is not available
Проверка наличия модуля можно выполнить команду на сервере:
php -m | grep ldap
Должны получить следующий вывод:
ldap
Если мы получим в ответ пустую строку, то необходимо установить пакет php-ldap и перезапустить службу, обрабатывающую скрипты php.
Выполняем поочередно следующие команды:
apt-get install php-ldap systemctl restart php7.4-fpm systemctl restart apache2
В данном примере мы перезапускаем и php7.4-fpm, и apache2.
В вашей системе может использоваться только один сервис.
Имя для сервиса php7.4-fpm может быть другим — это зависит от версии PHP.
У нас должна быть учетная запись на сервере LDAP с правами чтения (DN user).
От данной учетной записи будет выполняться подключение к серверу каталогов.
Из командной строки мы можем управлять Nextcloud с помощью утилиты occ, которая находится в каталоге самого портала.
Для включения приложения интеграции LDAP вводим следующую команду:
sudo -u www-data php /var/www/nextcloud/occ app:enable user_ldap
Настройка интеграции¶
Cоздаем конфигурацию:
sudo -u www-data php /var/www/nextcloud/occ ldap:create-empty-config
Должны получить следующий вывод:
Created new configuration with configID s01
В данном примере создана конфигурация с идентификатором s01 — последующие команды будут вводиться с данным ID.
Посмотреть информацию о созданной конфигурации можно командой:
sudo -u www-data php /var/www/nextcloud/occ ldap:show-config
Задаем настройки LDAP.
В данном примере вы указываете свои настройки своего домена.
Указываем ldap-сервер для подключения и порт:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapHost "ds.tegu.online"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapPort "636"
В данном примере мы используем сервер ds.tegu.online и порт 636 (зашифрованные запросы к ldap).
Для использования не зашифрованных запросов, соответственно используем порт 389.
Задаем пользователя, от которого будем выполнять подключения к каталогу:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentName "tegu"
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentPassword "Qwerty123_tegu"; history -d $((HISTCMD-1))
Мы указали, что подключение будет выполняться от пользователя tegu с паролем Qwerty123_tegu.
Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.
Задаем область поиска учетных записей:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapBase "ou=mail,dc=tegu,dc=online"
Задаем фильтры пользователя, поля для логина и класса объекта:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapLoginFilter "(&(objectclass=user)(mail=*))" sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserFilter "(|(objectclass=user))" sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapUserFilterObjectclass "user"
Указываем поле для атрибута электронной почты:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapEmailAttribute "mail"
Проверяем конфигурацию:
sudo -u www-data php /var/www/nextcloud/occ ldap:test-config s01
Мы должны увидеть:
The configuration is valid and the connection could be established!
Если же мы увидим ошибку, смотрим лог и устраняем проблемы:
tail /var/www/nextcloud/data/nextcloud.log
Активируем конфигурацию:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapConfigurationActive "1"
Пользователи будут загружаться из каталога ldap, но их идентификаторы будут отображаться в виде UID — это произвольные набор цифр и букв, и использовать его в таком виде не удобно.
Чтобы изменить атрибут для имени nextcloud, вводим:
sudo -u www-data php /var/www/nextcloud/occ ldap:set-config s01 ldapExpertUsernameAttr "sAMAccountName"
Установка и настройка Rainloop¶
RainLoop(rainloop.net) — легкий, современный и красивый веб-клиент электронной почты, разработанный специально с учетом малого потребления памяти и использования на low-end серверах.
Использование ресурсов не зависит от объема почтового ящика, сообщения или вложения, а поэтому каждый активный пользователь требует не много памяти, даже в случае обработки больших сообщений.
Такой эффект достигнут за счет того, что веб-клиент не использует базу данных, а обращается на прямую к файлам почтового сервера, и просто отображает имеющиеся там письма, загружая по мере необходимости.
Встроенная система кэширования позволяет повысить общую производительность, снижая нагрузку на веб и почтовые сервера. Хотя в зависимостях СУБД (MySQL, PostgreSQL, SQLite и т.п.) указана, но она задействуется исключительно для хранения данных контактов. RainLoop - это именно веб-клиент, в его задачи не входит настройка почтовых серверов и управление учетными записями.
Поэтому какую-либо базу учетных записей RainLoop не использует, после настройки подключения к почтовым серверам, пользователь может подключиться, указав свой логин и пароль, созданные ранее.
В настройках уже есть привязка к Gmail, Yahoo, Outlook.com и qq.com. То есть, фактически, после установки RainLoop, пользователи могут сразу без дополнительных настроек подключаться к этим серверам, используя свои учетные записи. Добавить любой сервер можно за пару кликов. Чтобы ограничить подключения к почтовым серверам используются белые списки.
Но у такого подхода есть и минус — нельзя объединить несколько ящиков и получать к ним доступ с одного места, для каждлой учетной записи потребуется открыть свое окно.
Поддерживает IMAP и SMTP протоколы, включая защищенные SSL и STARTTLS. Возможно шифрование сообщений при помощи OpenPGP и управление ключами (импорт и создание новых).
Интерфейс локализован. Причем это могут быть как корпоративные сервера, так и публичные сервера. Поддерживаются многие функции настольного приложения drag’n’drop, горячие клавиши, автозавершение адресов, виртуальные папки, импорт и экспорт контактов (CSV, VCF и vCard).
Пункты меню позволяют произвести все необходимые операции с сообщением отредактировать, переслать, пометить как спам, распечатать, скачать в виде eml файла.
Поддерживается интеграция с Google (включая Google Drive), Dropbox другими системами. Возможности расширяются при помощи плагинов.
В поставке имеется 15 плагинов, упрощающих интеграцию с некоторыми приложениями и добавляющих функциональность (белый и черный списки, капча и другие).
Среди плагинов проекта [ownCloud](apps.owncloud.com/content) также можно найти RainLoop (Apps > Enable ‘RainLoop’).
Те, кто использует данную систему для обмена и синхронизации данных, вероятно, оценят это, так как поддерживается возможность работы в одном домене
с технологией единого входа SSO, что очень удобно как для пользователя, так и админа (нет дублирования учетных записей). Внешний вид меняется при помощи тем.
Установка Rainloop¶
Для установки Rainloop, необходимо зайти в приложения найти по алфавиту данное приложение и установить.
Необходимо опять перейти в профиль пользователя -> Настройки
Необходимо в дополнительных параметрах выбрать автоматический вход пользователей.
Далее необходимо в этом же окне перейти по ссылке:
Перейти в панель администратора RainLoopУвидим окно приглашение:
- логин: admin
- пароль 12345
Меняем пароль и выставляем языковые предпочтения.
Добавляем домен и прописываем соответствующие настройки почтового сервера.
Добавляем основной домен.
Установка Onlyoffice¶
OnlyOffice – офисный пакет с открытым исходным кодом, можно сказать, что он больше, чем просто офисный пакет в браузере.
Это многофункциональный портал совместной работы, включающий в себя управление документами и проектами.
Он позволяет вам планировать рабочие задачи и вехи, хранить корпоративные или персональные документы, и совместно работать над ними, использовать инструменты социальной сети, такие как блоги и форумы, а также общаться с членами коллектива через корпоративную программу обмена мгновенными сообщениями.
Устанавливается на отдельную виртуальную машину.
Подготовительные работы¶
Также предполагается что у вас настроена и сконфигурирована доменная зона для onlyoffice.
Рассмотрим эту запись не примере:
Хост
onlyoffice.tegu.online A 95.163.87.33
Настройка и установка системной локали по умолчанию¶
dpkg-reconfigure locales
выбираем ru_RU.UTF-8
Установка, настройка и изменение часового пояса¶
timedatectl set-timezone Europe/Moscow
Первым делом обновляем данные о пакетах:
sudo apt-get update sudo apt-get upgrade
Помимо прочих компонентов, для нормальной работы требуется наличие в системе работающего веб-сервера Nginx.
Выполним для этого ряд действий:
sudo apt-get install nginx sudo systemctl start nginx sudo systemctl enable nginx
Необходимые изменения в конфигурационные файлы будут внесены автоматически при выполнении последующих этапов установки.
Устанавливаем совместимую с дистрибутивом базу данных PostgreSQL¶
sudo apt-get install postgresql
После успешной установки необходимо создать саму базу данных и пользователя.
Стоит обратить особое внимание, что имя пользователя базы данных обязательно должно быть — onlyoffice, а вот пароль (password) можно указать любой, главное — его не забыть. Он понадобится на этапе установки самого сервера.
Подключаемся к PostgreSQL¶
sudo -u postgres psql
Или такой командой:
su - postgres -s /bin/bash
psql
Создаем пользователя и базу для onlyoffice¶
CREATE DATABASE onlyoffice; CREATE USER onlyoffice WITH password 'password'; GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice; \q
Устанавливаем брокер сообщений RabbitMQ¶
sudo apt-get install rabbitmq-server
Устанавливаем дополнения веб-сервера nginx-extras¶
sudo apt-get install nginx-extras
Для выполнения самой установки нужно сделать ещё ряд подготовительных действий.
Добавить в систему ключ PGP и подключить репозиторий:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80--recv-keys CB2DE8E5 echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
Обновляем пакетный менеджер¶
sudo apt-get update
Устанавливаем пакет стандартных шрифтов майкрософт¶
sudo apt-get install ttf-mscorefonts-installer
И собственно сама установка ONLYOFFICE Documentserver'а.
Вот при выполнении этого этапа и будет запрошен пароль доступа к создаваемой ранее базе данных:
sudo apt-get install onlyoffice-documentserver
Проверка работоспособности серверной части¶
Собственно, на данном моменте уже можно проверить работоспособность.
Зайдя в браузере по адресу настраиваемого сервера, мы должны увидеть следующее:
Здесь внизу есть кнопка [GO TO TEST EXAMPLE], по которой можно запустить тестовые документы и проверить работоспособность.
Но для этого сначала нужно выполнить:
sudo supervisorctl start ds:example
И теперь можно убедиться в работоспособности сервера и оценить интерфейс.
Главное, после проверки работоспособности не забыть выключить тестовые файлы:
sudo supervisorctl stop ds:example
Установка клиентской части и интеграция с nextcloud¶
С установкой серверной части закончено, пора приступать к настройке клиентской.
Здесь всё просто. Заходим в Nextcloud (под аккаунтом администратора), открываем Магазин приложений -> Аккаунт -> Приложения.
В поиске вводим ONLYOFFICE и устанавливаем.
После переходим в Аккаунт -> Настройки, и в левом меню в разделе «Параметры сервера» ищем пункт ONLYOFFICE.
Здесь в поле «Адрес» ONLYOFFICE Docs пишем адрес сервера, который настраивали на предыдущих шагах, и ниже нажимаем сохранить.
Здесь также желательно настроить секретный ключ для доступа к серверу Onlyoffice.
Токен включается сервере Onlyoffice следующим образом:
nano /etc/onlyoffice/documentserver/local.json
Должно получится так:
"token": { "enable": { "request": { "inbox": true, "outbox": true }, "browser": true }, "inbox": { "header": "Authorization" }, "outbox": { "header": "Authorization" } }, "secret": { "inbox": { "string": "9Adl54NYtDvYMS"где
- inbox, outbox меняется на true,
- в секции string генерируете удобным способом токен и вписываете его сюда, этот же токен прописываете при интеграции в nextcloud.
Видим в правом верхнем углу надпись: «Настройки были успешно обновлены (версия 7.1.1.23)», что свидетельствует об успешно установленном соединении с сервером.
Помимо этого, ниже на странице появились и дополнительные настройки, позволяющие выбрать типы документов, доступные для редактирования.
Выбираем нужные и ещё раз жмём Сохранить. На этом основная настройка завершена.
Теперь в меню создания нового файла появились дополнительные пункты для создания файлов текстового редактора / таблиц / презентаций.
Нижен представлен конфиг для публикации.
Настрока Apache Revers Proxy для работы сервера через протокол HTTPS¶
Здесь всё тоже довольно просто и лаконично.
Применяем подобную схему apache reverse proxy как и для настройки Nextcloud.
Создаем конфиг oo.tegu.online.conf¶
Конфиги находятся здесь:
cd /etc/apache2/sites-available
nano /etc/apache2/sites-available/oo.tegu.online.conf
Вставляем конфиг со своими параметрами:
root@www:/etc/apache2/sites-available# cat oo.tegu.online.conf <VirtualHost *:80> ServerName oo.tegu.online DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/oo-tegu-error.log CustomLog ${APACHE_LOG_DIR}/oo-tegu-access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =oo.tegu.online RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Включаем созданный конфиг в Apache¶
a2ensite oo.tegu.online.conf
Получаем сертификат Certbort. На вопрос перенаправлять на SSL, отвечаем да (2).
Здесь указываете свои параметры домена:
certbot --apache -d oo.tegu.online
Редактируем конфиг для работы с SSL¶
oo.tegu.online-le-ssl.conf
Должно получится так:
<VirtualHost *:443> ServerName oo.tegu.online DocumentRoot /var/www/html ProxyRequests Off RequestHeader set X-Forwarded-Proto "https" <IfModule mod_proxy.c> ProxyPass /.well-known/acme-challenge ! </IfModule> SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off ProxyPreserveHost On ProxyPassMatch "^/(.*\websocket)$" "ws://10.44.44.33/$1" ProxyPass / http://10.44.44.33/ ProxyPassReverse / http://10.44.44.33/ RemoteIPHeader X-Real-IP RemoteIPInternalProxy 10.44.44.0/24 ErrorLog ${APACHE_LOG_DIR}/oo-tegu-error.log CustomLog ${APACHE_LOG_DIR}/oo-tegu-access.log combined SetEnvIf Host "^(.*)$" THE_HOST=$1 RequestHeader setifempty X-Forwarded-Proto https RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e ProxyAddHeaders Off SSLCertificateFile /etc/letsencrypt/live/oo.tegu.online/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/oo.tegu.online/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>
Вот, собственно, и все действия необходимые для базовой локальной настройки интеграции пакета ONLYOFFICE в Nextcloud.
На этом наша настройка облачного хранилища подошла к концу.
Вопросы и ответы¶
При авторизации Nextcloud выдает «Слишком много попыток авторизаци軶
Для этого нужно очистить таблицу oc_bruteforce_attempts.
Подключаемся к базе данных postgres:
su - postgres -s /bin/bash
Далее — запустим psql:
psql -Unextcloud -hlocalhost -W --dbname=nextcloud
Проверим, сколько записей в таблице:
select count(*) from oc_bruteforce_attempts;
Смотрим вывод в консоли - видим 6 записей в таблице:
nextcloud=> select count(*) from oc_bruteforce_attempts; count ------- 6 (1 строка)
Для очистки запустим команду:
truncate oc_bruteforce_attempts RESTART IDENTITY;
Проверяем после очистки:
nextcloud=> select count(*) from oc_bruteforce_attempts; count ------- 0 (1 строка) nextcloud=>
Nextcloud не отправляет почту. stream_socket_enable_crypto(): SSL operation failed with code 1¶
Nextcloud не отправляет письма. При попытке отправить тестовое письмо получаем ошибку:
«stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL
routines:tls_process_server_certificate:certificate verify failed at /var/www/nextcloud/3rdparty/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php#94»
Проблема в самоподписанном сертификате. По умолчанию Nextcloud живет в идеальном мире в котором все сертификаты заверены доверенными УЦ).
Галочки «доверять всем сертификатам» в настройках нет, значит нужно идти глубже.
Открываем текстовым редактором /nextcloud/lib/private/Mail/Mailer.php (обычно полный путь «/var/www/nextcloud/lib/private/Mail/Mailer.php»),
находим блок настроек отправки(ориентировочно 250-257 строки):
$transport = new \Swift_SmtpTransport(); $transport->setTimeout($this->config->getSystemValue('mail_smtptimeout', 10)); $transport->setHost($this->config->getSystemValue('mail_smtphost', '127.0.0.1')); $transport->setPort($this->config->getSystemValue('mail_smtpport', 25)); if ($this->config->getSystemValue('mail_smtpauth', false)) { $transport->setUsername($this->config->getSystemValue('mail_smtpname', '')); $transport->setPassword($this->config->getSystemValue('mail_smtppassword', '')); $transport->setAuthMode($this->config->getSystemValue('mail_smtpauthtype', 'LOGIN'));
И добавляем новой строкой:
$transport->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));
Этой строчкой мы разрешаем принимать самоподписанные сертификаты. После этого отправка почты будет работать.
Забыли административный пароль от Rainloop¶
Rainloop хранить пароли в зашифрованном виде, можно сбросить пароль на перврначальный 12345
nano /var/www/nextcloud/data/rainloop-storage/_data_/_default_/configs/nano application.ini
Находим строку "Login and password for web admin panel".
Должно получиться так:
; Login and password for web admin panel admin_login = "admin" admin_password = "12345"
Как включить логи Rainloop¶
Включаем логи в конфиге:
nano /var/www/nextcloud/data/rainloop-storage/_data_/_default_/configs/application.ini
Должно получиться так:
[logs] enable = On