Nextcloud: различия между версиями

Материал из ALT Linux Wiki
(не показано 19 промежуточных версий 5 участников)
Строка 1: Строка 1:
{{Stub}}
Nextcloud — облачное хранилище файлов.
Nextcloud - облачное хранилище файлов.
* Сайт: https://nextcloud.com ([http://docs.nextcloud.com документация])
* Сайт: https://nextcloud.com
* Лицензия: AGPL-3.0
* Лицензия: AGPL-3.0
= Установка Nextcloud =
= Установка Nextcloud =
Установить Nextcloud  можно из репозитория или с официального сайта, если не устраивает версия из репозитория.
В данной статье рассмотрена установка Nextcloud на сервер c Apache2.
== С официального сайта (с помощью веб-установщика) ==
=== Подготовка окружения ===
=== Подготовка окружения ===
Для работы Nextcloud необходим настроенный web-сервер.<br>
 
Для работы Nextcloud необходим настроенный веб-сервер.
 
Необходимо установить следующие пакеты:
Необходимо установить следующие пакеты:
<pre># apt-get install apache2 apache2-mod_php5 apache2-mod_ssl php5 php5-zip php5-dom php5-mbstring php5-gd2 php5-curl php5-pdo php5-xmlreader php5-openssl php5-fileinfo</pre>
<source lang="text" highlight="1"># apt-get install apache2 apache2-mod_php7 apache2-mod_ssl php7 php7-zip php7-libs php7-mbstring php7-gd php7-curl php7-pdo php7-xmlreader php7-openssl php7-fileinfo tzdata</source>
 
Разрешим нужные модули Apache2:
Разрешим нужные модули Apache2:
<pre># a2enmod ssl
<source lang="text" highlight="1-6"># a2enmod ssl
# a2enmod headers
# a2enmod headers
# a2enmod env
# a2enmod env
# a2enmod rewrite
# a2enmod rewrite
# a2enmod mime
# a2enmod mime
# a2enmod dir</pre>
# a2enmod dir
</source>
 
Запустить веб-сервер Apache2 и добавить его в автозагрузку:
<source lang="text" highlight="1">systemctl enable --now httpd2</source>


=== Установка ===
=== Установка ===
==== С помощью web-установщика ====
 
Рассмотрим установку Nextcloud на сервер c Apache2 с помощью web-установщика.<br>
{{Attention|Инсталятор системы может ставить пакет ( installer-feature-apache2-indexhtml-stage2 ?? )  который правит
У web-сервера должны быть права на запись в директорию с файлом {{path|setup-nextcloud.php}}<br>
в файлах {{path|/etc/httpd2/conf/sites-available/default.conf}} и {{path|/etc/httpd2/conf/sites-available/default_https.conf}}
строчку /var/www/html  на /usr/share/doc/indexhtml/
 
Проверить командой grep:
<source lang="text" highlight="1">
# grep DocumentRoot  /etc/httpd2/conf/sites-available/default.conf
        # DocumentRoot: The directory out of which you will serve your
        '''DocumentRoot "/usr/share/doc/indexhtml/"'''
        # This should be changed to whatever you set DocumentRoot to.
                # Summary: Configure for html documents in DocumentRoot
                # access content that does not live under the DocumentRoot.
</source>
 
Если строчка DocumentRoot не содержит /var/www/html запустите команды ниже:
<source lang="text" highlight="1-2">
sed -i "s|/usr/share/doc/indexhtml|/var/www/html|" /etc/httpd2/conf/sites-available/default.conf
sed -i "s|/usr/share/doc/indexhtml|/var/www/html|" /etc/httpd2/conf/sites-available/default_https.conf
</source>
}}
 
У веб-сервера должны быть права на запись в директорию с файлом {{path|setup-nextcloud.php}}.
 
Права можно назначить, временно, добавив пользователя apache2 в группу webmaster:
Права можно назначить, временно, добавив пользователя apache2 в группу webmaster:
<pre># usermod -a -G webmaster apache2
<source lang="text" highlight="1-2">
# systemctl restart httpd2</pre>
# usermod -a -G webmaster apache2
Зайдите на сайт https://nextcloud.com/install/ в раздел Download -> Web-installer и скачайте в корень вашего web-сервера {{path|/var/www/html}} файл {{path|setup-nextcloud.php}}:
# systemctl restart httpd2
<pre># cd /var/www/html/
</source>
# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php</pre>
 
Зайдите на сайт https://nextcloud.com/install/ в раздел Download -> Web-installer и скачайте в корень вашего веб-сервера {{path|/var/www/html}} файл {{path|setup-nextcloud.php}}:
 
<source lang="text" highlight="1-2">
# cd /var/www/html/
# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
</source>
 
Далее переходим по ссылке:
Далее переходим по ссылке:
<pre>http://your_web_server_adress/setup-nextcloud.php</pre>
<source lang="text">http://your_web_server_adress/setup-nextcloud.php</source>
И следуем инструкциям установщика. По умолчанию Nextcloud устанавливается в подпапку {{path|/var/www/html/nextcloud}}
 
И следуем инструкциям установщика.
 
По умолчанию Nextcloud устанавливается в подпапку {{path|/var/www/html/nextcloud}}:
 
[[Файл:NextcloudInstallFolder.png|Установка Nextcloud. Проверка зависимостей и выбор каталога]]
 
После установки удалим пользователя apache2 из группы webmaster:
После установки удалим пользователя apache2 из группы webmaster:
<pre># gpasswd -d apache2 webmaster</pre>
<source lang="text" highlight="1"># gpasswd -d apache2 webmaster</source>
==== Рекомендации по безопасности ====
 
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД (см. [[Nextcloud#Завершение установки]]).
 
=== Рекомендации по безопасности ===
Также рекомендуется сменить владельца файлов nextcloud на root, оставив Apache2 доступ на запись к папкам {{path|data config apps}}:
Также рекомендуется сменить владельца файлов nextcloud на root, оставив Apache2 доступ на запись к папкам {{path|data config apps}}:
<pre># chown -R root /var/www/html/nextcloud/
<source lang="text" highlight="1-4">
# chown -R root /var/www/html/nextcloud/
# chown -R apache2 /var/www/html/nextcloud/apps/
# chown -R apache2 /var/www/html/nextcloud/apps/
# chown -R apache2 /var/www/html/nextcloud/config/
# chown -R apache2 /var/www/html/nextcloud/config/
# chown -R apache2 /var/www/html/nextcloud/data/</pre>
# chown -R apache2 /var/www/html/nextcloud/data/
=== Настройка кэширования ===
</source>
Далее необходимо настроить систему кэширования:<br>
 
== Из репозитория ==
 
Установить Nextcloud и все модули необходимые для его работы, можно выполнив команду:
<source lang="text" highlight="1">apt-get install nextcloud nextcloud-apache2 </source>
 
Частью установки пакета {{pkg|nextcloud-apache2}} является файл настроек виртуального хоста nextcloud. Изменить его под свои нужды нужно здесь — {{path|/etc/httpd2/conf/sites-available/nextcloud.conf}}. Также он автоматически включает этот хост в разрешенные и включает все необходимые модули apache2 (для оптимальной работы сервиса).
 
Запустить веб-сервер Apache2 и добавить его в автозагрузку:
<source lang="text" highlight="1">systemctl enable --now httpd2</source>
 
Nextcloud будет установлен в {{path|/var/www/webapps/nextcloud}}, {{path|/var/www/webapps/nextcloud/config/config.php}} — файл конфигурации Nextcloud, веб-интерфейс будет доступен по ссылке:
<source lang="text">http://your_web_server_adress/nextcloud</source>
 
Далее нужно получить доступ к веб-интерфейсу Nextcloud и завершить установку.
 
== Завершение установки ==
 
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД (по умолчанию SQLite).
 
===SQLite===
 
Если будет использоваться база данных SQLite (для крупных проектов рекомендуется выбрать другой тип базы данных), создайте учетную запись администратора Nextcloud, заполнив поля «Имя пользователя» и «Пароль», и нажмите кнопку «Завершить установку»:
 
[[Файл:NextcloudInstallSQLite.png|Установка Nextcloud с базой данных SQLite]]
 
===MySQL/MariaDB для Nextcloud===
Если будет использоваться база данных MySQL/MariaDB:
#Установить необходимые пакеты для MySQL или для MariDB:
#:<source lang="text" highlight="1">
# apt-get install MySQL[mariadb]-server php7-pdo_mysql
</source>
#Запустить сервер mysqld и добавить его в автозагрузку:
#:<source lang="text" highlight="1">
# systemctl enable --now mysqld (mariadb.service)
</source>
#Создать базу данных для Nextcloud:
#* авторизоваться на сервере баз данных
#*:<source lang="text" highlight="1">
$ mysql -u root
</source>
#*если пароль пользователя root@localhost в MySQL установлен, ввести команду:
#*:<source lang="text" highlight="1">
$ mysql -u root -p
Enter password:
</source>
#*Выполнить команды для создания базы данных nextcloud и пользователя базы данных nextcloud с паролем nextpass:
#*:<source lang="text" highlight="1-5">
MariaDB [(none)]> create user 'nextcloud'@'localhost' identified by 'nextpass';
MariaDB [(none)]> create database nextcloud default character set utf8 collate utf8_unicode_ci;
MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost;
MariaDB [(none)]> exit;
</source>
#В веб-интерфейсе Nextcloud создайте учетную запись администратора, заполнив поля «Имя пользователя» и «Пароль», раскройте список «Хранилище и база данных», выберите MySQL/MariaDB, и заполните поля подключения к базе данных, данными, которые использовались на этапе настройки базы данных. Для завершения установки нажмите кнопку «Завершить установку»:
#:[[Файл:NextcloudInstallMySQL.png|Установка Nextcloud с базой данных MySQL]]
 
===PostgreSQL===
 
{{Note|В [[p9]] на данный момент поддерживается несколько версий PostgreSQL. В данной статье мы будем использовать версию postgresql 9.6.}}
 
Если будет использоваться база данных PostgreSQL:
 
#Установить необходимые пакеты для PostgreSQL:
#:<source lang="text" highlight="1"># apt-get install postgresql9.6-server php7-pgsql php7-pdo_pgsql</source>
#Подготовить к запуску и настроить службы PostgreSQL:
#*создать системные базы данных:
#*:<source lang="text" highlight="1">
# /etc/init.d/postgresql initdb
</source>
#*включить по умолчанию и запустить службу:
#*:<source lang="text" highlight="1">
# systemctl enable --now postgresql
</source>
#Создать базу данных Nextcloud:
#*создать пользователя nextcloud (пароль необходимо запомнить) и базу данных nextcloud (под правами root):
#*:<source lang="text" highlight="1,4">
# su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt nextcloud'
Введите пароль для новой роли:
Повторите его:
# su - postgres -s /bin/sh -c 'createdb -O nextcloud nextcloud'
</source>
#В веб-интерфейсе Nextcloud создайте учетную запись администратора, заполнив поля «Имя пользователя» и «Пароль», раскройте список «Хранилище и база данных», выберите PostgreSQL, и заполните поля подключения к базе данных, данными, которые использовались на этапе создания базы данных. Для завершения установки нажмите кнопку «Завершить установку».
#:[[Файл:NextcloudInstallPostgreSQL.png|Установка Nextcloud с базой данных PostgreSQL]]
 
== Настройка кэширования ==
Далее необходимо настроить систему кэширования.
 
Установим следующие пакеты:
Установим следующие пакеты:
<pre># apt-get install php5-apcu memcached php5-memcached</pre>
<source lang="text" highlight="1"># apt-get install php7-apcu memcached php7-memcached</source>
 
Добавляем службу memcached в автозагрузку и стартуем ее:  
Добавляем службу memcached в автозагрузку и стартуем ее:  
<pre># systemctl enable memcached
<source lang="text" highlight="1"># systemctl enable --now memcached</source>
# systemctl start memcached</pre>
 
Добавим в {{path|config.php}} (находится в папке {{path|/var/www/html/nextcloud/config/}}) следующие строки:
Добавим в {{path|config.php}} (находится в папке {{path|/var/www/html/nextcloud/config/}} или {{path|/var/www/webapps/nextcloud/config/}} — при установке из репозитория) следующие строки:
<pre>'memcache.local' => '\OC\Memcache\APCu',
<source lang="text">'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
'memcached_servers' => array(
            array('localhost', 11211),
  array('localhost', 11211),
                            ),</pre>
),
=== Создание самоподписных SSL сертификатов ===
</source>
Для правильной работы SSL нам необходимы SSL-сертификаты. Их можно купить или сгенерировать:<br>
 
1. Создаем ключ корневого хранилища, наш самый главный ключ:
== Создание самоподписных SSL сертификатов ==
<pre>openssl genrsa -des3 -out nextcloud-domain-ca.key 2048</pre>
 
2. Создаем и зашифровываем ключом корневого хранилища корневой сертификат, сертификат издателя сертификатов:
Для правильной работы SSL нам необходимы SSL-сертификаты. Их можно купить или сгенерировать:
{{Attention|При запросе Common Name необходимо указать доменное имя сайта или ip-адрес}}
#Перейти в каталог {{path|/root/ssl}}:
<pre>openssl req -new -x509 -days 3650 -key nextcloud-domain-ca.key -out nextcloud-domain-ca.crt</pre>
#:<source lang="text" highlight="1">mkdir -p /root/ssl && cd /root/ssl</source>
3. Создаем ключ веб-сервера, который вы намерены защитить сертификатом:
#Создаем ключ корневого хранилища, наш самый главный ключ:
<pre>openssl genrsa -des3 -out nextcloud.key 1024</pre>
#:<source lang="text" highlight="1">openssl genrsa -des3 -out nextcloud-domain-ca.key 2048</source>
4. Создаем запрос на подписание сертификата веб-сервера:
#Создаем и зашифровываем ключом корневого хранилища корневой сертификат, сертификат издателя сертификатов (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера):
{{Attention|При запросе Common Name необходимо указать доменное имя сайта или ip-адрес}}
#:<source lang="text" highlight="1">openssl req -new -x509 -days 3650 -key nextcloud-domain-ca.key -out nextcloud-domain-ca.crt</source>
<pre>openssl req -new -key nextcloud.key -out nextcloud.csr</pre>
#Создаем ключ веб-сервера, который вы намерены защитить сертификатом:
5. Создаем и подписываем сертификат веб-сервера, используя запрос на сертификат, корневой ключ и корневой сертификат:
#:<source lang="text" highlight="1">openssl genrsa -des3 -out nextcloud.key 1024</source>
<pre>openssl x509 -req -in nextcloud.csr -out nextcloud.crt -sha1 -CA nextcloud-domain-ca.crt -CAkey nextcloud-domain-ca.key -CAcreateserial -days 3650</pre>
#Создаем запрос на подписание сертификата веб-сервера (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера):
6. Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если это вам не нужно, сделайте страховую копию ключа веб-сервера:
#:<source lang="text" highlight="1">openssl req -new -key nextcloud.key -out nextcloud.csr</source>
<pre>cp nextcloud.key nextcloud.key.dist</pre>
#Создаем и подписываем сертификат веб-сервера, используя запрос на сертификат, корневой ключ и корневой сертификат:
и очистите пароль ключа веб-сервера командой:
#:<source lang="text" highlight="1">openssl x509 -req -in nextcloud.csr -out nextcloud.crt -sha1 -CA nextcloud-domain-ca.crt -CAkey nextcloud-domain-ca.key -CAcreateserial -days 3650</source>
<pre>openssl rsa -in nextcloud.key.dist -out nextcloud.key</pre>
#Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если это вам не нужно, сделайте страховую копию ключа веб-сервера:
7. Создадим цепочку сертификатов CA-bundle:
#:<source lang="text" highlight="1">cp nextcloud.key nextcloud.key.dist</source>
<pre>cat nextcloud.crt nextcloud-domain-ca.crt > nextcloud.ca-bundle</pre>
#:и очистите пароль ключа веб-сервера командой:
8. В итоге у нас будут следующие файлы:
#:<source lang="text" highlight="1">openssl rsa -in nextcloud.key.dist -out nextcloud.key</source>
<pre>nextcloud.crt - сертификат нашего сервера
#Создадим цепочку сертификатов CA-bundle:
nextcloud.csr - запрос на сертификат
#:<source lang="text" highlight="1">cat nextcloud.crt nextcloud-domain-ca.crt > nextcloud.ca-bundle</source>
nextcloud.key - ключ сертификата нашего сервера
#В итоге у нас будут следующие файлы:
nextcloud.ca-bundle - ca-bundle файл нашего сайта
#:<source lang="text">nextcloud.crt — сертификат нашего сервера
nextcloud-domain-ca.crt - корневой сертификат
nextcloud.csr — запрос на сертификат
nextcloud-domain-ca.key - ключ корневого сертификата</pre>
nextcloud.key — ключ сертификата нашего сервера
nextcloud.ca-bundle — ca-bundle файл нашего сайта
nextcloud-domain-ca.crt — корневой сертификат
nextcloud-domain-ca.key — ключ корневого сертификата</source>
 
=== Конфигурационный файл Apache2 ===
=== Конфигурационный файл Apache2 ===
Теперь создадим конфигурационный файл нашего сайта и настроим SSL-доступ<br>
Теперь создадим конфигурационный файл нашего сайта и настроим SSL-доступ.
 
Включим 443 порт:
Включим 443 порт:
<pre># a2enport https</pre>
<source lang="text" highlight="1"># a2enport https</source>
Скопируем стандартный конфигурационный файл:
 
<pre># cd /etc/httpd2/conf/sites-available/
Скопируем стандартный конфигурационный файл и назовём его {{path|nextcloud.conf}}:
# cp default_https.conf nextcloud.conf</pre>
<source lang="text" highlight="1,2"># cd /etc/httpd2/conf/sites-available/
Ваш конфигурационный файл должен содержать следующие строки (вместо ip-адреса можно указать DNS-имя):
# cp default_https.conf nextcloud.conf
</source>
 
Ваш конфигурационный {{path|/etc/httpd2/conf/sites-available/nextcloud.conf}} файл должен содержать следующие строки (вместо ip-адреса можно указать DNS-имя):
<source lang="apache"><VirtualHost *:443>
<source lang="apache"><VirtualHost *:443>
     DocumentRoot "/var/www/html/nextcloud"
     DocumentRoot "/var/www/html/nextcloud"
Строка 110: Строка 256:
   Redirect permanent / https://10.10.10.10/
   Redirect permanent / https://10.10.10.10/
</VirtualHost></source>
</VirtualHost></source>
Добавим наш сайт в разрешенные и перезапустим web-сервер:
 
<pre># a2ensite nextcloud
{{Note| Если nextcloud устанавливался из репозитория {{path|/var/www/html/nextcloud}} в директиве '''DocumentRoot''' и '''Directory''' необходимо заменить на {{path|/var/www/webapps/nextcloud}}. }}
# systemctl restart httpd2</pre>
 
Добавим наш сайт в разрешенные и перезапустим веб-сервер:
<source lang="text" highlight="1,2">
# a2ensite nextcloud
# systemctl restart httpd2
</source>
Теперь Nextcloud доступен по адресу {{path|https://10.10.10.10/}}
Теперь Nextcloud доступен по адресу {{path|https://10.10.10.10/}}
При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка {{path|SEC_ERROR_UNKNOWN_ISSUER}}) необходимо добавить его в исключения.
При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка {{path|SEC_ERROR_UNKNOWN_ISSUER}}) необходимо добавить его в исключения.
Строка 128: Строка 279:
*Анонимное редактирование файлов доступных для общего пользования
*Анонимное редактирование файлов доступных для общего пользования
=== Установка ===
=== Установка ===
Для работы Collaboro необходимо установить docker-io добавить сервис в автозапуск:
Для работы Collabora Online необходимо установить docker-io и добавить сервис в автозапуск:
<pre># apt-get install docker-io
<source lang="text" highlight="1,2">
# systemctl enable docker
# apt-get install docker-io
# systemctl start docker
# systemctl enable --now docker
</pre>
</source>
 
Далее необходимо скачать образ Collabora Online с помощью docker:
Далее необходимо скачать образ Collabora Online с помощью docker:
<pre># docker pull collabora/code</pre>
<source lang="text" highlight="1"># docker pull collabora/code</source>
И запустить образ docker заменив имя домена на нужное, все точки '.' должны быть экранированны '//':
 
<pre># docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=10\\.10\\.10\\.10' --restart always --cap-add MKNOD collabora/code</pre>
Запустить образ docker заменив имя домена на нужное, все точки '.' должны быть экранированны '//':
Далее надо настроить reverse proxy<br>
<source lang="text" highlight="1">
# docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=10\\.10\\.10\\.10' --restart always --cap-add MKNOD collabora/code
</source>
 
Далее надо настроить reverse proxy.
 
Загрузите необходимые модули:
Загрузите необходимые модули:
<pre># a2enmod proxy
<source lang="text" highlight="1-4">
# a2enmod proxy
# a2enmod proxy_wstunnel
# a2enmod proxy_wstunnel
# a2enmod proxy_http
# a2enmod proxy_http
# a2enmod ssl</pre>
# a2enmod ssl
После этого необходимо правильно сконфигурировать Apache2, мы запустим обратный-прокси на порту 4443, так же его можно запустить на под-домене (например {{path|office.nextcloud.com}}):
</source>
Создадим в директории {{path|/etc/httpd2/conf/sites-available/}} файл <pre>officenextcloud.conf</pre> следующего содержания, так как мы используем ip-адрес, то указываем тот же сертификат, что и для nextcloud. В случае с доменными именами, нам надо сгенерировать отдельный сертификат для нового доменного имени (п.3-п.7):
 
После этого необходимо правильно сконфигурировать Apache2, мы запустим обратный-прокси на порту 4443. Так же его можно запустить на поддомене (например {{path|office.nextcloud.com}}).
 
Создадим в директории {{path|/etc/httpd2/conf/sites-available/}} файл {{path|officenextcloud.conf}} следующего содержания:  


<source lang="apache"><VirtualHost *:4443>
<source lang="apache"><VirtualHost *:4443>
Строка 193: Строка 354:
         Listen 4443
         Listen 4443
</IfModule></source>
</IfModule></source>
{{Attention|Обязательно необходимо зайти по адресу https://10.10.10.10:4443/ и добавить сертификат в исключения браузера}}
 
{{Note|Так как мы используем ip-адрес, то указываем тот же сертификат, что и для nextcloud. В случае с доменными именами, нам надо сгенерировать отдельный сертификат для нового доменного имени (п.3-п.7).}}
 
Так же необходимо добавить наши самоподписные сертификаты в Nextcloud, для покупных сертификатов данное действие не требуется:
Так же необходимо добавить наши самоподписные сертификаты в Nextcloud, для покупных сертификатов данное действие не требуется:
<pre># cat /root/ssl/nextcloud.ca-bundle >> /var/www/html/nextcloud/resources/config/ca-bundle.crt</pre>
<source lang="text" highlight="1">
# cat /root/ssl/nextcloud.ca-bundle >> /var/www/html/nextcloud/resources/config/ca-bundle.crt
</source>
Далее добавляем наш сайт в разрешенные и перезапускаем Apache2:
Далее добавляем наш сайт в разрешенные и перезапускаем Apache2:
<pre># a2ensite officenextcloud
<source lang="text" highlight="1,2">
# systemctl restart httpd2</pre>
# a2ensite officenextcloud
# systemctl restart httpd2
</source>
{{Attention|Обязательно необходимо зайти по адресу https://10.10.10.10:4443/ и добавить сертификат в исключения браузера.}}


=== Настройка Collabora Online в Nextcloud ===
=== Настройка Collabora Online в Nextcloud ===
1. Заходим на сайт c Nextcloud -> Файлы -> Приложения -> Office & text -> Collabora Online -> Включить
#Заходим на сайт c Nextcloud: «Приложения» -> «Офис и текст» -> «Collabora Online» -> «Включить».
2. Администрирование Collabora Online -> Collabora Online сервер -> указываем адрес нашего сервера с портом ({{path|https://10.10.10.10:4443}})
#Настройки -> «Collabora Online» -> указываем адрес нашего сервера с портом ({{path|https://10.10.10.10:4443}}):
 
[[Файл:NextcloudCollaboraOnline.png|Настройка Collabora Online в Nextcloud]]
 
{{Note| Если соединения с сервером не происходит, попробуйте заменить содержимое директивы ''SSLCipherSuite'' в файле {{path|/etc/httpd2/conf/sites-available/officenextcloud.conf}} на:
<pre>HIGH:MEDIUM:!aNULL:!MD5</pre>
и перезапустить Apache2:
<source lang="text" highlight="1">
# systemctl restart httpd2
</source>
}}
 
Теперь документы можно редактировать в браузере:
 
[[Файл:NextcloudCollaboraOnlineDoc.png|800px|Collabora Online в Nextcloud]]
 
=== Обновление Collabora Docker ===
=== Обновление Collabora Docker ===
1. Скачиваем свежий образ:
# Скачиваем свежий образ:
<pre># docker pull collabora/code</pre>
#:<source lang="text" highlight="1"># docker pull collabora/code</source>
2. Выясняем id контейнера:
# Выясняем id контейнера:
<pre>docker ps</pre>
#:<source lang="text" highlight="1">docker ps</source>
3. Останавливаем и удаляем старый контейнер:
# Останавливаем и удаляем старый контейнер:
<pre>docker stop CONTAINER_ID
#:<source lang="text" highlight="1,2">docker stop CONTAINER_ID
docker rm CONTAINER_ID</pre>
docker rm CONTAINER_ID</source>
4. Запускаем новый контейнер:
# Запускаем новый контейнер:
<pre>docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=10\\.10\\.10\\.10' --restart always --cap-add MKNOD collabora/code</pre>
#:<source lang="text" highlight="1">docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=10\\.10\\.10\\.10' --restart always --cap-add MKNOD collabora/code</source>
== Интеграция с LDAP ==
 
Для интеграции базы пользователей с LDAP необходимо в приложениях включить "LDAP user and group backend".<br>
= Интеграция с LDAP =
Далее переходим на страницу администрирования Nextcloud -> LDAP / AD integration.
 
На этой странице необходимо указать параметры подключения к LDAP:<br>
Nextcloud поставляется с приложением LDAP, позволяющим пользователям LDAP (включая Active Directory и FreeIPA) появляться в списках пользователей Nextcloud.
Вкладка Server:<br>
 
[[Файл:Nextcloudldap01.jpg]]<br>
{{Note| Должен быть установлен модуль для PHP LDAP:
Вкладка Users:<br>
<source lang="text" highlight="1-2">
[[Файл:Nextcloudldap02.jpg]]<br>
# apt-get install php7-ldap
Вкладка Login Attributes:<br>
# systemctl restart httpd2
[[Файл:Nextcloudldap03.jpg]]<br>
</source>}}
Вкладка Groups:<br>
 
[[Файл:Nextcloudldap04.jpg]]<br>
Ниже показана настройка интеграции с FreeIPA (сервер ipa.example.test).
На вкладке Advanced -> Directory Settings:<br>
 
*'''User Display Name Field:''' displayname
Для интеграции базы пользователей с LDAP необходимо в списке приложений Nextcloud включить '''«LDAP user and group backend»'''.
*'''2nd User Display Name Field:''' mail
 
*'''Base User Tree:''' cn=users,cn=accounts,dc=ipa,dc=example,dc=test
Далее переходим на страницу администрирования Nextcloud: «Настройки» -> «Интеграция LDAP / AD» («LDAP / AD integration»).
*'''Base Group Tree:''' cn=groups,cn=accounts,dc=ipa,dc=example,dc=test
На этой странице необходимо указать параметры подключения к LDAP.
На вкладке Expert:<br>
 
*'''Internal Username Attribute:''' uid
Вкладка «Сервер» («Server»):
*'''UUID Attribute for Users:''' uid
 
[[Файл:Nextcloudldap01.png|Интеграция с LDAP. Вкладка «Сервер»]]
 
На сервере LDAP должна быть настроена учётная запись с правами чтения (DN user). От данной учетной записи будет выполняться подключение к серверу каталогов.
 
На вкладке «Сервер» нужно указать имя хоста LDAP-сервера, порт (если сервер LDAP работает на стандартном порту, порт будет обнаружен автоматически) и ввести учётные данные пользователя. В разных реализациях LDAP могут быть разные требования для указания учетной записи, например, во FreeIPA необходимо указать uid=nextcloud,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=test.
 
Для базы поиска пользователей и групп можно нажать кнопку «Определить базу поиска DN» — тогда будет определен корень домена. Или можно ввести самому конкретное подразделение.
 
Вкладка «Пользователи» («Users»). На этой вкладке можно указать, какие пользователи LDAP будут отображаться как пользователи Nextcloud:
 
[[Файл:Nextcloudldap02.png|Интеграция с LDAP. Вкладка «Пользователи»]]
 
Вкладка «Учетные данные» («Login Attributes»). Здесь можно задать поле, которое будет использоваться в качестве логина:
 
[[Файл:Nextcloudldap03.png|Интеграция с LDAP. Вкладка «Учетные данные»]]
 
Вкладка «Группы» («Groups»). Здесь можно задать фильтры для групп:
 
[[Файл:Nextcloudldap04.png|Интеграция с LDAP. Вкладка «Группы»]]
 
Вкладка «Дополнительно» («Advanced») -> раздел «Настройки каталога» («Directory Settings»):
 
*«Поле отображаемого имени пользователя» («User Display Name Field»): displayname
*«Вторичное поле отображаемого имени пользователя» («2nd User Display Name Field»): mail
*«База дерева пользователей» («Base User Tree»): cn=users,cn=accounts,dc=ipa,dc=example,dc=test
*«База дерева групп» («Base Group Tree»): cn=groups,cn=accounts,dc=ipa,dc=example,dc=test
 
[[Файл:Nextcloudldap05.png|Интеграция с LDAP. Вкладка «Дополнительно»]]
 
Вкладка «Эксперт» («Expert»):
 
*«Атрибут для внутреннего имени» («Internal Username Attribute»): uid
*«UUID-атрибуты для пользователей» («UUID Attribute for Users»): uid  
 
[[Файл:Nextcloudldap06.png|800px|Интеграция с LDAP. Вкладка «Эксперт»]]
 
Просмотреть список пользователей можно, выбрав пункт «Пользователи» (должны подгрузиться пользователи из ldap):
 
[[Файл:NextcloudldapUsers.png|800px|Пользователи Nextcloud]]
 
Теперь можно попробовать зайти доменным пользователем используя свой логин и пароль.
Теперь можно попробовать зайти доменным пользователем используя свой логин и пароль.


== Настройка SSO ==
= Настройка SSO =
Для работы прозрачной аутентификации (SSO) необходимо настроить web-сервер ([[Apache2/AD-auth|Apache]], [[Nginx/AD-auth|Nginx]]). Также желательно зделать интеграцию c LDAP<br>
 
Далее необходимо включить официальное приложение '''"SSO & SAML authentication"'''.<br>
Для работы прозрачной аутентификации (SSO) необходимо настроить веб-сервер ([[Apache2/AD-auth|Apache]], [[Nginx/AD-auth|Nginx]]). Также желательно сделать интеграцию c LDAP.
Далее переходим на страницу администрирования Nextcloud -> SSO & SAML authentication и указываем переменную с именем пользователя '''REMOTE_USER'''.<br>
 
Устанавливаем модуль для php7:
<source lang="text" highlight="1-2">
# apt-get install php7-ldap
# systemctl restart httpd2
</source>
Далее необходимо включить официальное приложение '''«SSO & SAML authentication»'''.
 
Далее переходим на страницу администрирования Nextcloud -> «Подтверждение подлинности SSO и SAML» («SSO & SAML authentication») и указываем переменную с именем пользователя '''REMOTE_USER'''.
 
Также поставим галочку, чтобы SSO пускал только известных пользователей.
Также поставим галочку, чтобы SSO пускал только известных пользователей.
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}
[[Категория:HOWTO]][[Категория:Enterprise Software]]

Версия от 10:19, 22 марта 2021

Nextcloud — облачное хранилище файлов.

Установка Nextcloud

Установить Nextcloud можно из репозитория или с официального сайта, если не устраивает версия из репозитория.

В данной статье рассмотрена установка Nextcloud на сервер c Apache2.

С официального сайта (с помощью веб-установщика)

Подготовка окружения

Для работы Nextcloud необходим настроенный веб-сервер.

Необходимо установить следующие пакеты:

# apt-get install apache2 apache2-mod_php7 apache2-mod_ssl php7 php7-zip php7-libs php7-mbstring php7-gd php7-curl php7-pdo php7-xmlreader php7-openssl php7-fileinfo tzdata

Разрешим нужные модули Apache2:

# a2enmod ssl
# a2enmod headers
# a2enmod env
# a2enmod rewrite
# a2enmod mime
# a2enmod dir

Запустить веб-сервер Apache2 и добавить его в автозагрузку:

systemctl enable --now httpd2

Установка

Внимание! Инсталятор системы может ставить пакет ( installer-feature-apache2-indexhtml-stage2 ?? ) который правит

в файлах /etc/httpd2/conf/sites-available/default.conf и /etc/httpd2/conf/sites-available/default_https.conf строчку /var/www/html на /usr/share/doc/indexhtml/

Проверить командой grep:

# grep DocumentRoot  /etc/httpd2/conf/sites-available/default.conf 
         # DocumentRoot: The directory out of which you will serve your
         '''DocumentRoot "/usr/share/doc/indexhtml/"'''
         # This should be changed to whatever you set DocumentRoot to.
                 # Summary: Configure for html documents in DocumentRoot
                 # access content that does not live under the DocumentRoot.

Если строчка DocumentRoot не содержит /var/www/html запустите команды ниже:

sed -i "s|/usr/share/doc/indexhtml|/var/www/html|" /etc/httpd2/conf/sites-available/default.conf
sed -i "s|/usr/share/doc/indexhtml|/var/www/html|" /etc/httpd2/conf/sites-available/default_https.conf


У веб-сервера должны быть права на запись в директорию с файлом setup-nextcloud.php.

Права можно назначить, временно, добавив пользователя apache2 в группу webmaster:

# usermod -a -G webmaster apache2
# systemctl restart httpd2

Зайдите на сайт https://nextcloud.com/install/ в раздел Download -> Web-installer и скачайте в корень вашего веб-сервера /var/www/html файл setup-nextcloud.php:

# cd /var/www/html/
# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php

Далее переходим по ссылке:

http://your_web_server_adress/setup-nextcloud.php

И следуем инструкциям установщика.

По умолчанию Nextcloud устанавливается в подпапку /var/www/html/nextcloud:

Установка Nextcloud. Проверка зависимостей и выбор каталога

После установки удалим пользователя apache2 из группы webmaster:

# gpasswd -d apache2 webmaster

Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД (см. Nextcloud#Завершение установки).

Рекомендации по безопасности

Также рекомендуется сменить владельца файлов nextcloud на root, оставив Apache2 доступ на запись к папкам data config apps:

# chown -R root /var/www/html/nextcloud/
# chown -R apache2 /var/www/html/nextcloud/apps/
# chown -R apache2 /var/www/html/nextcloud/config/
# chown -R apache2 /var/www/html/nextcloud/data/

Из репозитория

Установить Nextcloud и все модули необходимые для его работы, можно выполнив команду:

apt-get install nextcloud nextcloud-apache2

Частью установки пакета nextcloud-apache2 является файл настроек виртуального хоста nextcloud. Изменить его под свои нужды нужно здесь — /etc/httpd2/conf/sites-available/nextcloud.conf. Также он автоматически включает этот хост в разрешенные и включает все необходимые модули apache2 (для оптимальной работы сервиса).

Запустить веб-сервер Apache2 и добавить его в автозагрузку:

systemctl enable --now httpd2

Nextcloud будет установлен в /var/www/webapps/nextcloud, /var/www/webapps/nextcloud/config/config.php — файл конфигурации Nextcloud, веб-интерфейс будет доступен по ссылке:

http://your_web_server_adress/nextcloud

Далее нужно получить доступ к веб-интерфейсу Nextcloud и завершить установку.

Завершение установки

Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД (по умолчанию SQLite).

SQLite

Если будет использоваться база данных SQLite (для крупных проектов рекомендуется выбрать другой тип базы данных), создайте учетную запись администратора Nextcloud, заполнив поля «Имя пользователя» и «Пароль», и нажмите кнопку «Завершить установку»:

Установка Nextcloud с базой данных SQLite

MySQL/MariaDB для Nextcloud

Если будет использоваться база данных MySQL/MariaDB:

  1. Установить необходимые пакеты для MySQL или для MariDB:
    # apt-get install MySQL[mariadb]-server php7-pdo_mysql
    
  2. Запустить сервер mysqld и добавить его в автозагрузку:
    # systemctl enable --now mysqld (mariadb.service)
    
  3. Создать базу данных для Nextcloud:
    • авторизоваться на сервере баз данных
      $ mysql -u root
      
    • если пароль пользователя root@localhost в MySQL установлен, ввести команду:
      $ mysql -u root -p
      Enter password:
      
    • Выполнить команды для создания базы данных nextcloud и пользователя базы данных nextcloud с паролем nextpass:
      MariaDB [(none)]> create user 'nextcloud'@'localhost' identified by 'nextpass';
      MariaDB [(none)]> create database nextcloud default character set utf8 collate utf8_unicode_ci;
      MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost;
      MariaDB [(none)]> exit;
      
  4. В веб-интерфейсе Nextcloud создайте учетную запись администратора, заполнив поля «Имя пользователя» и «Пароль», раскройте список «Хранилище и база данных», выберите MySQL/MariaDB, и заполните поля подключения к базе данных, данными, которые использовались на этапе настройки базы данных. Для завершения установки нажмите кнопку «Завершить установку»:
    Установка Nextcloud с базой данных MySQL

PostgreSQL

Примечание: В p9 на данный момент поддерживается несколько версий PostgreSQL. В данной статье мы будем использовать версию postgresql 9.6.


Если будет использоваться база данных PostgreSQL:

  1. Установить необходимые пакеты для PostgreSQL:
    # apt-get install postgresql9.6-server php7-pgsql php7-pdo_pgsql
    
  2. Подготовить к запуску и настроить службы PostgreSQL:
    • создать системные базы данных:
      # /etc/init.d/postgresql initdb
      
    • включить по умолчанию и запустить службу:
      # systemctl enable --now postgresql
      
  3. Создать базу данных Nextcloud:
    • создать пользователя nextcloud (пароль необходимо запомнить) и базу данных nextcloud (под правами root):
      # su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt nextcloud'
      Введите пароль для новой роли: 
      Повторите его:
      # su - postgres -s /bin/sh -c 'createdb -O nextcloud nextcloud'
      
  4. В веб-интерфейсе Nextcloud создайте учетную запись администратора, заполнив поля «Имя пользователя» и «Пароль», раскройте список «Хранилище и база данных», выберите PostgreSQL, и заполните поля подключения к базе данных, данными, которые использовались на этапе создания базы данных. Для завершения установки нажмите кнопку «Завершить установку».
    Установка Nextcloud с базой данных PostgreSQL

Настройка кэширования

Далее необходимо настроить систему кэширования.

Установим следующие пакеты:

# apt-get install php7-apcu memcached php7-memcached

Добавляем службу memcached в автозагрузку и стартуем ее:

# systemctl enable --now memcached

Добавим в config.php (находится в папке /var/www/html/nextcloud/config/ или /var/www/webapps/nextcloud/config/ — при установке из репозитория) следующие строки:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
   array('localhost', 11211),
),

Создание самоподписных SSL сертификатов

Для правильной работы SSL нам необходимы SSL-сертификаты. Их можно купить или сгенерировать:

  1. Перейти в каталог /root/ssl:
    mkdir -p /root/ssl && cd /root/ssl
    
  2. Создаем ключ корневого хранилища, наш самый главный ключ:
    openssl genrsa -des3 -out nextcloud-domain-ca.key 2048
    
  3. Создаем и зашифровываем ключом корневого хранилища корневой сертификат, сертификат издателя сертификатов (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера):
    openssl req -new -x509 -days 3650 -key nextcloud-domain-ca.key -out nextcloud-domain-ca.crt
    
  4. Создаем ключ веб-сервера, который вы намерены защитить сертификатом:
    openssl genrsa -des3 -out nextcloud.key 1024
    
  5. Создаем запрос на подписание сертификата веб-сервера (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера):
    openssl req -new -key nextcloud.key -out nextcloud.csr
    
  6. Создаем и подписываем сертификат веб-сервера, используя запрос на сертификат, корневой ключ и корневой сертификат:
    openssl x509 -req -in nextcloud.csr -out nextcloud.crt -sha1 -CA nextcloud-domain-ca.crt -CAkey nextcloud-domain-ca.key -CAcreateserial -days 3650
    
  7. Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если это вам не нужно, сделайте страховую копию ключа веб-сервера:
    cp nextcloud.key nextcloud.key.dist
    
    и очистите пароль ключа веб-сервера командой:
    openssl rsa -in nextcloud.key.dist -out nextcloud.key
    
  8. Создадим цепочку сертификатов CA-bundle:
    cat nextcloud.crt nextcloud-domain-ca.crt > nextcloud.ca-bundle
    
  9. В итоге у нас будут следующие файлы:
    nextcloud.crt — сертификат нашего сервера
    nextcloud.csr — запрос на сертификат
    nextcloud.key — ключ сертификата нашего сервера
    nextcloud.ca-bundle — ca-bundle файл нашего сайта
    nextcloud-domain-ca.crt — корневой сертификат
    nextcloud-domain-ca.key — ключ корневого сертификата
    

Конфигурационный файл Apache2

Теперь создадим конфигурационный файл нашего сайта и настроим SSL-доступ.

Включим 443 порт:

# a2enport https

Скопируем стандартный конфигурационный файл и назовём его nextcloud.conf:

# cd /etc/httpd2/conf/sites-available/
# cp default_https.conf nextcloud.conf

Ваш конфигурационный /etc/httpd2/conf/sites-available/nextcloud.conf файл должен содержать следующие строки (вместо ip-адреса можно указать DNS-имя):

<VirtualHost *:443>
    DocumentRoot "/var/www/html/nextcloud"
    ServerName 10.10.10.10:443
    ServerAdmin webmaster@example.com
    ErrorLog "/var/log/httpd2/error_log"
    TransferLog "/var/log/httpd2/access_log"
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLCertificateFile "/root/ssl/nextcloud.crt"
    SSLCertificateKeyFile "/root/ssl/nextcloud.key"
    SSLCertificateChainFile "/root/ssl/nextcloud.ca-bundle"
    SSLCACertificateFile "/root/ssl/nextcloud-domain-ca.crt"
    <IfModule mod_headers.c>
          Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    </IfModule>
    <Directory /var/www/html/nextcloud>
            AllowOverride All
    </Directory>
</VirtualHost>

Так же можно настроить редирект с http на https добавив в файл конфигурации:

<VirtualHost *:80>
   ServerName 10.10.10.10
   Redirect permanent / https://10.10.10.10/
</VirtualHost>
Примечание: Если nextcloud устанавливался из репозитория /var/www/html/nextcloud в директиве DocumentRoot и Directory необходимо заменить на /var/www/webapps/nextcloud.


Добавим наш сайт в разрешенные и перезапустим веб-сервер:

# a2ensite nextcloud
# systemctl restart httpd2

Теперь Nextcloud доступен по адресу https://10.10.10.10/ При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка SEC_ERROR_UNKNOWN_ISSUER) необходимо добавить его в исключения.

Collabora Online в Nextcloud

Описание

Collabora Online это мощный онлайн офисный пакет, основанный на LibreOffice, который позволяет работать со всеми основными офисными форматами (документы/таблицы/презентации) прямо в браузере.

Особенности:

  • Базовое редактирование
  • Поддержка документов:
    • DOC, DOCX, PPT, PPTX, XLS, XLSX + ODF
    • Импорт / Просмотр Visio, Publisher, + более 100
  • WYSIWYG редактор
  • Анонимное редактирование файлов доступных для общего пользования

Установка

Для работы Collabora Online необходимо установить docker-io и добавить сервис в автозапуск:

# apt-get install docker-io
# systemctl enable --now docker

Далее необходимо скачать образ Collabora Online с помощью docker:

# docker pull collabora/code

Запустить образ docker заменив имя домена на нужное, все точки '.' должны быть экранированны '//':

# docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=10\\.10\\.10\\.10' --restart always --cap-add MKNOD collabora/code

Далее надо настроить reverse proxy.

Загрузите необходимые модули:

# a2enmod proxy
# a2enmod proxy_wstunnel
# a2enmod proxy_http
# a2enmod ssl

После этого необходимо правильно сконфигурировать Apache2, мы запустим обратный-прокси на порту 4443. Так же его можно запустить на поддомене (например office.nextcloud.com).

Создадим в директории /etc/httpd2/conf/sites-available/ файл officenextcloud.conf следующего содержания:

<VirtualHost *:4443>
  ServerName 10.10.10.10:4443

  # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
  SSLEngine on
  SSLCertificateFile "/root/ssl/nextcloud.crt"
  SSLCertificateKeyFile "/root/ssl/nextcloud.key"
  SSLCertificateChainFile "/root/ssl/nextcloud.ca-bundle"
  SSLCACertificateFile "/root/ssl/nextcloud-domain-ca.crt"
  SSLProtocol             all -SSLv2 -SSLv3
  SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
  SSLHonorCipherOrder     on

  # Encoded slashes need to be allowed
  AllowEncodedSlashes NoDecode

  # Container uses a unique non-signed certificate
  SSLProxyEngine On
  SSLProxyVerify None
  SSLProxyCheckPeerCN Off
  SSLProxyCheckPeerName Off

  # keep the host
  ProxyPreserveHost On

  # static html, js, images, etc. served from loolwsd
  # loleaflet is the client part of LibreOffice Online
  ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
  ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet

  # WOPI discovery URL
  ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
  ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery

  # Main websocket
  ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

  # Admin Console websocket
  ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws

  # Download as, Fullscreen presentation and Image upload operations
  ProxyPass           /lool https://127.0.0.1:9980/lool
  ProxyPassReverse    /lool https://127.0.0.1:9980/lool
</VirtualHost>
<IfModule ssl_module>
        Listen 4443
</IfModule>
Примечание: Так как мы используем ip-адрес, то указываем тот же сертификат, что и для nextcloud. В случае с доменными именами, нам надо сгенерировать отдельный сертификат для нового доменного имени (п.3-п.7).


Так же необходимо добавить наши самоподписные сертификаты в Nextcloud, для покупных сертификатов данное действие не требуется:

# cat /root/ssl/nextcloud.ca-bundle >> /var/www/html/nextcloud/resources/config/ca-bundle.crt

Далее добавляем наш сайт в разрешенные и перезапускаем Apache2:

# a2ensite officenextcloud
# systemctl restart httpd2
Внимание! Обязательно необходимо зайти по адресу https://10.10.10.10:4443/ и добавить сертификат в исключения браузера.


Настройка Collabora Online в Nextcloud

  1. Заходим на сайт c Nextcloud: «Приложения» -> «Офис и текст» -> «Collabora Online» -> «Включить».
  2. Настройки -> «Collabora Online» -> указываем адрес нашего сервера с портом (https://10.10.10.10:4443):

Настройка Collabora Online в Nextcloud

Примечание: Если соединения с сервером не происходит, попробуйте заменить содержимое директивы SSLCipherSuite в файле /etc/httpd2/conf/sites-available/officenextcloud.conf на:
HIGH:MEDIUM:!aNULL:!MD5

и перезапустить Apache2:

# systemctl restart httpd2


Теперь документы можно редактировать в браузере:

Collabora Online в Nextcloud

Обновление Collabora Docker

  1. Скачиваем свежий образ:
    # docker pull collabora/code
    
  2. Выясняем id контейнера:
    docker ps
    
  3. Останавливаем и удаляем старый контейнер:
    docker stop CONTAINER_ID
    docker rm CONTAINER_ID
    
  4. Запускаем новый контейнер:
    docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=10\\.10\\.10\\.10' --restart always --cap-add MKNOD collabora/code
    

Интеграция с LDAP

Nextcloud поставляется с приложением LDAP, позволяющим пользователям LDAP (включая Active Directory и FreeIPA) появляться в списках пользователей Nextcloud.

Примечание: Должен быть установлен модуль для PHP LDAP:
# apt-get install php7-ldap
# systemctl restart httpd2


Ниже показана настройка интеграции с FreeIPA (сервер ipa.example.test).

Для интеграции базы пользователей с LDAP необходимо в списке приложений Nextcloud включить «LDAP user and group backend».

Далее переходим на страницу администрирования Nextcloud: «Настройки» -> «Интеграция LDAP / AD» («LDAP / AD integration»). На этой странице необходимо указать параметры подключения к LDAP.

Вкладка «Сервер» («Server»):

Интеграция с LDAP. Вкладка «Сервер»

На сервере LDAP должна быть настроена учётная запись с правами чтения (DN user). От данной учетной записи будет выполняться подключение к серверу каталогов.

На вкладке «Сервер» нужно указать имя хоста LDAP-сервера, порт (если сервер LDAP работает на стандартном порту, порт будет обнаружен автоматически) и ввести учётные данные пользователя. В разных реализациях LDAP могут быть разные требования для указания учетной записи, например, во FreeIPA необходимо указать uid=nextcloud,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=test.

Для базы поиска пользователей и групп можно нажать кнопку «Определить базу поиска DN» — тогда будет определен корень домена. Или можно ввести самому конкретное подразделение.

Вкладка «Пользователи» («Users»). На этой вкладке можно указать, какие пользователи LDAP будут отображаться как пользователи Nextcloud:

Интеграция с LDAP. Вкладка «Пользователи»

Вкладка «Учетные данные» («Login Attributes»). Здесь можно задать поле, которое будет использоваться в качестве логина:

Интеграция с LDAP. Вкладка «Учетные данные»

Вкладка «Группы» («Groups»). Здесь можно задать фильтры для групп:

Интеграция с LDAP. Вкладка «Группы»

Вкладка «Дополнительно» («Advanced») -> раздел «Настройки каталога» («Directory Settings»):

  • «Поле отображаемого имени пользователя» («User Display Name Field»): displayname
  • «Вторичное поле отображаемого имени пользователя» («2nd User Display Name Field»): mail
  • «База дерева пользователей» («Base User Tree»): cn=users,cn=accounts,dc=ipa,dc=example,dc=test
  • «База дерева групп» («Base Group Tree»): cn=groups,cn=accounts,dc=ipa,dc=example,dc=test

Интеграция с LDAP. Вкладка «Дополнительно»

Вкладка «Эксперт» («Expert»):

  • «Атрибут для внутреннего имени» («Internal Username Attribute»): uid
  • «UUID-атрибуты для пользователей» («UUID Attribute for Users»): uid

Интеграция с LDAP. Вкладка «Эксперт»

Просмотреть список пользователей можно, выбрав пункт «Пользователи» (должны подгрузиться пользователи из ldap):

Пользователи Nextcloud

Теперь можно попробовать зайти доменным пользователем используя свой логин и пароль.

Настройка SSO

Для работы прозрачной аутентификации (SSO) необходимо настроить веб-сервер (Apache, Nginx). Также желательно сделать интеграцию c LDAP.

Устанавливаем модуль для php7:

# apt-get install php7-ldap
# systemctl restart httpd2

Далее необходимо включить официальное приложение «SSO & SAML authentication».

Далее переходим на страницу администрирования Nextcloud -> «Подтверждение подлинности SSO и SAML» («SSO & SAML authentication») и указываем переменную с именем пользователя REMOTE_USER.

Также поставим галочку, чтобы SSO пускал только известных пользователей.