В этой статье я хочу показать установку NextCloud – бесплатного файлового сервера, который предоставляет возможность получения доступа к вашим файлам из любой точки мира через веб интерфейс, либо через приложение на компьютере или телефоне. NextCloud -это аналог популярных облачных сервисов, но в отличие от них, его можно установить на свой сервер. Это значит, что вы будете полностью контролировать свои данные, не передавая их третьим лицам.
Требования для установки
С полным перечнем требований можно ознакомиться в официальной документации, ниже я приведу список ПО, которое я буду использовать для установки.
- Операционная система: Ubuntu 22.04 LTS
- База данных: MariaDB 10.6
- Веб-сервер: Apache 2.4 with
mod_php
orphp-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. Если вы планируете использовать дополнительные приложения и плагины, то для них могут потребоваться дополнительные пакеты.
Чтобы двигаться дальше, нужно проверить, что наша сервер БД запущен и работает. Для это выполните команду:
sudo systemctl status 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>
В качестве доменного имени я указал cloud.proitclub.ru и каталог с сервером /data/nextcloud. Измените эти значения на ваши имена сервера и каталога. Для сохранения изменений и запуска сайта выполните следующие команды:
sudo a2ensite nextcloud.conf sudo systemctl reload apache2
Дополнительно нужно активировать несколько модулей 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.
Установка 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 дней.
После установки сертификата перезапустим службу:
service apache2 reload
Настройка интеграции Nextcloud с Active Directory
Профили пользователей Nextcloud могу храниться как во внутренней базе данных, так и во внешней. Например, можно настроить сервер для получения списка пользователей из Active Directory.
Для настройки нам потребуется модуль PHP LDAP, установить его можно следующей командой:
sudo apt install php-ldap
Также нам потребуется учетная запись в Active Directory, которая будет использоваться для подключения к каталогу, я сделал nextcloud_user.
Далее нам нужно включить приложение для интеграции с Active Directory. Для этого в графическом интерфейсе переходим в Приложения
Затем переходим в Параметры сервера — LDAP/AD интеграция. Указываем имя сервера и нажимаем Определить порт. Если возникли проблемы с определением порта, то можно указать его вручную. Далее указываем имя и пароль пользователя, которого я создан ранее, и нажимаем Сохранить учетные данные. Для поиска пользователей и групп можно указать базу поиска вручную, либо нажать Определить базу поиска DN. Затем нажать Проверить базу поиска DN, и убедится, что Конфигурация в порядке.
Нажимаем Продолжить и попадаем на экран Пользователи. Здесь можно добавить класс объектов user как показано на скриншоте ниже. Также здесь можно указать группу в AD, члены которой смогут иметь доступ к серверу с NextCloud. И жмем кнопку Продолжить.
На следующем экране мы можем задать поле, которое отвечает за логин. По умолчанию выбрано имя пользователя в Active Directory, но вы можете выбрать и другие атрибуты. Нажимаем Продолжить.
На следующем экране можно указать фильтр для групп или оставить все по умолчанию.
По умолчанию внутреннее имя пользователя будет создано на основе атрибута UUID. Для того, чтобы имена пользователей отображались в привычном для нас виде нужно выбрать справа сверху пункт Эксперт, и ввести sAMAccountNameв поле Атрибут для внутреннего имени.
На этом настройка сервера с NextCloud завершена, и можно пользоваться файловым хранилищем.
Мы установили и настроили облако Nextcloud на собственном сервере. Установили все необходимые зависимости, подготовили MariaDB и Apache к установке, защитили сервер бесплатным SSL-сертификат от Let’s Encrypt для шифрования трафика.