Рассмотренные примеры подойдут для Linux Ubuntu версий 18, 20 и 22.
Подготовка системы
Настройка сервера баз данных
Установка и настройка веб-сервера
Установка Nextcloud
Тюнинг системы после установки
Работа с пользователями из командной строки
Подключение папки как сетевой диск
На Windows
В Linux
Дополнительные настройки
Читайте также
Подготовка системы
Выполним предварительную настройку, прежде чем начать развертывание Nextcloud.
1. Обновляем списки пакетов.
Актуализируем списки пакетов в репозиториях, чтобы установки проходили без ошибок:
apt update
При желании, мы также можем обновить пакеты:
apt upgrade
2. Синхронизируем время.
Устанавливаем утилиту chrony:
apt install chrony
Выставляем нужный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Разрешаем запуск демона chrony:
systemctl enable chrony
3. Настройка брандмауэра.
По умолчанию в системах на базе Deb нет запрещающих правил в брандмауэре и нам ничего не нужно делать дополнительно. Но если в вашем случае настроен и используется брандмауэр на сервере, необходимо открыть порты 80 и 443.
Выполняем команды:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Сохраним правила с помощью netfilter-persistent:
apt install iptables-persistent
netfilter-persistent save
Настройка сервера баз данных
В качестве СУБД используем MariaDB.
Устанавливаем:
apt install mariadb-server
Разрешаем автозапуск и стартуем сервис:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя mysql:
mysqladmin -u root password
Подключаемся к MariaDB, создаем базу данных и пользователя:
mysql -uroot -p
> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY 'nextcloud';
> \q
Установка и настройка веб-сервера
PHP
Перед тем, как устанавливать php, стоит изучить системные требования Nextcloud. Для корректной работы нужно установить рекомендуемую версию PHP.
На момент последнего обновления инструкции, рекомендовалось установить PHP версии 8.1. Для дальнейшего удобства работы, мы сохраним ее в переменную:
export PHP_VER=8.1
Посмотреть, какая версия будет установлена из репозитория системы можно командой:
apt search --names-only '^php[.0-9]{3}$'
а) Если она соответствует рекомендации Nextcloud, вводим команду для установки PHP, PHP-FPM и необходимых расширений:
apt install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick
б) Если рекомендованной PHP версии в репозитории нет, переходим к инструкции Установка разных версий PHP на Linux Ubuntu. А для установки расширений используем команду:
apt install php${PHP_VER}-fpm php${PHP_VER}-common php${PHP_VER}-zip php${PHP_VER}-xml php${PHP_VER}-intl php${PHP_VER}-gd php${PHP_VER}-mysql php${PHP_VER}-mbstring php${PHP_VER}-curl php${PHP_VER}-imagick php${PHP_VER}-gmp php${PHP_VER}-bcmath libmagickcore-6.q16-6-extra
* где PHP_VER — ранее определенная нами переменная с рекомендованной версией PHP.
Установка php завершена и можно перейти к ее настройке.
Настраиваем php-fpm:
vi /etc/php/${PHP_VER}/fpm/pool.d/www.conf
* путь к данной папке зависит от установленной версии php. В данном примере это 8.1 (задана через переменную PHP_VER).
Снимаем комментарии со следующей строки:
env[PATH] = /usr/local/bin:/usr/bin:/bin
Настраиваем php.ini:
vi /etc/php/${PHP_VER}/fpm/php.ini
opcache.enable_cli=1
opcache.interned_strings_buffer=32
opcache.revalidate_freq=1
Разрешаем автозапуск php-fpm и перезапускаем его:
systemctl enable php${PHP_VER}-fpm
systemctl restart php${PHP_VER}-fpm
NGINX
Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.
Устанавливаем веб-сервер:
apt install nginx
Создаем виртуальный домен и настраиваем его для работы с облачным сервисом:
vi /etc/nginx/sites-enabled/nextcloud.conf
server {
listen 80;
listen 443 ssl;
server_name nextcloud.dmosk.ru;
if ($scheme = 'http') {
return 301 https://$host$request_uri;
}
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
root /var/www/nextcloud;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
client_max_body_size 10G;
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location ^~ /.well-known {
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
location = /.well-known/webfinger { return 301 /index.php/.well-known/webfinger; }
location = /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }
location ^~ /.well-known{ return 301 /index.php/$uri; }
try_files $uri $uri/ =404;
}
location / {
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires modified +30d;
access_log off;
}
}
* где:
- nextcloud.dmosk.ru — домен, на котором будет работать сервис;
- /etc/nginx/ssl — каталог, в котором будут храниться сертификаты;
- /var/www/nextcloud — каталог с порталом.
- fastcgi_pass — обработчик скриптов. В нашем примере используется php-fpm. Обратите внимание, что путь до сокетного файла будет зависить от версии PHP.
Создаем каталог для хранения сертификатов и переходим в него:
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
Генерируем сертификат:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=nextcloud.dmosk.ru/CN=nextcloud"
* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.
В нашем примере мы запустили nextcloud с использованием самоподписанного сертификата. Для продуктивной среды рекомендуется использовать купленный сертификат или бесплатный от Let's Encrypt.
После установки php мог установиться и запуститься apache. Отключаем его:
systemctl stop apache2
systemctl disable apache2
Проверяем конфигурацию nginx и перезапускаем сервис:
nginx -t
systemctl restart nginx
Разрешаем автозапуск:
systemctl enable nginx
Установка Nextcloud
Устанавливаем пакет unzip:
apt install unzip
На странице nextcloud можно ознакомиться с возможными вариантами загрузки портала. Мы же возьмем последнюю версию.
Переходим во временную папку и скачиваем исходник:
cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
Распаковываем скачанный архив:
unzip latest.zip
И переносим содержимое архива в каталог /var/www:
mv nextcloud /var/www
Задаем права доступа:
chown -R www-data:www-data /var/www/nextcloud
Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — адрес облачного сервиса.
Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.
Завершаем установку.
Оптимизируем работу базы данных:
sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Тюнинг после установки
Для корректной работы системы выполним дополнительную настройку. После входа в nextcloud под администратором, переходим в настройки для пользователя:
В разделе «Параметры сервера» переходим в Основные сведения:
В разделе «Проверка безопасности и параметров» мы можем увидеть список проблем:
Рассмотрим процесс решения некоторых из них.
1. Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
Открываем на редактирование файл:
vi /etc/php/${PHP_VER}/fpm/php.ini
Меняем настройку для memory_limit:
memory_limit = 512M
Перезапускаем php-fpm:
systemctl restart php${PHP_VER}-fpm
2. В системе не установлены рекомендуемые модули PHP
Данная ошибка устраняется в зависимости от списка модулей, которых не хватает системе. Чаще всего, подходит команда:
dnf install php-<название модуля>
Например:
apt install php-gmp php-bcmath
После перезапускаем php-fpm:
systemctl restart php${PHP_VER}-fpm
3. Не настроена система кеширования
Для решения проблемы мы должны установить и настроить одно из средств кэширования:
- APCu
- Redis
- Memcached
Мы рассмотрим два последних варианта.
Redis
Устанавливаем сам Redis Server и модуль php:
apt install redis-server php-redis
* в случае установки сервера Redis на отдельный сервер, необходимо выполнить на сервере Nextcloud только установку php-redis.
Если версия PHP не нативная для системы, то команда будет такой:
apt install redis-server php${PHP_VER}-redis
Перезапускаем php-fpm:
systemctl restart php${PHP_VER}-fpm
Открываем конфигурационный файл для nextcloud:
vi /var/www/nextcloud/config/config.php
И добавим:
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
Готово.
Memcached
Выполняем установку модуля для php и сам сервис memcached:
apt install memcached php-memcached
Если версия PHP не нативная для системы, то команда будет такой:
apt install memcached php${PHP_VER}-memcached
После разрешаем его автозапуск:
systemctl enable memcached
Перезапускаем php-fpm:
systemctl restart php${PHP_VER}-fpm
После этого открываем конфигурационный файл для nextcloud:
vi /var/www/nextcloud/config/config.php
И добавим:
...
'memcache.local' => '\\OC\\Memcache\\Memcached',
'memcache.distributed' => '\\OC\\Memcache\\Memcached',
'memcached_servers' =>
array (
0 =>
array (
0 => 'localhost',
1 => 11211,
),
),
...
4. Не указан регион размещения этого сервера Nextcloud
Для решения проблемы открываем конфигурационный файл nextcloud:
vi /var/www/nextcloud/config/config.php
Добавляем:
...
'default_phone_region' => 'RU',
Работа с пользователями из UNIX-Shell
В состав nextcloud входит php-скрипт occ, с помощью которого можно управлять сервисом из командной строки Linux.
Добавление пользователя
Создать нового пользователя можно командой:
sudo -u www-data php /var/www/nextcloud/occ user:add admin
* где admin — имя учетной записи.
Сброс пароля
При необходимости сбросить пароль пользователя, можно воспользоваться командой:
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin
* где admin — учетная запись пользователя, чей пароль хотим сбросить.
Подключение папки nextcloud по webdav
Мы можем подключить пользовательские данные nextcloud в качестве сетевого диска или раздела. Рассмотрим процесс для Windows и Linux.
Windows
Для начала необходимо включить службу «Веб-клиент». Для этого открываем от администратора командную строку и вводим команды:
sc config webclient start= auto
net start webclient
* первая команда включит автозапуск службы; вторая — запустит ее.
После открываем командную строку от пользователя и создаем сетевой диск командой:
net use <Буква диска>: https://<путь до nextcloud>/remote.php/webdav /user:user password
Например, для нашей настройки:
net use N: https://nextcloud.dmosk.ru/remote.php/webdav /user:admin password
* где N — буква сетевого диска; nextcloud.dmosk.ru — адрес нашего сервера; admin — учетная запись, которая была создана при установке системы; password — пароль от пользователя admin.
Ограничение на копирование файла с webdav
В Windows при попытке скопировать большой файл с папки webdav, мы можем получить ошибку «Ошибка 0x800700DF: Размер файла превышает установленное ограничение, сохранение файла невозможно.»:
Для решения проблемы необходимо на клиенте разрешить больший объем для загрузки файлов. Это делается в реестре — ветка HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters, параметр FileSizeLimitInBytes. Для примера, если задать значение 4294967295 (максимально возможное), то мы получим ограничение в 4 Гб.
Также можно воспользоваться командой:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v FileSizeLimitInBytes /t REG_DWORD /d 4294967295 /f
* команду нужно запускать в консоли, запущенной от администратора. В данном примере мы задаем также ограничение в 4 Гб.
Linux
Установим клиент davfs2. Действия будут немного различаться в зависимости от дистрибутива Linux.
а) Ubuntu / Debian:
apt install davfs2
б) CentOS / Red Hat:
yum install davfs2
Теперь мы можем примонтировать
mount -t davfs -o noexec https://nextcloud.dmosk.ru/remote.php/webdav /mnt
* в данном примере мы запустим команду на монтирование раздела по webdav в каталог /mnt. Обращение выполняется на наш сервер nextcloud.dmosk.ru.
После ввода команды, система попросит нас ввести логин и пароль от учетной записи Nextcloud:
Username: user
...
Password:
После каталог будет примонтирован.
Для постоянного монтирования серез fstab, открываем файл:
vi /etc/fstab
Добавляем строчку:
https://nextcloud.dmosk.ru/remote.php/webdav/ /mnt davfs user,rw,_netdev 0 0
После открываем файл:
vi /etc/davfs2/secrets
И добавляем строку:
/mnt user password
* где /mnt — предполагаемый каталог, куда мы будем монтировать данные; user и password — логин и пароль от учетной записи в Nextcloud.
Монтируем каталог командой:
mount -a
Дополнительные настройки
Рассмотрим некоторые дополнительные настройки в Nextcloud.
Защита от брут-форс атак
Данная возможность позволяет блокировать подключения от IP-адресов, с которых было совершено слишком много неудачных попыток войти в систему. Рассмотрим возможность изменения числа неудачных попыток или отключения возможности.
Число попыток
Текущее значени для числа попыток ввода пароля можно посмотреть командой:
sudo -u www-data php /var/www/nextcloud/occ config:system:get brute-force-attempts
Если она вернет пустое значение, значит используется значение по умолчанию — 10.
Чтобы его изменить, открываем конфигурационный файл:
vi /var/www/nextcloud/config/config.php
Добавляем:
'brute-force-attempts' => 50,
* в данном примере мы разрешили ввести неправильно пароль 50 раз, после чего будет активирована защита.
Отключение
Если по какой-либо причине нам не нужна эта функция и мы хотим ее отключить, открываем конфигурационный файл:
vi /var/www/nextcloud/config/config.php
Добавляем строку:
'auth.bruteforce.protection.enabled' => false,
Готово.
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии