Nextcloud. Установка на Ubuntu 22.04

В этой статье я хочу показать установку NextCloud – бесплатного файлового сервера, который предоставляет возможность получения доступа к вашим файлам из любой точки мира через веб интерфейс, либо через приложение на компьютере или телефоне. NextCloud -это аналог популярных облачных сервисов, но в отличие от них, его можно установить на свой сервер. Это значит, что вы будете полностью контролировать свои данные, не передавая их третьим лицам.

Требования для установки

С полным перечнем требований можно ознакомиться в официальной документации, ниже я приведу список ПО, которое я буду использовать для установки.

  • Операционная система: Ubuntu 22.04 LTS
  • База данных: MariaDB 10.6
  • Веб-сервер: Apache 2.4 with mod_php or php-fpm
  • PHP: версия 8.2

Итак, операционная система установлена, приступаю к установке БД.

Установка NextCloud

Для начала обновим текущие и установим необходимые пакеты для инсталляции: веб-сервер Apache, базу данных MariaDB и различные модули для PHP:

sudo apt update && sudo apt upgrade

sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip

nextcloud install

Имейте в виду, что при этом будут установлены пакеты для базовой системы Nextcloud. Если вы планируете использовать дополнительные приложения и плагины, то для них могут потребоваться дополнительные пакеты.

Чтобы двигаться дальше, нужно проверить, что наша сервер БД запущен и работает. Для это выполните команду:

sudo systemctl status mariadb

nextcloud check mariadb

Выполним первоначальную настройку сервера MariaDB:

sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] n
 ... skipping.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Далее нужно создать пользователя базы данных и саму базу данных, используя интерфейс командной строки MySQL. Таблицы базы данных будут созданы Nextcloud при первом входе в систему. В нижеприведенных командах вам нужно указать любые свои имя пользователя и пароль вместо nextclouduser и Qwerty123.

sudo mysql
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'Qwerty123';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
exit

Теперь все готово к установке Nextcloud. Скачиваем самую последнюю версию и распаковываем ее:

wget https://download.nextcloud.com/server/releases/latest.tar.bz2

tar -xjvf latest.tar.bz2

Затем переместим распакованное приложение директорию /data.

sudo cp -r nextcloud /data

Чтобы Apache мог корректно обрабатывать все вложенные файлы, необходимо сменить владельца каталога /data/nextcloud.

sudo chown -R www-data:www-data /data/nextcloud

Настройка веб-сервера Apache

Далее нам необходимо настроить Apache. Для начала создадим файл /etc/apache2/sites-available/nextcloud.conf с настройками виртуального хоста.

<VirtualHost *:80>
  DocumentRoot /data/nextcloud/
  ServerName  cloud.proitclub.ru

  <Directory /data/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</VirtualHost>

 

nextcloud apache

В качестве доменного имени я указал cloud.proitclub.ru и каталог с сервером /data/nextcloud. Измените эти значения на ваши имена сервера и каталога. Для сохранения изменений и запуска сайта выполните следующие команды:

sudo a2ensite nextcloud.conf
sudo systemctl reload apache2

nextcloud apache conf

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

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo systemctl restart apache2

Для продолжения установки необходимо подключиться к серверу через веб-интерфейс по адресу, который вы указали в настройках выше. В моем случае это http://cloud.proitclub.ru. На данный момент у нас еще не установлен SSL сертификат, поэтому мы используем протокол HTTP для доступа к нашему хранилищу. В дальнейшем мы установим SSL сертификат от Let’s Encrypt.

При входе на сервер через браузер отобразится стартовое окно, в котором  нужно указать параметры подключения к базе данных и расположение дистрибутива сервера NextCloud. Создадим учетную запись администратора, а также укажите название БД, пользователя и пароль, которые мы заводили на этапе настройки MariaDB. При необходимости также можете поменять каталог, где будут размещаться пользовательские данные.

nextcloud web config

После завершения установки у вас появится окно со списком рекомендованных приложений к установке. Я пока пропущу этот этап.

nextcloud applications

И, наконец, на следующем шаге мы попадаем на главную страницу сервера NextCloud.

Установка SSL сертификата Let’s Encrypt

Для полноценной работы сервера Nextcloud по протоколу HTTPS и шифрования трафика выпустим и установим бесплатный TLS-сертификат от Let’s Encrypt. Для начала установим утилиту certbot, которая автоматически выпускает и обновляет TLS-сертификаты.

apt-get install python3-certbot-apache -y

Запросим сертификат с помощью команды (не забудьте в параметре указать свое доменное имя):

certbot --apache -d cloud.proitclub.ru

Далее Certbot попросит ввести адрес электронной почты и согласиться с условиями использования. На этот адрес будут приходить письма с информацией об окончании срока сертификата. Сертификаты Let’s Encrypt действуют 90 дней.

nextcloud letsencrypt

После установки сертификата перезапустим службу:

service apache2 reload

Настройка интеграции Nextcloud с Active Directory

Профили пользователей Nextcloud могу храниться как во внутренней базе данных, так и во внешней. Например, можно настроить сервер для получения списка пользователей из Active Directory.

Для настройки нам потребуется модуль PHP LDAP, установить его можно следующей командой:

sudo apt install php-ldap

Также нам потребуется учетная запись в Active Directory, которая будет использоваться для подключения к каталогу, я сделал nextcloud_user.

Далее нам нужно включить приложение для интеграции с Active Directory. Для этого в графическом интерфейсе переходим в Приложения

nextcloud active directory

Затем переходим в Параметры сервера — LDAP/AD интеграция. Указываем имя сервера и нажимаем Определить порт. Если возникли проблемы с определением порта, то можно указать его вручную. Далее указываем имя и пароль пользователя, которого я создан ранее, и нажимаем Сохранить учетные данные. Для поиска пользователей и групп можно указать базу поиска вручную, либо нажать Определить базу поиска DN. Затем нажать Проверить базу поиска DN, и убедится, что Конфигурация в порядке.

nextcloud ldap integration

Нажимаем Продолжить и попадаем на экран Пользователи. Здесь можно добавить класс объектов user как показано на скриншоте ниже. Также здесь можно указать группу в AD, члены которой смогут иметь доступ к серверу с NextCloud.  И жмем кнопку Продолжить.

nextcloud ldap integration1

На следующем экране мы можем задать поле, которое отвечает за логин. По умолчанию выбрано имя пользователя в Active Directory, но вы можете выбрать и другие атрибуты. Нажимаем Продолжить.

nextcloud ldap integration2

На следующем экране можно указать фильтр для групп или оставить все по умолчанию.

nextcloud ldap integration3

По умолчанию внутреннее имя пользователя будет создано на основе атрибута UUID. Для того, чтобы имена пользователей отображались в привычном для нас виде нужно выбрать справа сверху пункт Эксперт, и ввести sAMAccountNameв поле Атрибут для внутреннего имени.

nextcloud ldap integration4

На этом настройка сервера с NextCloud завершена, и можно пользоваться файловым хранилищем.

Мы установили и настроили облако Nextcloud на собственном сервере. Установили все необходимые зависимости, подготовили MariaDB и Apache к установке, защитили сервер бесплатным SSL-сертификат от Let’s Encrypt для шифрования трафика.

Оставьте комментарий