Обзор развертывания Restyaboard на сервере¶
Предварительные требования и базовые условия¶
Перед развертыванием Restyaboard на целевом сервере должны быть выполнены следующие требования:
-
Операционная система: Ubuntu (совместимая с менеджером пакетов
apt). -
Привилегии: Для установки Docker и управления системными службами требуются права root или привилегии
sudo. -
Домен: Развертывание использует зону
hostkey.in. -
Порты:
-
Внутренний порт приложения:
8080(привязан к127.0.0.1). -
Внешний порт HTTPS:
443(управляется прокси-сервером Nginx). -
Внешний порт HTTP:
80(управляется прокси-сервером Nginx для перенаправления SSL).
FQDN конечной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):
-
restyaboard<Server ID>.hostkey.in -
Служба слушает порт
443для защищенных соединений HTTPS.
Структура файлов и каталогов¶
Для сохранения данных и конфигурации развертывание использует следующую структуру каталогов:
-
/opt/restyaboard/postgres: Постоянное хранилище для данных базы данных PostgreSQL. -
/opt/restyaboard/uploads: Каталог для хранения загрузок Restyaboard. -
/root/nginx: Каталог, содержащий конфигурацию прокси-сервера Nginx и файлы Docker Compose. -
/root/nginx/compose.yml: Конфигурация Docker Compose для службы прокси-сервера Nginx. -
/data/nginx/user_conf.d/: Каталог, содержащий пользовательские файлы конфигурации Nginx для конкретного экземпляра сервера. -
/data/nginx/nginx-certbot.env: Файл окружения для службы Nginx-Certbot.
Процесс установки приложения¶
Приложение развертывается с использованием контейнеров Docker. Процесс установки включает следующие шаги:
-
Установка Docker: В системе устанавливаются Docker CE, CLI,
containerd.ioи плагин Docker Compose. -
Создание сети: Создается выделенная сеть Docker с именем
restya_netдля изоляции контейнеров приложения и базы данных. -
Загрузка образов: Загружаются следующие образы Docker:
-
postgres:15 -
restyaplatform/restyaboard:v1.7.1
-
-
Инициализация базы данных:
-
Запускается контейнер PostgreSQL с именем
restya_db. -
Создается роль базы данных с именем
restyaс заданным паролем. -
Создается база данных с именем
restyaboard, владельцем которой является рольrestya. -
Если схема базы данных пуста, файл SQL-схемы извлекается из контейнера приложения и применяется к базе данных.
-
-
Запуск приложения:
-
Запускается контейнер Restyaboard с именем
restya_app. -
Приложение подключается к контейнеру
restya_dbчерез внутреннюю сеть. -
Приложение слушает порт
127.0.0.1:8080.
-
Контейнеры Docker и их развертывание¶
Развертывание состоит из трех основных контейнеров Docker:
Контейнер приложения Restyaboard¶
-
Имя:
restya_app -
Образ:
restyaplatform/restyaboard:v1.7.1 -
Сеть:
restya_net -
Маппинг портов:
127.0.0.1:8080:80 -
Политика перезапуска:
unless-stopped -
Переменные окружения:
-
POSTGRES_HOST:restya_db -
POSTGRES_PORT:5432 -
POSTGRES_ADMIN_USER:postgres -
POSTGRES_ADMIN_PASS: (Защищенный пароль) -
RESTYA_DB_USERNAME:restya -
RESTYA_DB_USERPASS: (Защищенный пароль) -
RESTYA_DB:restyaboard
Контейнер базы данных PostgreSQL¶
-
Имя:
restya_db -
Образ:
postgres:15 -
Сеть:
restya_net -
Привязка тома:
/opt/restyaboard/postgres:/var/lib/postgresql/data -
Политика перезапуска:
unless-stopped -
Переменные окружения:
-
POSTGRES_USER:postgres -
POSTGRES_PASSWORD: (Защищенный пароль) -
POSTGRES_DB:restyaboard
Контейнер прокси-сервера Nginx¶
-
Имя службы:
nginx(управляется через Docker Compose) -
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Политика перезапуска:
unless-stopped -
Томы:
-
nginx_secretsпривязан к/etc/letsencrypt -
/data/nginx/user_conf.dпривязан к/etc/nginx/user_conf.d -
Окружение:
-
CERTBOT_EMAIL:hkadm@hostkey.com
Прокси-серверы¶
Приложение обслуживается контейнером прокси-сервера Nginx, который обрабатывает завершение SSL-сессий и маршрутизацию.
-
ПО прокси-сервера: Nginx с интеграцией Certbot (
jonasal/nginx-certbot). -
Конфигурация SSL: Автоматически управляется Certbot для домена
hostkey.in. -
Маршрутизация:
-
Файл конфигурации Nginx, расположенный по адресу
/data/nginx/user_conf.d/restyaboard<Server ID>.hostkey.in.conf, содержит блок location. -
Трафик перенаправляется с внешнего порта
443на внутренний адрес приложенияhttp://127.0.0.1:8080. -
Управление конфигурацией:
-
Директива
proxy_passустановлена в значениеhttp://127.0.0.1:8080;внутри блокаlocation /. -
Служба Nginx запускается с помощью команды
docker compose -p certproxy up -d nginxиз каталога/root/nginx.
Базы данных¶
Приложение использует базу данных PostgreSQL для хранения данных.
-
Тип базы данных: PostgreSQL версии 15.
-
Метод подключения: Внутренняя коммуникация сети Docker между
restya_appиrestya_db. -
Имя базы данных:
restyaboard. -
Пользователь базы данных:
restya. -
Место хранения: Данные сохраняются в каталоге хоста
/opt/restyaboard/postgres. -
Инициализация схемы:
-
Схема импортируется из SQL-файла, расположенного внутри контейнера приложения (например,
restyaboard_with_empty_data.sqlилиpostgresql.sql). -
Схема применяется к базе данных, если отсутствуют таблицы
oauth_clientsилиsettings.
Права доступа и безопасность¶
-
Межсетевой экран: Контейнер приложения привязан только к
127.0.0.1, что предотвращает прямой внешний доступ к порту приложения. Весь внешний трафик должен проходить через прокси-сервер Nginx на портах80и443. -
Привилегии пользователей:
-
База данных использует выделенную роль
restyaс ограниченными привилегиями для приложения. -
Суперпользователь
postgresиспользуется для административных задач во время инициализации. -
Безопасность паролей: Пароли базы данных управляются через переменные окружения и не хранятся в открытом виде в файлах конфигурации, видимых в документации.
Настройки разрешений¶
В процессе развертывания强制执行ются следующие права доступа к файлам и каталогам:
-
/opt/restyaboard/postgres:0755(Владелец:root, Группа:root). -
/opt/restyaboard/uploads:0755(Владелец:root, Группа:root). -
/root/nginx:0755(Владелец:root, Группа:root). -
/root/nginx/compose.yml:0644(Владелец:root, Группа:root).
Расположение файлов конфигурации и данных¶
-
Файл Docker Compose для Nginx:
/root/nginx/compose.yml -
Пользовательская конфигурация Nginx:
/data/nginx/user_conf.d/restyaboard<Server ID>.hostkey.in.conf -
Файл окружения Nginx:
/data/nginx/nginx-certbot.env -
Данные базы данных:
/opt/restyaboard/postgres -
Загрузки приложения:
/opt/restyaboard/uploads
Доступные порты для подключения¶
-
Порт 80: HTTP (Обрабатывается прокси-сервером Nginx для перенаправления SSL).
-
Порт 443: HTTPS (Публичный доступ к Restyaboard через прокси-сервер Nginx).
-
Порт 8080: Внутренний порт приложения (Привязан только к
127.0.0.1, недоступен из публичного интернета).
Запуск, остановка и обновление¶
Для управления службами используются следующие команды:
Управление прокси-сервером Nginx¶
- Запуск/Перезапуск: (Выполнять из каталога
/root/nginx)
Управление контейнерами Restyaboard¶
-
Запуск приложения:
-
Остановка приложения:
-
Перезапуск приложения:
-
Запуск базы данных:
-
Остановка базы данных:
-
Обновление образов:
(После загрузки контейнеры необходимо остановить и перезапустить для применения обновлений).