Linux. Установка Nextcloud

Для организации хранения и доступа из любого места, и с любого устройства к файлам, календарям, фонотеке и всему прочему использую Nextcloud. Разбираемся с базовой установкой.

Стараюсь не писать статьи повторяющие официальную документацию, по которой установка проходит на ура. С Debian так и было, но по некоторым причинам пришлось мигрировать с Debian на Ubuntu Server, и вот установка по инструкции не увенчалась успехом(да и описана она под Ubuntu 16.04 и PHP 7.0). И удовлетворяющий результат был получен со второго раза.

Задача

На развернутую Ubuntu Server 18.04.1 выполнить установку Nextcloud 14 с выполнением следующих требований:

  1. Организовать хранение данных не на системном диске;
  2. Организовать подключение по HTTPS, с использованием SSL-сертификата подписанного ЦС.

Решение

Перед установкой настоятельно рекомендую ознакомиться с разделом установки официальной документации. Далее в тексте по возможности буду оставлять ссылки на соответствующие разделы документации.

Так же перед начало стоит отметить, что в моем случае Nextcloud будет расположен на выделенном поддомене, типа cloud.guesto.ru(адрес приведен для примера, на guesto.ru нет такого поддомена). Соответственно настройку виртуального хоста и получение сертификата описываю для такого варианта.

Задачу разобьем на несколько пунктов, их порядок и содержание будет отличаться от официальной инструкции:

  1. Получение и развертывание дистрибутива Nextcloud;
  2. Установка и настройка Apache;
  3. Установка и настройка MySQL;
  4. Установка PHP;
  5. Конфигурирование виртуального хоста Apache;
  6. Получение 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/nextcloud/
# 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

Сразу позаботимся о работе 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 готов к использованию.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *