NextCloud Centos 8

Thank you for reading this post, don't forget to subscribe!

Дан­ная инструк­ция про­те­сти­ро­ва­на для уста­нов­ки NextCloud вер­сий 17 и 18, а так­же CentOS 8. В каче­стве веб-сер­ве­ра нами будет исполь­зо­вать­ся связ­ка NGINX + MariaDB + php-fpm

Подготовка сервера

1. Систем­ные требования

С акту­аль­ны­ми систем­ны­ми тре­бо­ва­ни­я­ми мож­но озна­ко­мить­ся на сай­те раз­ра­бот­чи­ка в раз­де­ле Administration Manual - Installation and server configuration - System requirements. Необ­хо­ди­мо убе­дить­ся, что наш сер­вер соот­вет­ству­ет дан­ным требованиям.

2. Пра­виль­ное время.

Уста­нав­ли­ва­ем ути­ли­ту chrony:

dnf install chrony

Запус­ка­ем ее службу:

systemctl enable chronyd --now

Выстав­ля­ем нуж­ный часо­вой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в дан­ном при­ме­ре мос­ков­ское вре­мя. Дру­гие зоны так­же мож­но най­ти по пути /usr/share/zoneinfo.

3. Настрой­ка брандмауэра.

Выпол­ня­ет­ся сле­ду­ю­щи­ми командами:

firewall-cmd --permanent --add-service={http,https}

firewall-cmd --reload

4. Отклю­че­ние SELinux.

Для отклю­че­ния SELinux вво­дим две команды:

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

* пер­вая коман­да отклю­ча­ет SELinux до пере­за­груз­ки, вто­рая — навсегда.

 

Настройка сервера баз данных

В каче­стве СУБД исполь­зу­ем MariaDB.

Уста­нав­ли­ва­ем:

dnf install mariadb-server

Раз­ре­ша­ем авто­за­пуск и стар­ту­ем сервис:

systemctl enable mariadb --now

Зада­ем пароль для супер­поль­зо­ва­те­ля 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

* дан­ны­ми коман­да­ми мы созда­ли базу дан­ных nextcloud, затем с таким же назва­ни­ем мы созда­ли поль­зо­ва­те­ля и зада­ли ему пароль nextcloud.

Установка и настройка веб-сервера

PHP

В репо­зи­то­рии CentOS 8 есть тре­бу­е­мая вер­сия паке­та php. Для ее уста­нов­ки про­сто вво­дим команду:

dnf install php php-fpm php-pdo php-zip php-dom php-intl php-gd php-mysqli php-mbstring php-json php-process

PHP-FPM

Сам пакет php-fpm мы уста­но­ви­ли на преды­ду­щем шаге. Поэто­му на дан­ном эта­пе необ­хо­ди­мо его настроить.

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл:

vi /etc/php-fpm.d/www.conf

Нахо­дим опцию listen. Про­ве­ря­ем ее значение:

listen = /run/php-fpm/www.sock

Раз­ре­ша­ем авто­за­пуск php-fpm и запус­ка­ем его:

systemctl enable php-fpm --now

NGINX

Nextcloud мож­но раз­вер­нуть на NGINX или Apache. В дан­ной инструк­ции будем исполь­зо­вать первый.

Уста­нав­ли­ва­ем веб-сервер:

dnf install nginx

Для пра­виль­ной рабо­ты nextcloud запро­сы долж­ны идти по https. Для это­го созда­ем вир­ту­аль­ный домен и настра­и­ва­ем его для рабо­ты с облач­ным сер­ви­сом в NGINX:

vi /etc/nginx/conf.d/nextcloud.test.ru.conf

[codesyntax lang="php"]

[/codesyntax]

* где test.ru — домен, на кото­ром будет рабо­тать сер­вис; nextcloud.test.ru — имя сер­ве­ра, на кото­ром будет рабо­тать nextcloud; /etc/nginx/ssl — ката­лог, в кото­ром будут хра­нить­ся сер­ти­фи­ка­ты; /var/www/nextcloud — ката­лог с порталом.

Созда­ем ката­лог для хра­не­ния сер­ти­фи­ка­тов и пере­хо­дим в него:

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.test.ru/CN=nextcloud"

* дан­ная коман­да создаст сер­ти­фи­кат на 4 года для URL nextcloud.test.ru или nextcloud.
* в дан­ном при­ме­ре мы, все­го лишь, созда­ли само­под­пи­сан­ный сер­ти­фи­кат, кото­рый не будет при­ни­мать­ся бра­у­зе­ром и нуж­но будет про­пус­кать пре­ду­пре­жде­ние. Дан­ный метод под­хо­дит для тести­ро­ва­ния, а для про­дук­тив­ной сре­ды сто­ит купить сер­ти­фи­кат или полу­чить его бес­плат­но от Let's Encrypt.

Про­ве­ря­ем кон­фи­гу­ра­цию nginx, раз­ре­ша­ем его авто­за­пуск и пере­за­пус­ка­ем сервис:

nginx -t

systemctl enable nginx --now

Установка Nextcloud

Для загруз­ки и рас­па­ков­ки архи­ва на нуж­ны сле­ду­ю­щие пакеты:

dnf install wget unzip

Пере­хо­дим во вре­мен­ную папку:

cd /tmp

Захо­дим на сайт nextcloud и копи­ру­ем ссыл­ку на ска­чи­ва­ние послед­ней вер­сии программы:

Ска­чи­ва­ем исход­ник для установки:

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip

Рас­па­ко­вы­ва­ем ска­чан­ный архив:

unzip nextcloud-*.zip -d /var/www

Зада­ем пра­ва доступа:

chown -R apache:apache /var/www/nextcloud

Откры­ва­ем бра­у­зер и пере­хо­дим по адре­су https://nextcloud.test.ru, где nextcloud.test.ru — наш адрес облач­но­го сер­ви­са, кото­рый мы созда­ли в NGINX. Если мы исполь­зу­ем само­под­пи­сан­ный сер­ти­фи­кат, бра­у­зер выдаст пре­ду­пре­жде­ние без­опас­но­сти — игно­ри­ру­ем его и пере­хо­дим на страницу.

* так как мы настро­и­ли вир­ту­аль­ный домен, важ­но обра­тить­ся к сер­ве­ру, имен­но, по име­ни. Таким обра­зом, настро­ен­ный узел (в моем слу­чае, nextcloud.test.ru) дол­жен раз­ре­шать­ся в DNS или вне­сен в локаль­ный файл hosts.

Про­пи­сы­ва­ем логин и пароль адми­ни­стра­то­ры, кото­рые хотим исполь­зо­вать для вхо­да, кли­ка­ем по Хра­ни­ли­ще и база дан­ных:

Пере­клю­ча­ем­ся на MySQL/MariaDB, вво­дим в каче­стве логи­на, паро­ля и базы nextcloud:

Завер­ша­ем уста­нов­ку, при жела­нии, оста­вим галоч­ку для уста­нов­ки реко­мен­до­ван­ных приложений:

После уста­нов­ки мы ока­жем­ся в системе.

Проверка безопасности и параметров

Для кор­рект­ной рабо­ты систе­мы выпол­ним допол­ни­тель­ную настрой­ку систе­мы. После вхо­да в nextcloud под адми­ни­стра­то­ром, пере­хо­дим в настрой­ки для пользователя:

В раз­де­ле «Пара­мет­ры сер­ве­ра» пере­хо­дим в Основ­ные све­де­ния:

В раз­де­ле «Про­вер­ка без­опас­но­сти и пара­мет­ров» мы можем уви­деть спи­сок проблем:

Рас­смот­рим про­цесс реше­ния неко­то­рых из них.

1. PHP не настроен правильно для получения переменных системного окружения

Откры­ва­ем файл php.ini. При нашей уста­нов­ке, это:

vi /etc/php-fpm.d/www.conf

Сни­ма­ем ком­мен­та­рий с пара­мет­ра PATH:

env[PATH] = /usr/local/bin:/usr/bin:/bin

Пере­за­пус­ка­ем php-fpm:

systemctl restart php-fpm

2. Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ

Откры­ва­ем на редак­ти­ро­ва­ние файл:

vi /etc/php.ini

Меня­ем настрой­ку для memory_limit:

memory_limit = 512M

Пере­за­пус­ка­ем php-fpm:

systemctl restart php-fpm

3. В базе данных отсутствуют некоторые индексы

Выпол­ним коман­ду для индек­си­ро­ва­ния баз:

sudo -u apache php /var/www/nextcloud/occ db:add-missing-indices

4. Некоторые индексы базы данных не были преобразованы в тип big int

Выпол­ним коман­ду для пре­об­ра­зо­ва­ния в тип big int:

sudo -u apache php /var/www/nextcloud/occ db:convert-filecache-bigint

На запрос Continue with the conversion отве­ча­ем утвердительно:

Continue with the conversion (y/n)? [n] y

5. В системе не установлены рекомендуемые модули PHP

Дан­ная ошиб­ка устра­ня­ет­ся в зави­си­мо­сти от спис­ка моду­лей, кото­рых не хва­та­ет систе­ме. Чаще все­го, под­хо­дит команда:

dnf install php-<название модуля>

6. Не загружен модуль OPcache

Уста­нав­ли­ва­ем модуль opcache командой:

dnf install php-opcache

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл:

vi /etc/php.d/10-opcache.ini

Редак­ти­ру­ем следующее:

[codesyntax lang="php"]

[/codesyntax]

Пере­за­пус­ка­ем php-fpm:

systemctl restart php-fpm

Установка и настройка клиента

Для син­хро­ни­за­ции фай­лов уста­но­вим и настро­им кли­ен­та. Nextcloud под­дер­жи­ва­ет уста­нов­ку на Windows, Linux, Mac, iOS и Android.

Пере­хо­дим на стра­ни­цу загруз­ки Nextcloud и ска­чи­ва­ем нуж­ный кли­ент. После уста­нав­ли­ва­ем его, отве­чая на все вопро­сы масте­ра по умол­ча­нию. Для уста­нов­ки кли­ен­та на теле­фон, поль­зу­ем­ся Google Play или Apple App Store.

Запус­ка­ем кли­ент­ское при­ло­же­ние и пере­хо­дим к настрой­ке, клик­нув по Вой­ти:

На сле­ду­ю­щей стра­ни­це вво­дим адрес наше­го сер­ве­ра и кли­ка­ем по Далее:

Нас пере­ки­нет на веб стра­ни­цу для авто­ри­за­ции — вво­дим логин и пароль для поль­зо­ва­те­ля. После успеш­ной авто­ри­за­ции мож­но исполь­зо­вать кли­ент для син­хро­ни­за­ции с фай­лов с нашим облаком.

Работа с пользователями из UNIX-Shell

В состав nextcloud вхо­дит php-скрипт occ, с помо­щью кото­ро­го мож­но управ­лять сер­ви­сом из команд­ной стро­ки Linux.

Добавление пользователя

Создать ново­го поль­зо­ва­те­ля мож­но командой:

sudo -u apache php /var/www/nextcloud/occ user:add admin

* где admin — имя учет­ной записи.

Сброс пароля

При необ­хо­ди­мо­сти сбро­сить пароль поль­зо­ва­те­ля, мож­но вос­поль­зо­вать­ся командой:

sudo -u apache php /var/www/nextcloud/occ user:resetpassword admin

* где admin — учет­ная запись поль­зо­ва­те­ля, чей пароль хотим сбросить.

Установка приложений

Рас­ши­рить функ­ци­о­наль­ные воз­мож­но­сти про­грам­мы Nextcloud мож­но с помо­щью допол­ни­тель­ных при­ло­же­ний. Для их уста­нов­ки нам нуж­ны пра­ва адми­ни­стра­то­ра. Кли­ка­ем по икон­ке поль­зо­ва­те­ля - При­ло­же­ния:

Сле­ва мож­но уви­деть кате­го­рии, по кото­рым раз­би­ты приложения:

Для уста­нов­ки нуж­но­го при­ло­же­ния про­сто кли­ка­ем под его опи­са­ни­ем Ска­чать и вклю­чить.

Настройка почтового сервера

Для отправ­ки уве­дом­ле­ний и воз­мож­но­сти отправ­лять пись­ма с nextcloud необ­хо­ди­мо про­пи­сать сер­вер отправ­ки почты. Для это­го пере­хо­дим в настрой­ки и в раз­де­ле «Пара­мет­ры сер­ве­ра» пере­хо­дим в Основ­ные пара­мет­ры:

Для раз­де­ла «Поч­то­вый сер­вер» запол­ня­ем поля сер­ве­ра отправки:

* в дан­ном при­ме­ре мы ука­за­ли такие настройки:

  • Спо­соб отправ­ки: сер­вер smtp с шиф­ро­ва­ни­ем через STARTTLS.
  • Отправ­ка будет выпол­нять­ся от поч­то­во­го адре­са nextcloud@test.ru.
  • Тре­бу­ет­ся аутен­ти­фи­ка­ция на сер­ве­ре отправки.
  • Адрес сер­ве­ра: имя сер­ве­ра или его IP-адрес, а так­же порт для под­клю­че­ния по про­то­ко­лу smtp.
  • При уста­нов­ке галоч­ки о необ­хо­ди­мо­сти авто­ри­за­ции, так­же необ­хо­ди­мо ука­зать поль­зо­ва­те­ля и пароль для про­вер­ки подлинности.

* в вашем слу­чае настрой­ки могут быть прин­ци­пи­аль­но дру­ги­ми. Их мож­но уточ­нить у постав­щи­ка поч­то­вых услуг.

После вне­се­ния настро­ек кли­ка­ем по Отпра­вить сооб­ще­ние — если все сде­ла­но пра­виль­но, мы уви­дим сооб­ще­ние «Пись­мо отправлено».

Подключение nextcloud как сетевой диск

Мы можем под­клю­чить поль­зо­ва­тель­ские дан­ные nextcloud в каче­стве сете­во­го дис­ка. Рас­смот­рим про­цесс для Windows.

Для нача­ла необ­хо­ди­мо вклю­чить служ­бу «Веб-кли­ент». Для это­го откры­ва­ем от адми­ни­стра­то­ра команд­ную стро­ку и вво­дим команды:

sc config webclient start= auto

net start webclient

* пер­вая коман­да вклю­чит авто­за­пуск служ­бы; вто­рая — запу­стит ее.

После откры­ва­ем команд­ную стро­ку от поль­зо­ва­те­ля и созда­ем сете­вой диск командой:

net use <Бук­ва дис­ка>: https://<путь до nextcloud>/remote.php/webdav /user:user password

Напри­мер, для нашей настройки:

net use N: https://nextcloud.test.ru/remote.php/webdav /user:admin password

* где N — бук­ва сете­во­го дис­ка; nextcloud.test.ru — адрес наше­го сер­ве­ра; admin — учет­ная запись, кото­рая была созда­на при уста­нов­ке систе­мы; password — пароль от поль­зо­ва­те­ля admin.