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

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

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

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется наличие прав суперпользователя (root) для выполнения команд установки и управления контейнерами.

Система должна иметь доступ к интернету для загрузки образов Docker и обновления пакетов. Приложение использует следующие порты: - Порт 8080 для локального доступа к приложению Restyaboard (связь только с 127.0.0.1). - Порты 80 и 443 для внешнего доступа через прокси-сервер Nginx.

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

Данные и конфигурационные файлы приложения размещаются в следующих директориях: - /opt/restyaboard/postgres — хранилище данных базы данных PostgreSQL. - /opt/restyaboard/uploads — хранилище загруженных пользователем файлов. - /root/nginx — каталог с конфигурацией прокси-сервера и файлом compose.yml. - /data/nginx/user_conf.d — каталог с пользовательскими конфигурациями Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для Nginx и Certbot. - /etc/letsencrypt — точка монтирования для сертификатов SSL.

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

Установка выполняется через Docker. Сначала необходимо установить пакетный менеджер Docker CE, CLI, containerd.io и плагин compose. После установки сервис Docker должен быть запущен и настроен на автоматический запуск.

Версии используемых образов: - База данных: postgres:15. - Приложение: restyaplatform/restyaboard:v1.7.1. - Прокси-сервер: jonasal/nginx-certbot:latest.

Базы данных

Приложение использует базу данных PostgreSQL, развернутую в отдельном контейнере restya_db. - Имя базы данных: restyaboard. - Пользователь для подключения приложения: restya. - Пароль для подключения: задается переменной окружения restya_db_password. - Сеть: контейнер базы данных работает в выделенной сети Docker restya_net.

При первом запуске скрипт проверяет наличие таблиц oauth_clients и settings. Если они отсутствуют, схема базы данных импортируется из SQL-файла, найденного внутри контейнера приложения (предпочтительно restyaboard_with_empty_data.sql, иначе restyaboard.sql или postgresql.sql).

Контейнеры Docker и их запуск

Развертывание включает создание выделенной сети Docker и запуск двух основных контейнеров.

Создание сети:

docker network create restya_net

Запуск контейнера базы данных:

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

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

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=<пароль> \
  -e RESTYA_DB_USERNAME=restya \
  -e RESTYA_DB_USERPASS=<пароль> \
  -e RESTYA_DB=restyaboard \
  -p 127.0.0.1:8080:80 \
  --restart unless-stopped \
  restyaplatform/restyaboard:v1.7.1

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

Для внешнего доступа используется прокси-сервер Nginx с поддержкой автоматического получения SSL-сертификатов через Certbot. Контейнер запускается через Docker Compose в проекте certproxy.

Конфигурация прокси находится в файле /root/nginx/compose.yml. Сервис nginx использует образ jonasal/nginx-certbot:latest и работает в режиме network_mode: host.

Настройка маршрутизации трафика осуществляется путем добавления директивы proxy_pass в конфигурационный файл хоста:

/data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf
В блок location / добавляется строка:
proxy_pass http://127.0.0.1:8080;

Запуск прокси-сервера:

docker compose -p certproxy up -d nginx
Команда выполняется из директории /root/nginx.

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

Все каталоги данных создаются с правами владельца root и группы root с режимом доступа 0755. - /opt/restyaboard/postgres - /opt/restyaboard/uploads - /root/nginx

Конфигурационный файл compose.yml имеет права 0644.

Приложение доступно только локально на порту 8080 (127.0.0.1), внешний доступ осуществляется исключительно через прокси-сервер Nginx, который обрабатывает SSL-шифрование.

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

Управление контейнерами осуществляется через стандартные команды Docker.

Проверка статуса контейнера базы данных:

docker inspect -f '{{.State.Running}}' restya_db

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

docker inspect -f '{{.State.Status}}' restya_app

Перезапуск приложения (например, после импорта схемы):

docker restart restya_app

Удаление старых контейнеров перед развертыванием:

docker rm -f restya_app
docker rm -f restya_db

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

docker pull postgres:15
docker pull restyaplatform/restyaboard:v1.7.1

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