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

Обзор развертывания Restyaboard на сервере

Предварительные требования и базовые условия

Для развертывания требуется среда Linux на базе Ubuntu с правами root. Должны присутствовать или быть установлены следующие компоненты:

  • Операционная система: Ubuntu (совместима с менеджером пакетов apt).

  • Права доступа: Привилегии root или права sudo для управления сервисами Docker и системными директориями.

  • Сеть: Сервер должен иметь доступ в интернет для загрузки образов контейнеров из Docker Hub.

  • Порты:

    • Порт 443 (HTTPS) для внешнего доступа.

    • Порт 80 (HTTP) для валидации SSL-сертификата через Certbot.

    • Порт 8080 (Внутренний) для локального взаимодействия приложений.

URL доступа к приложению

Экземпляр Restyaboard доступен через следующий формат полностью квалифицированного доменного имени (FQDN):

  • Формат URL: restyaboard<Server ID>.hostkey.in:443

    • Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.

    • Приложение использует HTTPS (порт 443) в качестве внешнего интерфейса.

Структура файлов и директорий

Данные приложения и файлы конфигурации организованы в следующей структуре директорий на хост-системе:

  • Данные приложения:

    • /opt/restyaboard/postgres: Постоянное хранилище для файлов базы данных PostgreSQL.

    • /opt/restyaboard/uploads: Директория хранилища для файлов, загруженных пользователями.

  • Конфигурация прокси:

    • /root/nginx: Директория, содержащая файлы Docker Compose для прокси Nginx.

    • /data/nginx/user_conf.d: Директория, содержащая пользовательские файлы конфигурации Nginx, включая restyaboard<Server ID>.hostkey.in.conf.

  • SSL-сертификаты:

    • /etc/letsencrypt: Внешний том, смонтированный для хранения SSL-сертификатов Let's Encrypt (управляется томом nginx-secrets).

Процесс установки приложения

Приложение Restyaboard развертывается с использованием контейнеров Docker. Процесс включает настройку базы данных PostgreSQL, создание выделенной сети и запуск контейнера приложения.

  • Версия программного обеспечения: Развертывание использует restyaplatform/restyaboard:v1.7.1.

  • Движок базы данных: PostgreSQL версии 15 (postgres:15).

  • Метод развертывания: Ручное выполнение команд Docker для загрузки образов и запуска контейнеров с определенными переменными окружения и маппингом томов.

Контейнеры Docker и их развертывание

Архитектура состоит из двух основных контейнеров и выделенной сети Docker.

Конфигурация сети

  • Имя сети: restya_net

  • Назначение: Изолированная связь между контейнерами приложения и базы данных.

Контейнер базы данных

  • Имя: restya_db

  • Образ: postgres:15

  • Команда:

    docker run -d \
      --name restya_db \
      --network restya_net \
      -e POSTGRES_USER=postgres \
      -e POSTGRES_PASSWORD=<generated_password> \
      -e POSTGRES_DB=restyaboard \
      -v /opt/restyaboard/postgres:/var/lib/postgresql/data \
      --restart unless-stopped \
      postgres:15
    

  • Создание роли: Внутри контейнера создается выделенная роль базы данных restya с правами входа.

Контейнер приложения

  • Имя: restya_app

  • Образ: restyaplatform/restyaboard:v1.7.1

  • Команда:

    docker run -d \
      --name restya_app \
      --network restya_net \
      -e POSTGRES_HOST=restya_db \
      -e POSTGRES_PORT=5432 \
      -e POSTGRES_ADMIN_USER=postgres \
      -e POSTGRES_ADMIN_PASS=<generated_password> \
      -e RESTYA_DB_USERNAME=restya \
      -e RESTYA_DB_USERPASS=<generated_password> \
      -e RESTYA_DB=restyaboard \
      -p 127.0.0.1:8080:80 \
      --restart unless-stopped \
      restyaplatform/restyaboard:v1.7.1
    

Базы данных

Для хранения данных приложение использует базу данных PostgreSQL.

  • Метод подключения: Внутренняя сетевая связь через имя хоста restya_db.

  • Местоположение хранилища: Сохраняется на файловой системе хоста в /opt/restyaboard/postgres.

  • Настройки базы данных: | Параметр | Значение | Описание | | :--- | :--- | :--- | | Имя базы данных | restyaboard | Основная база данных для приложения. | | Пользователь администратора | postgres | Суперпользователь для административных задач. | | Пользователь приложения | restya | Выделенная роль для приложения Restyaboard. | | Порт | 5432 | Внутренний порт PostgreSQL. | | Пароль | <generated_password> | Защищен через переменные Ansible (restya_db_password). |

  • Инициализация схемы: Если таблицы oauth_clients или settings отсутствуют, схема автоматически импортируется из контейнера restya_app с использованием файлов restyaboard_with_empty_data.sql или похожих SQL-файлов, найденных в /var/lib/nginx/html/sql.

Прокси-серверы

Nginx действует как обратный прокси для обработки терминации SSL и маршрутизации трафика к внутреннему приложению.

  • Образ прокси: jonasal/nginx-certbot:latest

  • Имя сервиса: nginx

  • Команда развертывания:

    docker compose -p certproxy up -d nginx
    

  • Путь к конфигурации: /root/nginx/compose.yml

  • Конфигурация пользовательского домена:

    • Прокси передает трафик на внутреннее приложение по адресу http://127.0.0.1:8080.

    • Файл конфигурации: /data/nginx/user_conf.d/restyaboard<Server ID>.hostkey.in.conf.

    • Директива proxy_pass установлена в http://127.0.0.1:8080.

  • SSL/Certbot: Управляется через переменную окружения nginx-certbot CERTBOT_EMAIL=hkadm@hostkey.com. Сертификаты хранятся в томе nginx_secrets, смонтированном в /etc/letsencrypt.

Доступные порты для подключения

Следующие порты используются для внутренней и внешней связи:

  • 443: Входящий HTTPS-трафик (Общедоступный доступ через Nginx).

  • 80: HTTP-трафик (Используется для продления SSL-сертификатов и перенаправления).

  • 8080: Внутренний трафик приложения (Привязан к 127.0.0.1, доступен только локально).

  • 5432: Порт базы данных PostgreSQL (Доступен только внутри сети Docker restya_net).

Права доступа и безопасность

  • Межсетевой экран (Firewall): Внешний доступ ограничен портами 80 и 443. Порт 8080 привязан только к интерфейсу локальной петли (127.0.0.1), что предотвращает прямой внешний доступ к контейнеру приложения.

  • Права на файлы:

    • /opt/restyaboard/postgres: 0755 (чтение/запись владельцем, чтение другими).

    • /opt/restyaboard/uploads: 0755.

    • /root/nginx: 0755, владелец root:root.

    • /data/nginx/user_conf.d: Файлы конфигурации установлены с правами 0644.

  • Ограничения пользователей: Роль базы данных приложения restya создается с конкретными учетными данными для входа, отличными от суперпользователя postgres.

Запуск, остановка и обновление

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

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

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

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

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

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

Управление прокси

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

  • Остановка прокси: docker compose -p certproxy stop nginx

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

  • Загрузка новых образов:

    • docker pull postgres:15

    • docker pull restyaplatform/restyaboard:v1.7.1

  • Перезапуск контейнеров: После загрузки новых образов перезапустите контейнеры, используя команду docker restart <container_name>, чтобы применить изменения.

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