Nextcloud: различия между версиями
Pechenovv (обсуждение | вклад) (добавлена информация про пароль при разворачивании через deploy) |
|||
Строка 12: | Строка 12: | ||
* Сайт: https://nextcloud.com ([http://docs.nextcloud.com документация]) | * Сайт: https://nextcloud.com ([http://docs.nextcloud.com документация]) | ||
* Лицензия: AGPL-3.0 | * Лицензия: AGPL-3.0 | ||
= Установка Nextcloud = | == Что такое Nextcloud == | ||
Nextcloud — веб-приложение для синхронизации данных, общего доступа к файлам и удалённого хранения документов в «облаке». | |||
Файлы Nextcloud хранятся в обычных структурах каталогов и могут быть доступны через WebDAV, если это необходимо. | |||
Основной сайт проекта: https://nextcloud.com/. | |||
Nextcloud можно установить при установке ALT Linux Server 10.1, выбрав для установки пункт Сервер Nextcloud (подробнее описано в главе [https://docs.altlinux.org/ru-RU/alt-server/10.1/html-single/alt-server/index.html#install-distro--install-system--chapter Установка системы]). | |||
* [https://docs.altlinux.org/ru-RU/alt-server/10.1/html-single/alt-server/index.html#nextcloud Руководство пользователя Альт Сервер 10.1] | |||
* Сайт: https://nextcloud.com ([http://docs.nextcloud.com документация]) | |||
* Лицензия: AGPL-3.0 | |||
== Установка Nextcloud == | |||
Установить Nextcloud можно из репозитория или с официального сайта, если не устраивает версия из репозитория. | Установить Nextcloud можно из репозитория или с официального сайта, если не устраивает версия из репозитория. | ||
{{note|Начиная с версии php8.0, пакеты модулей именуются следующим образом: | {{note|Начиная с версии php8.0, пакеты модулей именуются следующим образом: | ||
php<мажорная>.<минорная версии>-<имя модуля | php<мажорная>.<минорная версии>-<имя модуля> | ||
Из репозитория можно установить и эксплуатировать в одной системе одновременно разные версии php.}} | |||
=== Из репозитория === | |||
==== Используя Deploy ==== | |||
{{ | Развернуть Nextcloud можно используя пакет {{pkg|deploy}} (см. [[Deploy]]): | ||
<syntaxhighlight lang="bash"># apt-get install deploy | |||
# deploy nextcloud</syntaxhighlight> | |||
{{note|Будет установлен веб-сервер Apache2 и php8.0.}} | |||
{{ | Nextcloud будет установлен в {{path|/var/www/webapps/nextcloud}}, веб-интерфейс будет доступен по ссылке: | ||
http://localhost/nextcloud | |||
Пользователь: ncadmin | |||
===== Пароль пользователя ncadmin ===== | |||
При разворачивании nextcloud через {{pkg|deploy}} без параметров пароль пользователя ncadmin будет сгенерирован автоматически и будет совпадать с паролем пользователя базы данных. Поэтому его можно найти в файле {{path|/var/www/webapps/nextcloud/config/config.php}} в параметре ''dbpassword''. | |||
Также, чтобы узнать пароль пользователя ncadmin сразу после разворачивания, можно посмотреть значение параметра ''admin-pass'' в журнале: | |||
<syntaxhighlight lang="bash"># journalctl -b |grep admin-pass</syntaxhighlight> | |||
{{Attention|Рекомендуется сразу после разворачивания nextcloud изменить пароль пользователя ncadmin.}} | |||
Установить пароль пользователю ncadmin можно, выполнив команду (пароль должен быть достаточно сложным и содержать не менее 10 символов): | |||
<syntaxhighlight lang="bash"># deploy nextcloud password=5Z4SAq2U28rWyVz</syntaxhighlight> | |||
< | |||
# | |||
</ | |||
== | ==== По шагам (веб-сервер Apache2) ==== | ||
Установить Nextcloud и все необходимые для его работы модули можно, установив пакеты {{pkg|nextcloud}} и {{pkg|nextcloud-apache2}}: | |||
<syntaxhighlight lang="bash"># apt-get install nextcloud nextcloud-apache2</syntaxhighlight> | |||
{{note|Будет установлен php версии 8.0.}} | |||
Nextcloud будет установлен в {{path|/var/www/webapps/nextcloud}}, файл конфигурации — {{path|/var/www/webapps/nextcloud/config/config.php}}. | |||
В пакет {{pkg|nextcloud-apache2}} входит файл настроек виртуального хоста nextcloud: {{path|/etc/httpd2/conf/sites-available/nextcloud.conf}}. Также при установке этого пакета автоматически этот хост включается в разрешенные и включаются все необходимые для оптимальной работы сервиса модули apache2. | |||
Запустить веб-сервер Apache2 и добавить его в автозагрузку: | |||
<syntaxhighlight lang="bash"># systemctl enable --now httpd2</syntaxhighlight> | |||
Веб-интерфейс будет доступен по ссылке {{path|http://your_web_server_adress/nextcloud}} | |||
Далее необходимо зайти на веб-интерфейс Nextcloud и [[#Завершение установки|завершить установку]]. | |||
==== По шагам (веб-сервер nginx) ==== | |||
Для установки Nextcloud с веб-сервером nginx необходимо установить пакеты: | |||
=== По шагам | |||
Для установки Nextcloud с веб-сервером nginx: | |||
*в [[p10]]: | *в [[p10]]: | ||
*:< | *:<syntaxhighlight lang="bash"> | ||
# apt-get install nextcloud nextcloud-nginx php8.0-{fpm-fcgi,apcu} | # apt-get install nextcloud nextcloud-nginx php8.0-{fpm-fcgi,apcu} | ||
# systemctl enable --now php8.0-fpm | # systemctl enable --now php8.0-fpm | ||
</ | </syntaxhighlight> | ||
*в [[p9]]: | *в [[p9]]: | ||
*:< | *:<syntaxhighlight lang="bash"> | ||
# apt-get install nextcloud nextcloud-nginx php7-{fpm-fcgi,apcu} | # apt-get install nextcloud nextcloud-nginx php7-{fpm-fcgi,apcu} | ||
# systemctl enable --now php7-fpm | # systemctl enable --now php7-fpm | ||
</ | </syntaxhighlight> | ||
Пакет {{pkg|nextcloud-nginx}} включает файл настроек виртуального хоста nextcloud | Пакет {{pkg|nextcloud-nginx}} включает файл настроек виртуального хоста nextcloud: {{path|/etc/nginx/sites-available.d/nextcloud.conf}}. | ||
В | В файле {{path|/etc/nginx/sites-available.d/nextcloud.conf}} необходимо изменить, если это необходимо, версию php: | ||
< | <syntaxhighlight lang="ini">server unix:/var/run/php8.0-fpm/php8.0-fpm.sock;</syntaxhighlight> | ||
и имя сервера в поле ''server_name''. | |||
Включить виртуальный хост и запустить веб-сервер: | Включить виртуальный хост и запустить веб-сервер: | ||
< | <syntaxhighlight lang="bash"># ln -s /etc/nginx/sites-available.d/nextcloud.conf /etc/nginx/sites-enabled.d/ | ||
# systemctl enable --now nginx</ | # systemctl enable --now nginx</syntaxhighlight> | ||
Веб-интерфейс будет доступен по ссылке {{path|http://your_web_server_adress/nextcloud}} | |||
Далее необходимо зайти на веб-интерфейс Nextcloud и [[#Завершение установки|завершить установку]]. | |||
=== С официального сайта Nextcloud с сервером Apache2 (с помощью веб-установщика) === | |||
==== Подготовка окружения ==== | |||
Для работы Nextcloud нужен настроенный веб-сервер. Потребуется установить следующие пакеты<ref>В старых версиях Nextcloud требовался php7 и его пакеты, так что зависимости по мере устаревания этой статьи нужно уточнять на официальном сайте [https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html Nextcloud].</ref><ref>Вместо сервера Арache2 может использоваться сервер Nginx.</ref>: | |||
<syntaxhighlight lang="bash"> | |||
# apt-get install apache2 apache2-mod_ssl apache2-mod_php8.2 tzdata php8.2 | |||
# apt-get install php8.2-{curl,dom,exif,fileinfo,gd2,gmp,imagick,intl,libs,mbstring,memcached,opcache,openssl,pcntl,pdo,xmlreader,zip} | |||
</syntaxhighlight> | |||
{{Note|Список устанавливаемых пакетов можно уточнить, ориентируясь на зависимости пакетов из репозитория:<ref>При использовании {{pkgL|nginx}} необходимые для него пакеты покажет команда {{cmd|apt-cache depends nextcloud-nginx}} | |||
</ref> | |||
<syntaxhighlight lang="bash">$ apt-cache depends nextcloud nextcloud-apache2</syntaxhighlight>}} | |||
Разрешим нужные модули Apache2: | |||
<syntaxhighlight lang="bash"># for mod in dir env headers mime rewrite ssl; do a2enmod $mod; done</syntaxhighlight> | |||
Запустим веб-сервер Apache2 и добавим его в автозагрузку: | |||
<syntaxhighlight lang="bash"># systemctl enable --now httpd2</syntaxhighlight> | |||
==== Установка ==== | |||
С сайта https://nextcloud.com/install/ (раздел «Download» -> «Web-installer») необходимо скачать в корень веб-сервера {{path|/var/www/html}} файл {{path|setup-nextcloud.php}}, например: | |||
<syntaxhighlight lang="bash"> | |||
# cd /var/www/html/ | |||
# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php | |||
</syntaxhighlight> | |||
[[Файл:NextcloudInstallWizard.png|мини|Установщик Nextcloud]] | |||
У веб-сервера должны быть права на запись в каталог с файлом {{path|setup-nextcloud.php}}. | |||
Права можно назначить, временно, добавив пользователя apache2 в группу webmaster: | |||
<syntaxhighlight lang="bash"> | |||
# gpasswd -a apache2 webmaster | |||
# systemctl restart httpd2 | |||
</syntaxhighlight> | |||
Далее переходим по ссылке {{path|http://your_web_server_adress/setup-nextcloud.php}} и следуем инструкциям установщика. | |||
[[Файл:NextcloudInstallFolder.png|мини|Установка Nextcloud. Проверка зависимостей и выбор каталога]] | |||
По умолчанию Nextcloud устанавливается в подкаталог {{path|nextcloud}} (например, {{path|/var/www/html/nextcloud}}). | |||
После установки удалим пользователя apache2 из группы webmaster: | |||
<syntaxhighlight lang="bash"># gpasswd -d apache2 webmaster</syntaxhighlight> | |||
Для [[Nextcloud#Завершение установки|завершения установки]] необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД. | |||
{{Note|Если при установке системы был установлен пакет {{pkg|installer-feature-apache2-indexhtml-stage3}}, который в файлах {{path|/etc/httpd2/conf/sites-available/default.conf}} и {{path|/etc/httpd2/conf/sites-available/default_https.conf}} меняет строку '''/var/www/html''' на '''/usr/share/doc/indexhtml/''', то исправить это можно, выполнив команду: | |||
<syntaxhighlight lang="bash"># sed -i "s|/usr/share/doc/indexhtml|/var/www/html|" /etc/httpd2/conf/sites-available/{default,default_https}.conf | |||
</syntaxhighlight> | |||
И затем перезагрузить веб-сервер: | |||
<syntaxhighlight lang="bash"># systemctl restart httpd2</syntaxhighlight> | |||
}} | }} | ||
==== Рекомендации по безопасности ==== | |||
Рекомендуется сменить владельца файлов nextcloud на root, оставив Apache2 доступ на запись к каталогам {{path|data, config, apps}}: | |||
<syntaxhighlight lang="bash"> | |||
# chown -R root /var/www/html/nextcloud/ | |||
# chown -R apache2 /var/www/html/nextcloud/{apps,config,data}/ | |||
</syntaxhighlight> | |||
=== | == Завершение установки == | ||
[[Файл:NextcloudInstallSQLite.png|thumb|400px|Установка Nextcloud с базой данных SQLite]] | [[Файл:NextcloudInstallSQLite.png|thumb|400px|Установка Nextcloud с базой данных SQLite]] | ||
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД | Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД. | ||
===SQLite=== | |||
Если будет использоваться база данных SQLite | По умолчанию используется SQLite, но для крупных проектов рекомендуется выбрать другой тип базы данных. | ||
===MySQL/MariaDB для Nextcloud=== | |||
=== SQLite === | |||
Если будет использоваться база данных SQLite, для создания учётной записи администратора Nextcloud достаточно заполнить поля «Имя пользователя» и «Пароль», и нажать кнопку «Завершить установку». | |||
=== MySQL/MariaDB для Nextcloud === | |||
[[Файл:NextcloudInstallMySQL.png|thumb|400px|Установка Nextcloud с базой данных MySQL]] | |||
Если будет использоваться база данных MySQL/MariaDB : | Если будет использоваться база данных MySQL/MariaDB : | ||
#Установить необходимые пакеты для MySQL или для MariDB (php7-pdo_mysql | # Установить необходимые пакеты для MySQL или для MariDB ({{pkg|php7-pdo_mysql}} — в [[p9]]): | ||
#:< | #:<syntaxhighlight lang="bash"> | ||
# apt-get install MySQL[mariadb]-server php8.0-pdo_mysql | # apt-get install MySQL[mariadb]-server php8.0-pdo_mysql | ||
</ | </syntaxhighlight> | ||
#Запустить сервер mysqld и добавить его в автозагрузку: | #:Версия php должна быть указана та, которая использовалась при установке Nextcloud. | ||
#:< | # Запустить сервер mysqld и добавить его в автозагрузку: | ||
#:<syntaxhighlight lang="bash"> | |||
# systemctl enable --now mysqld (mariadb.service) | # systemctl enable --now mysqld (mariadb.service) | ||
</ | </syntaxhighlight> | ||
#Создать базу данных для Nextcloud: | # Создать базу данных для Nextcloud: | ||
#* авторизоваться на сервере | #* авторизоваться на сервере базы данных: | ||
#*:< | #*:<syntaxhighlight lang="bash"> | ||
$ mysql -u root | $ mysql -u root | ||
</ | </syntaxhighlight> | ||
#*если пароль пользователя root@localhost в MySQL установлен | #* или, если пароль пользователя root@localhost в MySQL установлен: | ||
#*:< | #*:<syntaxhighlight lang="bash"> | ||
$ mysql -u root -p | $ mysql -u root -p | ||
Enter password: | Enter password: | ||
</ | </syntaxhighlight> | ||
#*Выполнить команды для создания базы данных nextcloud и пользователя базы данных nextcloud с паролем nextpass: | #* Выполнить команды для создания базы данных nextcloud и пользователя базы данных nextcloud с паролем nextpass: | ||
#*:< | #*:<syntaxhighlight lang="mysql"> | ||
MariaDB [(none)]> create user 'nextcloud'@'localhost' identified by '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)]> create database nextcloud default character set utf8 collate utf8_unicode_ci; | ||
MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost; | MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost; | ||
MariaDB [(none)]> exit; | MariaDB [(none)]> exit; | ||
</ | </syntaxhighlight> | ||
#В веб-интерфейсе Nextcloud | # В веб-интерфейсе Nextcloud заполнить поля «Имя пользователя» и «Пароль», раскрыть список «Хранилище и база данных», выбрать «MySQL/MariaDB», и заполнить поля подключения к базе данных, данными, которые использовались на этапе настройки базы данных. Для завершения установки необходимо нажать кнопку «Завершить установку». | ||
===PostgreSQL=== | === PostgreSQL=== | ||
{{Note|В [[p10]] поддерживается несколько версий PostgreSQL, в данной статье речь о 14 версии. | {{Note|В [[p10]] поддерживается несколько версий PostgreSQL, в данной статье речь о 14 версии. | ||
Для [[p9]] следует установить следующие пакеты (версия postgresql 9.6): | Для [[p9]] следует установить следующие пакеты (версия postgresql 9.6): | ||
< | <syntaxhighlight lang="bash"># apt-get install postgresql9.6-server php7-{pgsql,pdo_pgsql}</syntaxhighlight>}} | ||
[[Файл:NextcloudInstallPostgreSQL.png| | [[Файл:NextcloudInstallPostgreSQL.png|thumb|400px|Установка Nextcloud с базой данных PostgreSQL]] | ||
#Установить необходимые пакеты: | Если будет использоваться СУБД PostgreSQL: | ||
#:< | # Установить необходимые пакеты: | ||
#Подготовить к запуску и настроить службу: | #:<syntaxhighlight lang="bash"># apt-get install postgresql14-server php8.0-pgsql php8.0-pdo_pgsql</syntaxhighlight> | ||
#*создать системные базы данных: | #:Версия php должна быть указана та, которая использовалась при установке Nextcloud. | ||
#*:< | # Подготовить к запуску и настроить службу postgresql: | ||
#* создать системные базы данных: | |||
#*:<syntaxhighlight lang="bash"> | |||
# /etc/init.d/postgresql initdb | # /etc/init.d/postgresql initdb | ||
</ | </syntaxhighlight> | ||
#*включить по умолчанию и запустить службу: | #* включить по умолчанию и запустить службу postgresql: | ||
#*:< | #*:<syntaxhighlight lang="bash"> | ||
# systemctl enable --now postgresql | # systemctl enable --now postgresql | ||
</ | </syntaxhighlight> | ||
#Создать базу данных Nextcloud: | # Создать базу данных Nextcloud: | ||
#*создать пользователя nextcloud (пароль необходимо запомнить) и базу данных nextcloud | #*создать пользователя nextcloud (пароль необходимо запомнить) и базу данных nextcloud: | ||
#*:< | #*:<syntaxhighlight lang="bash"> | ||
# su - postgres -s /bin/bash -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt nextcloud' | # su - postgres -s /bin/bash -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt nextcloud' | ||
Введите пароль для новой роли: | Введите пароль для новой роли: | ||
Повторите его: | Повторите его: | ||
# su - postgres -s /bin/bash -c 'createdb -O nextcloud nextcloud' | # su - postgres -s /bin/bash -c 'createdb -O nextcloud nextcloud' | ||
</ | </syntaxhighlight> | ||
#В веб-интерфейсе Nextcloud | # В веб-интерфейсе Nextcloud заполнить поля «Имя пользователя» и «Пароль», раскрыть список «Хранилище и база данных», выбрать PostgreSQL, и заполнить поля подключения к базе данных, данными, которые использовались на этапе создания базы данных. Для завершения установки необходимо нажать кнопку «Завершить установку». | ||
== Настройка кэширования == | === Настройка кэширования === | ||
Можно значительно повысить производительность сервера Nextcloud с помощью кэширования, при котором часто запрашиваемые объекты сохраняются в памяти для более быстрого извлечения. | |||
Установить следующие пакеты: | |||
< | <syntaxhighlight lang="bash"># apt-get install php8.0-apcu memcached php8.0-memcached</syntaxhighlight> | ||
Добавить службу memcached в автозагрузку и запустить её: | |||
< | <syntaxhighlight lang="bash"># systemctl enable --now memcached</syntaxhighlight> | ||
Добавить в {{path|config.php}} (находится в каталоге {{path|/var/www/html/nextcloud/config/}} или {{path|/var/www/webapps/nextcloud/config/}} — при установке из репозитория) следующие строки: | |||
<syntaxhighlight lang="ini">'memcache.local' => '\OC\Memcache\APCu', | |||
'memcache.distributed' => '\OC\Memcache\Memcached', | 'memcache.distributed' => '\OC\Memcache\Memcached', | ||
'memcache.locking' => '\OC\Memcache\Memcached', | |||
'memcached_servers' => array( | 'memcached_servers' => array( | ||
array('localhost', 11211), | array('localhost', 11211), | ||
), | ), | ||
</ | </syntaxhighlight> | ||
== | === Доверенные домены === | ||
Все URL-адреса, используемые для доступа к серверу Nextcloud, должны быть внесены в белый список в файле {{path|config.php}} в настройках ''trusted_domains''. Пользователям разрешено входить в Nextcloud только в том случае, если они указывают в своих браузерах URL-адрес, указанный в настройке доверенных_доменов. | |||
Для правильной работы SSL | Пример настройки ''trusted_domains'' в файле конфигурации: | ||
# | <syntaxhighlight lang="ini"> | ||
#:< | 'trusted_domains' => | ||
# | array ( | ||
#:< | 0 => 'localhost', | ||
# | 1 => 'nextcloud.test.alt', | ||
#:< | 2 => '192.168.0.123', | ||
# | ), | ||
#:< | </syntaxhighlight> | ||
# | === Настройка SSL === | ||
#:< | Для правильной работы nextcloud запросы должны идти по https. | ||
# | Для работы SSL необходимы SSL-сертификаты. Их можно купить или сгенерировать. | ||
#:< | |||
#Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если | ==== Создание самоподписных SSL сертификатов ==== | ||
#:< | # Создать и перейти в каталог {{path|~/ssl}}: | ||
#:и | #:<syntaxhighlight lang="bash">$ mkdir -p ~/ssl && cd ~/ssl</syntaxhighlight> | ||
#:< | # Создать закрытый ключ корневого хранилища: | ||
# | #:<syntaxhighlight lang="bash">$ openssl genrsa -des3 -out nextcloud-domain-ca.key 2048</syntaxhighlight> | ||
#:< | # Создать и подписать ключом корневого хранилища корневой сертификат, сертификат издателя сертификатов (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера): | ||
#В итоге | #:<syntaxhighlight lang="bash">$ openssl req -new -x509 -days 3650 -key nextcloud-domain-ca.key -out nextcloud-domain-ca.crt</syntaxhighlight> | ||
#:< | # Создать закрытый ключ веб-сервера, который вы намерены защитить сертификатом: | ||
#:<syntaxhighlight lang="bash">$ openssl genrsa -des3 -out nextcloud.key 1024</syntaxhighlight> | |||
# Создать запрос на подпись сертификата веб-сервера (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера): | |||
#:<syntaxhighlight lang="bash">$ openssl req -new -key nextcloud.key -out nextcloud.csr</syntaxhighlight> | |||
# Создать и подписать сертификат веб-сервера, используя запрос на подпись сертификата, корневой ключ и корневой сертификат: | |||
#:<syntaxhighlight lang="bash">$ openssl x509 -req -in nextcloud.csr -out nextcloud.crt -sha1 -CA nextcloud-domain-ca.crt -CAkey nextcloud-domain-ca.key -CAcreateserial -days 3650</syntaxhighlight> | |||
# Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если этого не требуется, можно сделать резервную копию ключа веб-сервера: | |||
#:<syntaxhighlight lang="bash">$ cp nextcloud.key nextcloud.key.dist</syntaxhighlight> | |||
#:и очистить пароль ключа веб-сервера: | |||
#:<syntaxhighlight lang="bash">$ openssl rsa -in nextcloud.key.dist -out nextcloud.key</syntaxhighlight> | |||
# Создать цепочку сертификатов CA-bundle: | |||
#:<syntaxhighlight lang="bash">$ cat nextcloud.crt nextcloud-domain-ca.crt > nextcloud.ca-bundle</syntaxhighlight> | |||
# В итоге должны получиться следующие файлы: | |||
#:<syntaxhighlight lang="text">nextcloud.crt — сертификат сервера | |||
nextcloud.csr — запрос на сертификат | nextcloud.csr — запрос на сертификат | ||
nextcloud.key — ключ сертификата | nextcloud.key — ключ сертификата сервера | ||
nextcloud.ca-bundle — ca-bundle файл | nextcloud.ca-bundle — ca-bundle файл сайта | ||
nextcloud-domain-ca.crt — корневой сертификат | nextcloud-domain-ca.crt — корневой сертификат | ||
nextcloud-domain-ca.key — ключ корневого сертификата</ | nextcloud-domain-ca.key — ключ корневого сертификата</syntaxhighlight> | ||
# Скопировать корневой сертификат, сертификат сервера и ca-bundle файл сайта в {{path|/var/lib/ssl/certs/}}, а ключ сертификата сервера в {{path|/var/lib/ssl/private/}}: | |||
#:<syntaxhighlight lang="bash"># /home/user/ssl/nextcloud.key /var/lib/ssl/private/ | |||
# cp /home/user/ssl/{nextcloud-domain-ca.crt,nextcloud.crt,nextcloud.ca-bundle} /var/lib/ssl/certs/</syntaxhighlight> | |||
=== Конфигурационный файл Apache2 === | ==== Конфигурационный файл Apache2 ==== | ||
Теперь создадим конфигурационный файл нашего сайта и настроим SSL-доступ. | Теперь создадим конфигурационный файл нашего сайта и настроим SSL-доступ. | ||
Включить 443 порт: | |||
< | <syntaxhighlight lang="bash"># a2enport https</syntaxhighlight> | ||
Скопировать стандартный конфигурационный файл и назовём его {{path|nextcloud.conf}}: | |||
< | <syntaxhighlight lang="bash"># cd /etc/httpd2/conf/sites-available/ | ||
# cp default_https.conf nextcloud.conf | # cp default_https.conf nextcloud.conf | ||
</ | </syntaxhighlight> | ||
Пример конфигурационного файла {{path|/etc/httpd2/conf/sites-available/nextcloud.conf}} (вместо DNS-имени можно указать IP-адрес): | |||
< | <syntaxhighlight lang="apache"> | ||
<IfModule ssl_module> | |||
<VirtualHost *:443> | |||
DocumentRoot "/var/www/html/nextcloud" (завелось после правки в вид "/var/www/html") | |||
ServerName nextcloud.test.alt: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 "/var/lib/ssl/certs/nextcloud.crt" | |||
SSLCertificateKeyFile "/var/lib/ssl/private/nextcloud.key" | |||
SSLCertificateChainFile "/var/lib/ssl/certs/nextcloud.ca-bundle" | |||
SSLCACertificateFile "/var/lib/ssl/certs/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 | AllowOverride All | ||
</Directory> | |||
</VirtualHost></ | </VirtualHost> | ||
Так же можно настроить редирект с http на https добавив в файл конфигурации: | </IfModule></syntaxhighlight> | ||
< | Так же можно настроить редирект с http на https добавив в файл конфигурации раздел: | ||
ServerName | <syntaxhighlight lang="apache"><VirtualHost *:80> | ||
Redirect permanent / https:// | ServerName nextcloud.test.alt | ||
</VirtualHost></ | Redirect permanent / https://nextcloud.test.alt/ | ||
</VirtualHost></syntaxhighlight> | |||
{{Note| Если nextcloud устанавливался из репозитория {{path|/var/www/html/nextcloud}} в директиве '''DocumentRoot''' и '''Directory''' необходимо заменить на {{path|/var/www/webapps/nextcloud}}. }} | {{Note| Если nextcloud устанавливался из репозитория, {{path|/var/www/html/nextcloud}} в директиве '''DocumentRoot''' и '''Directory''' необходимо заменить на {{path|/var/www/webapps/nextcloud}}. }} | ||
Добавить сайт nextcloud в разрешенные и перезапустить веб-сервер: | |||
< | <syntaxhighlight lang="bash"> | ||
# a2ensite nextcloud | # a2ensite nextcloud | ||
# systemctl restart httpd2 | # systemctl restart httpd2 | ||
</ | </syntaxhighlight> | ||
Теперь Nextcloud доступен по адресу {{path|https:// | |||
Теперь Nextcloud доступен по адресу {{path|https://nextcloud.test.alt/}} | |||
При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка {{path|SEC_ERROR_UNKNOWN_ISSUER}}) необходимо добавить его в исключения. | При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка {{path|SEC_ERROR_UNKNOWN_ISSUER}}) необходимо добавить его в исключения. | ||
=== Обновление мажорных версий === | |||
По умолчанию непоследовательное обновление мажорных версий запрещено (например, с версии 20 сразу до 22), и при попытке доступа к веб-интерфейсу после обновления пакета будет возникать ошибка "Exception: Updates between multiple major versions and downgrades are unsupported". Для того, чтобы обойти эту ошибку, продолжить обновление и получить доступ к веб-интерфейсу, можно сделать следующее. В файле {{path|/var/www/webapps/nextcloud/config/config.php}} в параметре 'version' изменить старую версию на новую. Затем снова перейти в веб-интерфейс, обновить страницу и обновление должно продолжиться. | |||
= Collabora Online в Nextcloud = | = Collabora Online в Nextcloud = |
Версия от 13:18, 31 октября 2023
Данная статья описывает частные случаи установки Nextcloud, официально рекомендованный способ его установки описан в документации дистрибутива ОС Альт, например в Руководстве пользователя Альт Сервер 10.1
В настоящий момент (октябрь 2023) описанные здесь (и в документации дистрибутива) способы установки (это не касается настройки самого Nextcloud) могут привести к трудно разрешимым проблемам при попытке апгрейда версии Nextcloud до актуальной. В этих условиях может иметь смысл использовать способ установки в виде "All-in-one Docker image" (рекомендованный) или "All-in-one VM image" (ограниченно рекомендованный) по ссылке https://nextcloud.com/install/.
Что такое Nextcloud
Nextcloud — веб-приложение для синхронизации данных, общего доступа к файлам и удалённого хранения документов в «облаке». Файлы Nextcloud хранятся в обычных структурах каталогов и могут быть доступны через WebDAV, если это необходимо. Основной сайт проекта: https://nextcloud.com/. Nextcloud можно установить при установке ALT Linux Server 10.1, выбрав для установки пункт Сервер Nextcloud (подробнее описано в главе Установка системы).
- Руководство пользователя Альт Сервер 10.1
- Сайт: https://nextcloud.com (документация)
- Лицензия: AGPL-3.0
Что такое Nextcloud
Nextcloud — веб-приложение для синхронизации данных, общего доступа к файлам и удалённого хранения документов в «облаке». Файлы Nextcloud хранятся в обычных структурах каталогов и могут быть доступны через WebDAV, если это необходимо. Основной сайт проекта: https://nextcloud.com/. Nextcloud можно установить при установке ALT Linux Server 10.1, выбрав для установки пункт Сервер Nextcloud (подробнее описано в главе Установка системы).
- Руководство пользователя Альт Сервер 10.1
- Сайт: https://nextcloud.com (документация)
- Лицензия: AGPL-3.0
Установка Nextcloud
Установить Nextcloud можно из репозитория или с официального сайта, если не устраивает версия из репозитория.
php<мажорная>.<минорная версии>-<имя модуля>Из репозитория можно установить и эксплуатировать в одной системе одновременно разные версии php.
Из репозитория
Используя Deploy
Развернуть Nextcloud можно используя пакет deploy (см. Deploy):
# apt-get install deploy
# deploy nextcloud
Nextcloud будет установлен в /var/www/webapps/nextcloud, веб-интерфейс будет доступен по ссылке:
http://localhost/nextcloud
Пользователь: ncadmin
Пароль пользователя ncadmin
При разворачивании nextcloud через deploy без параметров пароль пользователя ncadmin будет сгенерирован автоматически и будет совпадать с паролем пользователя базы данных. Поэтому его можно найти в файле /var/www/webapps/nextcloud/config/config.php в параметре dbpassword.
Также, чтобы узнать пароль пользователя ncadmin сразу после разворачивания, можно посмотреть значение параметра admin-pass в журнале:
# journalctl -b |grep admin-pass
Установить пароль пользователю ncadmin можно, выполнив команду (пароль должен быть достаточно сложным и содержать не менее 10 символов):
# deploy nextcloud password=5Z4SAq2U28rWyVz
По шагам (веб-сервер Apache2)
Установить Nextcloud и все необходимые для его работы модули можно, установив пакеты nextcloud и nextcloud-apache2:
# apt-get install nextcloud nextcloud-apache2
Nextcloud будет установлен в /var/www/webapps/nextcloud, файл конфигурации — /var/www/webapps/nextcloud/config/config.php.
В пакет nextcloud-apache2 входит файл настроек виртуального хоста nextcloud: /etc/httpd2/conf/sites-available/nextcloud.conf. Также при установке этого пакета автоматически этот хост включается в разрешенные и включаются все необходимые для оптимальной работы сервиса модули apache2.
Запустить веб-сервер Apache2 и добавить его в автозагрузку:
# systemctl enable --now httpd2
Веб-интерфейс будет доступен по ссылке http://your_web_server_adress/nextcloud
Далее необходимо зайти на веб-интерфейс Nextcloud и завершить установку.
По шагам (веб-сервер nginx)
Для установки Nextcloud с веб-сервером nginx необходимо установить пакеты:
- в p10:
# apt-get install nextcloud nextcloud-nginx php8.0-{fpm-fcgi,apcu} # systemctl enable --now php8.0-fpm
- в p9:
# apt-get install nextcloud nextcloud-nginx php7-{fpm-fcgi,apcu} # systemctl enable --now php7-fpm
Пакет nextcloud-nginx включает файл настроек виртуального хоста nextcloud: /etc/nginx/sites-available.d/nextcloud.conf.
В файле /etc/nginx/sites-available.d/nextcloud.conf необходимо изменить, если это необходимо, версию php:
server unix:/var/run/php8.0-fpm/php8.0-fpm.sock;
и имя сервера в поле server_name.
Включить виртуальный хост и запустить веб-сервер:
# ln -s /etc/nginx/sites-available.d/nextcloud.conf /etc/nginx/sites-enabled.d/
# systemctl enable --now nginx
Веб-интерфейс будет доступен по ссылке http://your_web_server_adress/nextcloud
Далее необходимо зайти на веб-интерфейс Nextcloud и завершить установку.
С официального сайта Nextcloud с сервером Apache2 (с помощью веб-установщика)
Подготовка окружения
Для работы Nextcloud нужен настроенный веб-сервер. Потребуется установить следующие пакеты[1][2]:
# apt-get install apache2 apache2-mod_ssl apache2-mod_php8.2 tzdata php8.2
# apt-get install php8.2-{curl,dom,exif,fileinfo,gd2,gmp,imagick,intl,libs,mbstring,memcached,opcache,openssl,pcntl,pdo,xmlreader,zip}
$ apt-cache depends nextcloud nextcloud-apache2
Разрешим нужные модули Apache2:
# for mod in dir env headers mime rewrite ssl; do a2enmod $mod; done
Запустим веб-сервер Apache2 и добавим его в автозагрузку:
# systemctl enable --now 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
У веб-сервера должны быть права на запись в каталог с файлом setup-nextcloud.php. Права можно назначить, временно, добавив пользователя apache2 в группу webmaster:
# gpasswd -a apache2 webmaster
# systemctl restart httpd2
Далее переходим по ссылке http://your_web_server_adress/setup-nextcloud.php и следуем инструкциям установщика.
По умолчанию Nextcloud устанавливается в подкаталог nextcloud (например, /var/www/html/nextcloud).
После установки удалим пользователя apache2 из группы webmaster:
# gpasswd -d apache2 webmaster
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД.
# sed -i "s|/usr/share/doc/indexhtml|/var/www/html|" /etc/httpd2/conf/sites-available/{default,default_https}.conf
И затем перезагрузить веб-сервер:
# systemctl restart httpd2
Рекомендации по безопасности
Рекомендуется сменить владельца файлов nextcloud на root, оставив Apache2 доступ на запись к каталогам data, config, apps:
# chown -R root /var/www/html/nextcloud/
# chown -R apache2 /var/www/html/nextcloud/{apps,config,data}/
Завершение установки
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД.
По умолчанию используется SQLite, но для крупных проектов рекомендуется выбрать другой тип базы данных.
SQLite
Если будет использоваться база данных SQLite, для создания учётной записи администратора Nextcloud достаточно заполнить поля «Имя пользователя» и «Пароль», и нажать кнопку «Завершить установку».
MySQL/MariaDB для Nextcloud
Если будет использоваться база данных MySQL/MariaDB :
- Установить необходимые пакеты для MySQL или для MariDB (php7-pdo_mysql — в p9):
# apt-get install MySQL[mariadb]-server php8.0-pdo_mysql
- Версия php должна быть указана та, которая использовалась при установке Nextcloud.
- Запустить сервер mysqld и добавить его в автозагрузку:
# systemctl enable --now mysqld (mariadb.service)
- Создать базу данных для 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;
- авторизоваться на сервере базы данных:
- В веб-интерфейсе Nextcloud заполнить поля «Имя пользователя» и «Пароль», раскрыть список «Хранилище и база данных», выбрать «MySQL/MariaDB», и заполнить поля подключения к базе данных, данными, которые использовались на этапе настройки базы данных. Для завершения установки необходимо нажать кнопку «Завершить установку».
PostgreSQL
Для p9 следует установить следующие пакеты (версия postgresql 9.6):
# apt-get install postgresql9.6-server php7-{pgsql,pdo_pgsql}
Если будет использоваться СУБД PostgreSQL:
- Установить необходимые пакеты:
# apt-get install postgresql14-server php8.0-pgsql php8.0-pdo_pgsql
- Версия php должна быть указана та, которая использовалась при установке Nextcloud.
- Подготовить к запуску и настроить службу postgresql:
- создать системные базы данных:
# /etc/init.d/postgresql initdb
- включить по умолчанию и запустить службу postgresql:
# systemctl enable --now postgresql
- создать системные базы данных:
- Создать базу данных Nextcloud:
- создать пользователя nextcloud (пароль необходимо запомнить) и базу данных nextcloud:
# su - postgres -s /bin/bash -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt nextcloud' Введите пароль для новой роли: Повторите его: # su - postgres -s /bin/bash -c 'createdb -O nextcloud nextcloud'
- создать пользователя nextcloud (пароль необходимо запомнить) и базу данных nextcloud:
- В веб-интерфейсе Nextcloud заполнить поля «Имя пользователя» и «Пароль», раскрыть список «Хранилище и база данных», выбрать PostgreSQL, и заполнить поля подключения к базе данных, данными, которые использовались на этапе создания базы данных. Для завершения установки необходимо нажать кнопку «Завершить установку».
Настройка кэширования
Можно значительно повысить производительность сервера Nextcloud с помощью кэширования, при котором часто запрашиваемые объекты сохраняются в памяти для более быстрого извлечения.
Установить следующие пакеты:
# apt-get install php8.0-apcu memcached php8.0-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',
'memcache.locking' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
array('localhost', 11211),
),
Доверенные домены
Все URL-адреса, используемые для доступа к серверу Nextcloud, должны быть внесены в белый список в файле config.php в настройках trusted_domains. Пользователям разрешено входить в Nextcloud только в том случае, если они указывают в своих браузерах URL-адрес, указанный в настройке доверенных_доменов.
Пример настройки trusted_domains в файле конфигурации:
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'nextcloud.test.alt',
2 => '192.168.0.123',
),
Настройка SSL
Для правильной работы nextcloud запросы должны идти по https. Для работы SSL необходимы SSL-сертификаты. Их можно купить или сгенерировать.
Создание самоподписных SSL сертификатов
- Создать и перейти в каталог ~/ssl:
$ mkdir -p ~/ssl && cd ~/ssl
- Создать закрытый ключ корневого хранилища:
$ openssl genrsa -des3 -out nextcloud-domain-ca.key 2048
- Создать и подписать ключом корневого хранилища корневой сертификат, сертификат издателя сертификатов (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера):
$ openssl req -new -x509 -days 3650 -key nextcloud-domain-ca.key -out nextcloud-domain-ca.crt
- Создать закрытый ключ веб-сервера, который вы намерены защитить сертификатом:
$ openssl genrsa -des3 -out nextcloud.key 1024
- Создать запрос на подпись сертификата веб-сервера (при запросе «Common Name» необходимо указать IP или FQDN вашего сервера):
$ openssl req -new -key nextcloud.key -out nextcloud.csr
- Создать и подписать сертификат веб-сервера, используя запрос на подпись сертификата, корневой ключ и корневой сертификат:
$ openssl x509 -req -in nextcloud.csr -out nextcloud.crt -sha1 -CA nextcloud-domain-ca.crt -CAkey nextcloud-domain-ca.key -CAcreateserial -days 3650
- Apache2 будет требовать при запуске пароль к ключу веб-сервера. Если этого не требуется, можно сделать резервную копию ключа веб-сервера:
$ cp nextcloud.key nextcloud.key.dist
- и очистить пароль ключа веб-сервера:
$ openssl rsa -in nextcloud.key.dist -out nextcloud.key
- Создать цепочку сертификатов CA-bundle:
$ cat nextcloud.crt nextcloud-domain-ca.crt > nextcloud.ca-bundle
- В итоге должны получиться следующие файлы:
nextcloud.crt — сертификат сервера nextcloud.csr — запрос на сертификат nextcloud.key — ключ сертификата сервера nextcloud.ca-bundle — ca-bundle файл сайта nextcloud-domain-ca.crt — корневой сертификат nextcloud-domain-ca.key — ключ корневого сертификата
- Скопировать корневой сертификат, сертификат сервера и ca-bundle файл сайта в /var/lib/ssl/certs/, а ключ сертификата сервера в /var/lib/ssl/private/:
# /home/user/ssl/nextcloud.key /var/lib/ssl/private/ # cp /home/user/ssl/{nextcloud-domain-ca.crt,nextcloud.crt,nextcloud.ca-bundle} /var/lib/ssl/certs/
Конфигурационный файл 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 (вместо DNS-имени можно указать IP-адрес):
<IfModule ssl_module>
<VirtualHost *:443>
DocumentRoot "/var/www/html/nextcloud" (завелось после правки в вид "/var/www/html")
ServerName nextcloud.test.alt: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 "/var/lib/ssl/certs/nextcloud.crt"
SSLCertificateKeyFile "/var/lib/ssl/private/nextcloud.key"
SSLCertificateChainFile "/var/lib/ssl/certs/nextcloud.ca-bundle"
SSLCACertificateFile "/var/lib/ssl/certs/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>
</IfModule>
Так же можно настроить редирект с http на https добавив в файл конфигурации раздел:
<VirtualHost *:80>
ServerName nextcloud.test.alt
Redirect permanent / https://nextcloud.test.alt/
</VirtualHost>
Добавить сайт nextcloud в разрешенные и перезапустить веб-сервер:
# a2ensite nextcloud
# systemctl restart httpd2
Теперь Nextcloud доступен по адресу https://nextcloud.test.alt/ При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка SEC_ERROR_UNKNOWN_ISSUER) необходимо добавить его в исключения.
Обновление мажорных версий
По умолчанию непоследовательное обновление мажорных версий запрещено (например, с версии 20 сразу до 22), и при попытке доступа к веб-интерфейсу после обновления пакета будет возникать ошибка "Exception: Updates between multiple major versions and downgrades are unsupported". Для того, чтобы обойти эту ошибку, продолжить обновление и получить доступ к веб-интерфейсу, можно сделать следующее. В файле /var/www/webapps/nextcloud/config/config.php в параметре 'version' изменить старую версию на новую. Затем снова перейти в веб-интерфейс, обновить страницу и обновление должно продолжиться.
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>
Так же необходимо добавить наши самоподписные сертификаты в Nextcloud, для покупных сертификатов данное действие не требуется:
# cat /root/ssl/nextcloud.ca-bundle >> /var/www/html/nextcloud/resources/config/ca-bundle.crt
Далее добавляем наш сайт в разрешенные и перезапускаем Apache2:
# a2ensite officenextcloud
# systemctl restart httpd2
Настройка Collabora Online в Nextcloud
- Заходим на сайт c Nextcloud: «Приложения» -> «Офис и текст» -> «Collabora Online» -> «Включить».
- Настройки -> «Collabora Online» -> указываем адрес нашего сервера с портом (https://10.10.10.10:4443):
HIGH:MEDIUM:!aNULL:!MD5
и перезапустить Apache2:
# systemctl restart httpd2
Теперь документы можно редактировать в браузере:
Обновление Collabora Docker
- Скачиваем свежий образ:
# docker pull collabora/code
- Выясняем id контейнера:
docker ps
- Останавливаем и удаляем старый контейнер:
docker stop CONTAINER_ID docker rm CONTAINER_ID
- Запускаем новый контейнер:
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.
# apt-get install php8-ldap
# systemctl restart httpd2
Ниже показана настройка интеграции с FreeIPA (сервер ipa.example.test).
Для интеграции базы пользователей с LDAP необходимо в списке приложений Nextcloud включить «LDAP user and group backend».
Далее переходим на страницу администрирования Nextcloud: «Настройки» -> «Интеграция LDAP / AD» («LDAP / AD integration»). На этой странице необходимо указать параметры подключения к LDAP.
Вкладка «Сервер» («Server»):
На сервере LDAP должна быть настроена учётная запись с правами чтения (DN user). От данной учетной записи будет выполняться подключение к серверу каталогов.
На вкладке «Сервер» нужно указать имя хоста LDAP-сервера, порт (если сервер LDAP работает на стандартном порту, порт будет обнаружен автоматически) и ввести учётные данные пользователя. В разных реализациях LDAP могут быть разные требования для указания учетной записи, например, во FreeIPA необходимо указать uid=nextcloud,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=test.
Для базы поиска пользователей и групп можно нажать кнопку «Определить базу поиска DN» — тогда будет определен корень домена. Или можно ввести самому конкретное подразделение.
Вкладка «Пользователи» («Users»). На этой вкладке можно указать, какие пользователи LDAP будут отображаться как пользователи Nextcloud:
Вкладка «Учетные данные» («Login Attributes»). Здесь можно задать поле, которое будет использоваться в качестве логина:
Вкладка «Группы» («Groups»). Здесь можно задать фильтры для групп:
Вкладка «Дополнительно» («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
Вкладка «Эксперт» («Expert»):
- «Атрибут для внутреннего имени» («Internal Username Attribute»): uid
- «UUID-атрибуты для пользователей» («UUID Attribute for Users»): uid
Просмотреть список пользователей можно, выбрав пункт «Пользователи» (должны подгрузиться пользователи из ldap):
Теперь можно попробовать зайти доменным пользователем используя свой логин и пароль.
Настройка 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 пускал только известных пользователей.
- ↑ В старых версиях Nextcloud требовался php7 и его пакеты, так что зависимости по мере устаревания этой статьи нужно уточнять на официальном сайте Nextcloud.
- ↑ Вместо сервера Арache2 может использоваться сервер Nginx.
- ↑ При использовании nginx необходимые для него пакеты покажет команда apt-cache depends nextcloud-nginx
- ↑ Версия pgh может со временем меняться