Обзор развертывания 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 -
Команда:
-
Создание роли: Внутри контейнера создается выделенная роль базы данных
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 -
Команда развертывания:
-
Путь к конфигурации:
/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-certbotCERTBOT_EMAIL=hkadm@hostkey.com. Сертификаты хранятся в томеnginx_secrets, смонтированном в/etc/letsencrypt.
Доступные порты для подключения¶
Следующие порты используются для внутренней и внешней связи:
-
443: Входящий HTTPS-трафик (Общедоступный доступ через Nginx). -
80: HTTP-трафик (Используется для продления SSL-сертификатов и перенаправления). -
8080: Внутренний трафик приложения (Привязан к127.0.0.1, доступен только локально). -
5432: Порт базы данных PostgreSQL (Доступен только внутри сети Dockerrestya_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>, чтобы применить изменения.