Запуск Next Cloud в облаке Selectel

Оцените статью

Selectel мне прислал письмо, что я еще не все деньги из тестового гранта потратил и надо исправить это досадное упущение. И правильно, что напомнили я как раз хотел вспомнить как устанавливать и настраивать Next Cloud раз уж я решил съехать с Яндекс 360.

Что собственно планирую сделать

Next Cloud в облаке Selectel

Для запуска нашего Next Cloud как я уже говорил будем использовать окружение облачного провайдера Selectel.

Что нам потребуется настроит в рамках настройки облачного окружения:

  • Внешний IP-адрес
  • Виртуальный Firewall
  • Внутренняя виртуальная сеть
  • VPS-сервер для запуска LNPP (Linux Nginx Postgresql PHP — как замена LAMP)
  • S3 хранилище
  • Managed Postgresql

Выглядит как нечто очень сложное, но на самом деле все это хозяйство настраивается очень просто. Причем, если говорить про VPS-сервер, то у Selectel имеются готовые образы как для запуска LAMP, так и уже готовый сервер с Next Cloud и естественно чистый образ с Linux на любой вкус и цвет. И мы в рамках этой статьи рассмотрим все варианты.

Пожалуйста, если вы захотите повторить все описанное в этой статье воспользуйтесь при заказе моей реферальной ссылкой это меня сподвигнет и дальше рассказывать про этого облачного провайдера и не тратить при этом свои деньги. Заранее спасибо https://selectel.ru/?ref_code=ca6dbd2e7e.

Подготовка окружения в облаке Selectel

Виртуальная сеть

Переходим в раздел Облачные серверы -> Сеть -> Приватная сеть -> Создать сеть.

Selectel создать приватную сеть.

Создаем приватную подсеть 192.168.90.0/24 и активируем в подсети DHCP-сервер.

Переходим в раздел публичные IP-адреса и регистрируем внешний IP-адрес который будем использовать для доступа к серверу в приватной подсети.

Регистрация публичного IP-адреса.

Получается 200 рублей в месяц. В принципе средий по рынку ценник.

200 рублей в месяц

Облачные серверы

Переходим в раздел Облачные серверы и создаем VPS.

Создаем облачный сервер.

Сервер создаем на базе Ubuntu 24.04 в конфигурации Standart.

  • 2 vCPU на выделенных ядрах
  • 4 ГБ RAM
  • 16 ГБ Универсальный SSD диск
Итого получается 2 566,28 ₽ в месяц.

Итого получается 2 566,28 ₽ в месяц.

Настраиваем авторизацию по ключу.

Настраиваем авторизацию по ключу.

Настраиваем публичный адрес и приватную подсеть.

Публичный адрес и приватная подсеть.

Выбираем создать сервер.

Авторизуемся на сервере.

$ ssh root@178.72.128.175

Установка ПО

Для установки окружения для запуска воспользуемся Ansible Playbook который я разместил в своем репозитории.

Подготовим Inventory-файл ansible-nextcloud/inventory.ini.

[webservers]
nextcloud-server ansible_host=178.72.128.175 ansible_user=root

[webservers:vars]
ansible_python_interpreter=/usr/bin/python3

Настроим групповые переменные в файле ansible-nextcloud/group_vars/all.yml.

---
# Nextcloud version
nextcloud_version: "28.0.3"
nextcloud_domain: "cloud.interlan.xyz"
nextcloud_admin_user: "admin"
nextcloud_admin_password: "Qazxsw123"

# PostgreSQL settings
db_name: "nextcloud_db"
db_user: "nextcloud_user"
db_password: "Qazxsw123"
db_host: "localhost"

# PHP version
php_version: "8.3"

# Nginx settings
nginx_worker_processes: "auto"
nginx_worker_connections: 1024

# Nextcloud data directory
nextcloud_data_dir: "/var/www/nextcloud/data"
nextcloud_web_root: "/var/www/nextcloud"

# Let's Encrypt (set to true to enable SSL via certbot)
use_ssl: true
letsencrypt_email: "chernousov@interlan.xyz"

Применяем Play Book на созданный сервер и первым этапом подготовим сервер.

$ cd ./ansible-nextcloud/
$ ansible-playbook site.yml

Следующим этапом развернем Next Cloud командой.

$ ansible-playbook install.yml 

Настраиваем WEB-доступ и сертификат SSL

Прописываем DNS-запись для домена и у меня используется Free IPA для управления DNS-серверами.

DNS-запись для Next Cloud

Группа доступа по умолчанию разрешает любой входящий трафик до сервера.

Группа безопасности по умолчанию.

Лучше отредактировать правила и разрешить только порты 22, 80 и 443.

Проверяем, что Next Cloud теперь доступен из интернет

Просто переходим по адресу https://cloud.interlan.xyz/login.

Next Cloud работает

Запуск с использованием подготовленного шаблона VPS

Как я сказал в самом начале у Selectel есть возможность использовать предварительно подготовленный шаблон VPS с уже настроенным Next Cloud и давайте сейчас рассмотрим и этот вариант.

Удаляем наш сервер который мы подготовили при помощи Ansible Playbook. Переходим в раздел Продукты -> Облачные серверы и выбираем Удалить сервер.

Selectel удалить VPS-сервер.

Подтверждаем, что сервер нам больше не нужен.

Подтверждаем, что сервер нам больше не нужен.

Прежде всего создаем публичный IP-адрес и привязываем к нему DNS-имя. На этапе подготовки сервера будет получен SSL-сертификат Let’s encrypt и если не выполнить эту часть сертификат получен не будет.

Новый публичный IP-адрес

Переходим к созданию сервера и теперь источник выбираем на вкладке приложение.

Шаблон VPS для Next Cloud

Для автоматической подготовки сервера заполняем раздел «Автоматизация».

#cloud-config

write_files:
- path: "/opt/main.yml"
  permissions: "0644"
  content: |
    nextcloud_admin_name: "administrator"
    nextcloud_admin_pwd: "xxxPASSWORDxxx"
    nextcloud_admin_email: "chernousov@interlan.xyz"
    nextcloud_domain: "cloud.interlan.xyz"
Заполняем раздел автоматизация

Ждем окончания создания сервера и пробуем подключиться по ssh и проверяем доступность web-интерфейса.

Ждем окончания создания сервера и пробуем подключиться по ssh и проверяем доступность web-интерфейса.

При авторизации нас встречает такое веселое приветствие.

SelectOS от Selectel

Веб интерфейс так-же доступен.

Web-интерфейс так же доступен

Фактически на запуск собственного Next Cloud сервера ушло меньше пяти минут. И продолжаем делать наш Next Cloud сервер более облачным.

Облачный кластер Postgresql от Selectel

Переходим в раздел базы данных и выбираем «Создать кластер».

Облачный кластер баз данных от Selectel

Настраиваем конфигурацию.

  • Указываем имя кластера
  • Тип кластера Postgresql
  • Версия Postgresql (в моем случае 16)
  • Конфигурация ноды (в моем случае стандарт как и с VPS)
  • Отказоустойчивость два узла
  • Логирование если требуется
  • Выбираем внутреннюю сеть если у нас их несколько
Настройки облачного кластера

Вот в принципе и все и можно создавать кластер. Цена получается 11 532 рубля в месяц, что дороговато для Next Cloud, но нам просто на поиграться. Создание кластера занимает примерно 15 минут.

Кластер создан

Переходим в созданный кластер и создаем пользователя базы данных.

Создаем пользователя базы данных

Создаем базу данных и назначаем созданного пользователя ее владельцем.

Создаем базу данных и назначаем созданного пользователя ее владельцем.

Не забывайте про кодировку, это важно для например 1С.

На вкладке «Подключение» представлены инструкции для подключения к базе в кластере. Естественно, что это подключение действует только во внутренней виртуальной сети и не предназначено для доступа к кластеру из сети интернет. Сейчас переходим на VPS-сервер и пробуем подключиться к базе данных.

Проверяем что хост резолвится в DNS.

# nslookup master.1cad157e-cfb3-4694-8903-0f8fecdfbde3.c.dbaas.selcloud.ru
Server:         188.93.16.19
Address:        188.93.16.19#53

Non-authoritative answer:
master.1cad157e-cfb3-4694-8903-0f8fecdfbde3.c.dbaas.selcloud.ru canonical name = 2eac550d-e8bd-469d-83a6-50445bb93f4f.ru-3.c.dbaas.selcloud.ru.
Name:   2eac550d-e8bd-469d-83a6-50445bb93f4f.ru-3.c.dbaas.selcloud.ru
Address: 192.168.90.106

А вот по telnet нет доступа так-как VPS оказалась в другой подсети.

Ошибка в настройках сети

Обращайте внимание на сети и порты, а для исправления моей ошибки добавим еще один порт из требуемой сети.

Настройки сети не применяются автоматически и потребуется вручную изменить конфигурацию сети. После внесения правок наш VPS-сервер доступен из интернет и имеет доступ к кластеру баз данных.

# psql "host=master.1cad157e-cfb3-4694-8903-0f8fecdfbde3.c.dbaas.selcloud.ru \
      port=5432 \
      dbname=nextcloud_db \
      user=nextcloud_user \
      sslmode=disable"
Password for user nextcloud_user: 
psql (15.16 (Selectel 15.16-0+deb12u1), server 16.9 (Ubuntu 16.9-1.pgdg22.04+1ubuntu4))
WARNING: psql major version 15, server major version 16.
         Some psql features might not work.
Type "help" for help.

nextcloud_db=> 

Как видите мы успешно подключились к базе. Следующим этапом мы перенесем локальную базу в облачную и отключим локальную.

# su postgres 
$ psql 
psql (15.16 (Selectel 15.16-0+deb12u1))
Type "help" for help.

postgres=# \l
                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges   
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 nextcloud | ncadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | ncadmin=CTc/ncadmin
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
(4 rows)

postgres=#

База данных у нас называется nextcloud и нам надо сделать ее дамп и вылить в облако.

Делаем дамп.

$ pg_dump nextcloud > /tmp/dump.sql

Переносим в облако.

$ cat /tmp/dump.sql | psql "host=master.1cad157e-cfb3-4694-8903-0f8fecdfbde3.c.dbaas.selcloud.ru \
      port=5432 \
      dbname=nextcloud_db \
      user=nextcloud_user \
      sslmode=disable"

Меняем настройки Next Cloud для использования облачного кластера, а настройки находятся в файле /opt/nextcloud/config/config.php.

  'dbname' => 'nextcloud_db',
  'dbhost' => 'master.1cad157e-cfb3-4694-8903-0f8fecdfbde3.c.dbaas.selcloud.ru',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud_user',
  'dbpassword' => 'Qazxsw123',

Использование S3 хранилища для хранения файлов

И финальное, что мы сделаем, это настроим Next Cloud для использования хранилища S3 как хранилище файлов. Такой подход стоит дешевле чем использовать виртуальный диск, а скорость нам для наших целей не особо принципиальна.

Создаем объектное хранилище S3 в облаке Selectel

Переходим в раздел S3 и создаем Бакет.

Создаем бакет

При создании задаем.

  • Имя бакета (должно быть уникальным)
  • Тип — Приватный
  • Класс хранения — Стандартный
Настройки S3 бакета

Хранилище создано и переходим в раздел подключение.

Хранилище создано.

Переходим в раздел «Подключение».

Раздел подключение

В блоке управление S3-ключами создаем ключ доступа.

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

S3 ключи

Задаем ключ доступа.

Задаем ключ доступа

Переходим к настройке Next Cloud.

Подключаем объектное хранилище к Next Cloud

Далее подключим к Next Cloud приложение для поддержки внешнего хранилища в разделе «Приложения».

Next Cloud раздел Приложения

Устанавливаем приложение «External Storage Support».

External Storage Support

После установки переходим в раздел «Параметры сервера».

Параметры сервера

Настраиваем внешнее хранилище на уровне сервера для чего переходим Параметры сервера -> Внешнее хранилище.

Выберите тип подключения через Ключ доступа. Внесите данные для авторизации.

  • Корзина — имя контейнера, который хотите подключить.
  • Имя хоста — URL для доступа: s3.ru-1.storage.selcloud.ru.
  • Порт — 443.
  • Регион — ru-3.
  • Класс хранилища — Стандартное хранение/Холодное хранение. Выбирается в зависимости от указанных настроек при создании контейнера.
  • Использовать SSL — использовать SSL при подключении.
  • Использовать стиль пути — использовать метода подключения path-style, в котором используется URL вида .s3.storage.selcloud.ru.
  • Устаревшая (v2) проверка подлинности — использовать устаревшую проверку подлинности SSL.
  • Enable multipart copy — использовать сегментированную загрузку объектов.
  • Ключ доступа — Access key.
  • Секретный ключ — Secret key.

Например получаются такие настройки.

Настройки внешнего хранилища

Вот собственно и все. Возможно кому пригодится эта инструкция, а мне надо на Selectel удалить все компоненты этого эксперимента.

Похожие записи

Хранилище артефактов (Docker) Cloud.ru

Продолжаем разбираться с облачной платформой cloud.ru и сегодня займемся хранилищем артефактов. Достоинства хранилища артефактов Docker в Cloud.ru 1. Интеграция с экосистемой Cloud.ru 2. Безопасность 3. Надёжность и доступность 4. Производительность…

Хранение медиа-файлов WordPress в S3-хранилище

В продолжении перевода своих ресурсов в облака следующим этапом необходимо настроить хранение медиа-файлов WordPress в хранилище S3 в облаке Cloud.ru. Задачка довольно типовая, но есть нюансы. Прежде всего зарегистрируем сервисный…

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

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

Читать еще статьи

Хранилище артефактов (Docker) Cloud.ru

Хранилище артефактов (Docker) Cloud.ru

Хранение медиа-файлов WordPress в S3-хранилище

Хранение медиа-файлов WordPress в S3-хранилище

Настройка кэширования WordPress при помоши Redis

Настройка кэширования WordPress при помоши Redis

Создание кластера Managed Kubernetes в облаке Cloud.ru

Создание кластера Managed Kubernetes в облаке Cloud.ru

Интеграция FreeIPA DNS и BIND DNS

Интеграция FreeIPA DNS и BIND DNS

Настройка централизованной авторизации в домене IPA на RedOS 8

Настройка централизованной авторизации в домене IPA на RedOS 8