Для организации хранения и доступа из любого места, и с любого устройства к файлам, календарям, фонотеке и всему прочему использую Nextcloud. Разбираемся с базовой установкой.
Стараюсь не писать статьи повторяющие официальную документацию, по которой установка проходит на ура. С Debian так и было, но по некоторым причинам пришлось мигрировать с Debian на Ubuntu Server, и вот установка по инструкции не увенчалась успехом(да и описана она под Ubuntu 16.04 и PHP 7.0). И удовлетворяющий результат был получен со второго раза.
Со временем необходимые действия для успешной установки меняются, как и официальная документация. Периодически, при необходимости установки nextcloud данный материал обновляется.
Задача
На развернутую Ubuntu Server 18.04.1 выполнить установку Nextcloud 14 с выполнением следующих требований:
- Организовать хранение данных не на системном диске;
- Организовать подключение по HTTPS, с использованием SSL-сертификата подписанного ЦС.
Решение
Перед установкой настоятельно рекомендую ознакомиться с разделом установки официальной документации. Далее в тексте по возможности буду оставлять ссылки на соответствующие разделы документации.
Так же перед начало стоит отметить, что в моем случае Nextcloud будет расположен на выделенном поддомене, типа cloud.guesto.ru(адрес приведен для примера, на guesto.ru нет такого поддомена). Соответственно настройку виртуального хоста и получение сертификата описываю для такого варианта.
Задачу разобьем на несколько пунктов, их порядок и содержание будет отличаться от официальной инструкции:
- Получение и развертывание дистрибутива Nextcloud;
- Установка и настройка Apache;
- Установка и настройка MySQL;
- Установка PHP;
- Конфигурирование виртуального хоста Apache;
- Получение SSL-сертификата Let’s Encrypt;
Получение и развертывание дистрибутива Nextcloud
На момент установки актуальный релиз 14.0.3, его и буду указывать в примере. Скачаем и распакуем дистрибутив в текущую директорию
wget https://download.nextcloud.com/server/releases/nextcloud-14.0.3.zip unzip ./nextcloud-14.0.3.zip
Nexcloud будет расположен в каталоге /var/www/nextcloud/. Копируем ранее распакованный архив, устанавливаем владельца
# cp -R ./nextcloud/ /var/www/ # chown -R www-data:www-data /var/www/nextcloud/
Все пользовательские данные, согласно условию 1 будем хранить на другом диске /mnt/POINT_01/nextcloud/. Создаем каталог, устанавливаем владельца
# mkdir /mnt/POINT_01/nextcloud/ # chown -R www-data:www-data /mnt/POINT_01/nextcloud/
Установка и настройка Apache
Устанавливаем
# apt-get install apache2
Подключим необходимые для работы Nextcloud модули
# a2enmod rewrite # a2enmod headers # a2enmod env
Сразу позаботимся о работе SSL, подключив модуль SSL и стандартный хост
# a2enmod ssl # a2ensite default-ssl
Перезагрузим сервер и включим автозагрузку
# systemctl restart apache2 # systemctl enable apache2
Установка и настройка MySQL
Устанавливаем
# apt-get install mariadb-client mariadb-server
Выполним настройку безопасности ответив на вопросы мастера по команде
# mysql_secure_installation
Заходим в MySQL
# mysql -u root -p
Выполним запрос, который создаст ИБ nextcloud, пользователя nextclouduser с паролем nextcloudpasword:
CREATE DATABASE nextcloud; CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'nextcloudpasword'; GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'nextcloudpasword' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
Перезагрузим сервер и включим автозагрузку
# systemctl restart mariadb # systemctl enable mariadb
Установка PHP
Устанавливаем PHP с необходимыми зависимостями и модулями
# apt-get install libapache2-mod-php7.2 php-common php-mysql php-imagick php7.2 php7.2-bz2 php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-intl php7.2-json php7.2-mbstring php7.2-opcache php7.2-xml php7.2-zip
Конфигурирование виртуального хоста
Теперь согласно разделу инструкции Apache Web server configuration создадим файл хоста
# nano /etc/apache2/sites-available/nextcloud.conf
Поместим туда следующие строки
Alias / "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory>
Добавляем строки с описанием виртуальных хостов на 80 и 443 порту, и принудительным перенаправлением на HTTPS
<VirtualHost *:80> ServerName cloud.guesto.ru Redirect permanent / https://cloud.guesto.ru/ </VirtualHost> <VirtualHost *:443> ServerName cloud.guesto.ru </VirtualHost>
Необходимо сохранить введенные данные сочетанием клавиш Ctrl + O, и выйти по Ctrl + X.
Включаем виртуальный хост
# a2ensite nextcloud.conf
Теперь при обращении по адресу https:\\cloud.guesto.ru отобразится мастер установи nextcloud, но SSL-сертификат будет самоподписанный и браузер будет на него ругаться.
Получение SSL-сертификата Let’s Encrypt
Получать сертификат будем от Let’s Encrypt при помощи Cerbot. На сайте можно выбрать необходимые параметры и получить исчерпывающую инструкцию, а для моей конфигурации шаги следующие
Подключим репозиторий и выполним установку
# apt-get update # apt-get install software-properties-common # add-apt-repository ppa:certbot/certbot # sudo apt-get update # sudo apt-get install python-certbot-apache
Теперь непосредственно выполним получение и установку сертификата при помощи мастера
sudo certbot --apache
Необходимо будет указать e-mail и ответить на остальные вопросы, по завершению сертификат будет установлен.
Срок действия сертификата 3 месяца и необходимо настроить задание в cron для обновления сертификата
Мастер установки
К сожалению не сделал снимков мастера установки, да и с самим мастером вопросов не возникает, потому оставлю ссылку на соответствующий раздел документации.
В мастере необходимо указать:
- Имя и пароль создаваемого пользователя;
- Путь для хранения данных, в примере использовался /mnt/POINT_01/nextcloud/;
- Имя, пароль пользователя MySQL и имя созданной нами базы. Так же необходимо указать адрес сервера MySQL, если он на том же сервере, то просто укажем localhost.
По завершению работы мастера Nextcloud готов к использованию. Более детальную настройку разбираю в статье Linux. Настраиваем Nextcloud.
Скажите а как к этой папке /mnt/POINT_01/nextcloud/ . примонтировать диск? Права не слетают?
с уважением Андрей
Андрей, монтирование разбирал в статье Linux. Монтирование дисков.
С правами проблем не было