Перейти к содержанию

Обзор развертывания 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. Процесс установки включает следующие шаги:

  1. Установка Docker: В системе устанавливаются Docker CE, CLI, containerd.io и плагин Docker Compose.

  2. Создание сети: Создается выделенная сеть Docker с именем restya_net для изоляции контейнеров приложения и базы данных.

  3. Загрузка образов: Загружаются следующие образы Docker:

    • postgres:15

    • restyaplatform/restyaboard:v1.7.1

  4. Инициализация базы данных:

    • Запускается контейнер PostgreSQL с именем restya_db.

    • Создается роль базы данных с именем restya с заданным паролем.

    • Создается база данных с именем restyaboard, владельцем которой является роль restya.

    • Если схема базы данных пуста, файл SQL-схемы извлекается из контейнера приложения и применяется к базе данных.

  5. Запуск приложения:

    • Запускается контейнер 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

  • Запуск/Перезапуск:
    docker compose -p certproxy up -d nginx
    
    (Выполнять из каталога /root/nginx)

Управление контейнерами Restyaboard

  • Запуск приложения:

    docker start restya_app
    

  • Остановка приложения:

    docker stop restya_app
    

  • Перезапуск приложения:

    docker restart restya_app
    

  • Запуск базы данных:

    docker start restya_db
    

  • Остановка базы данных:

    docker stop restya_db
    

  • Обновление образов:

    docker pull postgres:15
    docker pull restyaplatform/restyaboard:v1.7.1
    
    (После загрузки контейнеры необходимо остановить и перезапустить для применения обновлений).

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×