Установка Nextcloud
Автор Алексей | HiTex.BY на 31 марта 2025 10:18
|
|
Установка NextcloudУстановить Nextcloud можно из репозитория или с официального сайта, если не устраивает версия из репозитория. Примечание: Начиная с версии php8.0, пакеты модулей именуются следующим образом:
php<мажорная>.<минорная версии>-<имя модуля>Из репозитория можно установить и эксплуатировать в одной системе одновременно разные версии php. Из репозиторияИспользуя DeployРазвернуть Nextcloud можно используя пакет deploy (см. Deploy): # apt-get install deploy php8.2-mysqlnd
# deploy nextcloud
Примечание: Будет установлен веб-сервер Apache2 и php8.2.
http://localhost/nextcloud Пользователь: ncadmin Пароль пользователя ncadminПри разворачивании nextcloud через deploy без параметров пароль пользователя ncadmin будет сгенерирован автоматически и будет совпадать с паролем пользователя базы данных. Поэтому его можно найти в файле /var/www/webapps/nextcloud/config/config.php в параметре dbpassword. Также, чтобы узнать пароль пользователя ncadmin сразу после разворачивания, можно посмотреть значение параметра admin-pass в журнале: # journalctl -b |grep admin-pass
Внимание! Рекомендуется сразу после разворачивания nextcloud изменить пароль пользователя ncadmin.
# deploy nextcloud password=5Z4SAq2U28rWyVz
По шагам (веб-сервер Apache2)Установить Nextcloud и все необходимые для его работы модули можно, установив пакеты nextcloud и nextcloud-apache2: # apt-get install nextcloud nextcloud-apache2
Примечание: Будет установлен php версии 8.2.
В пакет 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 необходимо установить пакеты (с зависимостями):
Пакет nextcloud-nginx включает файл настроек виртуального хоста nextcloud: /etc/nginx/sites-available.d/nextcloud.conf. В файле /etc/nginx/sites-available.d/nextcloud.conf проверьте версию php и, если она отличается от установленной, измените её: server unix:/var/run/php8.2-fpm/php8.2-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 и завершить установку. Также можно настроить получение сертификатов от Let's Encrypt, например, с помощью пакета С официального сайта 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}
Примечание: Список устанавливаемых пакетов можно уточнить, ориентируясь на зависимости пакетов из репозитория:[3]
$ apt-cache depends nextcloud nextcloud-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
Установщик Nextcloud
У веб-сервера должны быть права на запись в каталог с файлом setup-nextcloud.php. Права можно назначить, временно, добавив пользователя apache2 в группу webmaster: # gpasswd -a apache2 webmaster
# systemctl restart httpd2
Установка Nextcloud. Проверка зависимостей и выбор каталога
По умолчанию Nextcloud устанавливается в подкаталог nextcloud (например, /var/www/html/nextcloud). После установки удалим пользователя apache2 из группы webmaster: # gpasswd -d apache2 webmaster
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД. Примечание: Если при установке системы был установлен пакет installer-feature-apache2-indexhtml-stage3, который в файлах /etc/httpd2/conf/sites-available/default.conf и /etc/httpd2/conf/sites-available/default_https.conf меняет строку /var/www/html на /usr/share/doc/indexhtml/, то исправить это можно, выполнив команду:
# 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
Для завершения установки необходимо создать учетную запись администратора Nextcloud и выбрать тип используемой БД. По умолчанию используется SQLite, но для крупных проектов рекомендуется выбрать другой тип базы данных. SQLiteЕсли будет использоваться база данных SQLite, для создания учётной записи администратора Nextcloud достаточно заполнить поля «Имя пользователя» и «Пароль», и нажать кнопку «Завершить установку». MySQL/MariaDB для NextcloudУстановка Nextcloud с базой данных MySQL
Если будет использоваться база данных MySQL/MariaDB :
PostgreSQLПримечание: В p10 поддерживается несколько версий PostgreSQL, в данной статье речь о 14 версии.
Для p9 следует установить следующие пакеты (версия postgresql 9.6): # apt-get install postgresql9.6-server php7-{pgsql,pdo_pgsql}
Установка Nextcloud с базой данных PostgreSQL
Если будет использоваться СУБД PostgreSQL:
Настройка кэшированияМожно значительно повысить производительность сервера Nextcloud с помощью кэширования, при котором часто запрашиваемые объекты сохраняются в памяти для более быстрого извлечения. Установить следующие пакеты: # apt-get install php8.2-apcu memcached php8.2-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-сертификатов
Конфигурационный файл 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 устанавливался из репозитория, /var/www/html/nextcloud в директиве DocumentRoot и Directory необходимо заменить на /var/www/webapps/nextcloud.
# a2ensite nextcloud
# systemctl restart httpd2
Теперь Nextcloud доступен по адресу https://nextcloud.test.alt/ При первом заходе по https браузер будет ругаться на самоподписанный сертификат (ошибка SEC_ERROR_UNKNOWN_ISSUER) необходимо добавить его в исключения. Конфигурационный файл nginxПример конфигурационного файла /etc/nginx/sites-available.d/nextcloud.conf:
Обновление мажорных версийПо умолчанию непоследовательное обновление мажорных версий запрещено (например, с версии 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, который позволяет работать со всеми основными офисными форматами (документы/таблицы/презентации) прямо в браузере. Особенности:
Встраиваемый сервер CODE (Collabora Online Development Edition)Простой в установке вариант, предназначенный для использования дома или в небольших группах. Производительность несколько ниже, чем в варианте использования отдельного сервера, а также отсутствуют возможности для масштабирования. Установка:
Примечание: Если используется веб-сервер Nginx, то необходимо внести небольшие изменения в существующую конфигурацию. Чтобы приложение Collabora Online работало, необходимо добавить точку входа richdocumentscode/proxy в качестве разрешенного местоположения в конфигурацию nginx. Т.е. в файле /etc/nginx/sites-available.d/nextcloud.conf заменить строку:
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+)\.php(?:$|/) {
на: location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+|.+\/richdocumentscode\/proxy)\.php(?:$|/) {
И перезапустить nginx: # systemctl restart nginx
Собственный сервер Collabora OnlineВ данном разделе приведён пример запуска собственного сервера «Nextcloud Office» на одном сервере с Nextcloud. Установка и запуск сервера CollaboraДля работы собственного сервера Collabora Online необходимо установить и настроить Podman. Примечание: Должен быть установлен пакет fuse и fuse-overlayfs. Кроме того, необходимо предоставить права доступа для монтирования файловой системы FUSE для всех пользователей:
# control fusermount public
$ podman pull collabora/code
Запустить образ: $ podman run -t -d -p 127.0.0.1:9980:9980 -e 'aliasgroup=https://nextcloud.test.alt:443' --restart always --cap-add MKNOD --privileged collabora/code
где:
Настройка reverse proxyДалее надо настроить reverse proxy. Для пересылки запросов демону Coolwsd на порт 9980 должны быть установлены следующие правила:
Веб-сервер Apache2Загрузить необходимые модули: # for mod in proxy proxy_wstunnel proxy_http proxy_connect; do a2enmod $mod; done
После этого необходимо правильно сконфигурировать Apache2, в данном примере мы запустим обратный прокси на порту 4443. Его можно также запустить на поддомене (например, office.test.alt). Создадим в каталоге /etc/httpd2/conf/sites-available/ файл officenextcloud.conf следующего содержания: <VirtualHost *:4443>
ServerName nextcloud.test.alt:4443
SSLEngine on
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"
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLHonorCipherOrder on
ErrorLog "/var/log/httpd2/office_error_log"
TransferLog "/var/log/httpd2/office_access_log"
# 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 coolwsd
# browser is the client part of Collabora Online
ProxyPass /browser https://127.0.0.1:9980/browser retry=0
ProxyPassReverse /browser https://127.0.0.1:9980/browser
# 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
# Capabilities
ProxyPass /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
# Main websocket
ProxyPassMatch "/cool/(.*)/ws$" wss://127.0.0.1:9980/cool/$1/ws nocanon
# Admin Console websocket
ProxyPass /cool/adminws wss://127.0.0.1:9980/cool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /cool https://127.0.0.1:9980/cool
ProxyPassReverse /cool https://127.0.0.1:9980/cool
# Compatibility with integrations that use the /lool/convert-to endpoint
ProxyPass /lool https://127.0.0.1:9980/cool
ProxyPassReverse /lool https://127.0.0.1:9980/cool
</VirtualHost>
<IfModule ssl_module>
Listen 4443
</IfModule>
Примечание: Так как мы используем поддомен nextcloud.test.alt, то указываем тот же сертификат, что и для nextcloud. В случае, если используется другой домен, следует сгенерировать отдельный сертификат для нового доменного имени (п.3-п.7).
# cat /var/lib/ssl/certs/nextcloud.ca-bundle >> /var/www/html/nextcloud/resources/config/ca-bundle.crt
Затем следует добавить сайт в разрешенные и перезапустить Apache2: # a2ensite officenextcloud
# systemctl restart httpd2
Внимание! Обязательно необходимо зайти по адресу https://nextcloud.test.alt:4443/ и добавить сертификат в исключения браузера.
Веб-сервер nginxДобавить новый блок server в конфигурацию nginx для nextcloud.test.alt (файл /etc/nginx/sites-available.d/nextcloud.conf): server {
listen 4443 ssl;
server_name nextcloud.test.alt;
ssl_certificate /var/lib/ssl/certs/nextcloud.crt;
ssl_certificate_key /var/lib/ssl/private/nextcloud.key;
# static files
location ^~ /browser {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass https://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}
Перезапустить nginx: # systemctl restart nginx
Проверка конфигурацииРекомендуется выполнить следующие проверки:
DNS-имена должны разрешаться как на сервере, так и на клиенте. DNS-имена не должны разрешаться в 127.0.0.1. Если для Nextcloud и Collabora используются разные домены, убедитесь, что оба сервера доверяют назначенному TLS-сертификату другой системы, а клиент доверяет TLS-сертификатам как Nextcloud, так и Collabora. Настройка Collabora Online в Nextcloud
Перейти к папкам и файлам на облачном сервисе. Попробовать открыть любой документ или создать новый — он должен открыться в Collabora: Примечание: Проверьте записи «Allow list for WOPI requests»: очистите список для тестирования, затем добавьте IP-адреса по мере необходимости.
Обновление Collabora Docker
Интеграция с LDAPNextcloud поставляется с приложением LDAP, позволяющим пользователям LDAP (включая Active Directory и FreeIPA) появляться в списках пользователей Nextcloud. На сервере LDAP должна быть настроена учётная запись с правами чтения (DN user). От данной учётной записи будет выполняться подключение к серверу каталогов. Примечание: На сервере Nextcloud должен быть установлен модуль для PHP LDAP[4]:
# apt-get install php8.2-ldap
# systemctl restart httpd2
Ниже показана настройка интеграции с FreeIPA (ipa.example.test). Перейти на страницу администрирования Nextcloud: «Параметры сервера» -> «LDAP/AD Интеграция» («LDAP/AD integration»). На этой странице необходимо указать параметры подключения к LDAP.
Примечание: В разных реализациях LDAP могут быть разные требования для указания учётной записи пользователя.
Проверить конфигурацию можно, нажав на кнопку «Проверить базу поиска DN». При ответе «Конфигурация в порядке» можно продолжать настройку. На вкладке «Пользователи» («Users») следует указать, какие пользователи LDAP будут отображаться как пользователи Nextcloud. В поле «Фильтр LDAP» указать: (|(objectclass=inetorgperson)(objectclass=person)) На вкладке «Учетные данные» («Login Attributes») следует указать атрибуты, которые можно будет использовать в качестве логина. Например:
Проверить данную настройку можно, вписав пользователя FreeIPA в поле «Проверить логин» и нажав на кнопку «Проверить настройки». На вкладке «Группы» («Groups») необходимо задать фильтры для групп (например, (|(cn=ipausers))): Вкладка «Дополнительно» («Advanced») -> раздел «Настройки каталога» («Directory Settings»):
Вкладка «Эксперт» («Expert»):
Проверить конфигурацию, нажав на кнопку «Проверить конфигурацию». Просмотреть список пользователей можно в разделе «Пользователи» (должны подгрузиться пользователи из ldap): Теперь можно попробовать зайти доменным пользователем используя свой логин и пароль. Настройка SSOПримечание: Убедитесь, что у вас создан администратор, имеющий доступ через SSO. Вход с использованием локальной учётной записи администратора будет доступен только по ссылке входа вида
https://nextcloud.test.alt/index.php/login?direct=1.
Включить приложение «SSO & SAML authentication». Далее перейти на страницу администрирования Nextcloud: «Параметры сервера» -> «Подтверждение подлинности SSO и SAML» («SSO & SAML authentication»), выбрать пункт «Использовать переменные окружения», указать переменную REMOTE_USER, установить отметку «Разрешайте аутентификацию только в том случае, если учетная запись существует на каком-либо другом бэкэнде (например, LDAP)», чтобы SSO пускал только известных пользователей. | |
|