Проект

Общее

Профиль

Использование сервера TEGU с интерфейсом NextCloud

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