Обзор развертывания Strapi на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие условия:
-
Операционная система: Ubuntu.
-
Права доступа: пользователь с правами
root. -
Сетевые настройки: наличие доменного имени и открытые порты для HTTP/HTTPS трафика.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к административной панели используется следующий шаблон домена:
| Параметр | Значение |
|---|---|
| Префикс | strapi |
| Домен | hostkey.in |
| Полный шаблон | strapi{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В системе используются следующие директории для хранения данных и конфигураций:
-
/opt/strapi— основная рабочая директория приложения (том Docker). -
/var/lib/postgresql/data— данные базы данных PostgreSQL. -
/root/nginx— конфигурационные файлы прокси-сервера Nginx. -
/data/nginx/user_conf.d— пользовательские настройки Nginx. -
/data/nginx/nginx-certbot.env— переменные окружения для SSL.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка окружения: создание необходимых директорий и сетевой среды Docker.
-
Создание тома для данных приложения по пути
/opt/strapi. -
Развертывание базы данных PostgreSQL.
-
Загрузка образа
vshadbolt/strapi:latestиз реестра контейнеров. -
Настройка прокси-сервера Nginx с поддержкой SSL через Certbot для обеспечения безопасного соединения.
Права доступа и безопасность¶
-
Для директории данных приложения (
/opt/strapi) установлены права владельца1000:1000с режимом доступа0755. -
Конфигурационные файлы Nginx в директории
/root/nginxимеют владельцаrootи режим доступа0644. -
Приложение работает внутри изолированной Docker-сети
strapi_network.
Базы данных¶
В качестве системы управления базами данных используется PostgreSQL.
| Параметр | Значение |
|---|---|
| Имя базы данных | strapi |
| Пользователь | strapi_user |
| Хост | strapi-db (внутри сети Docker) |
| Порт | 5432 |
Данные хранятся в постоянном томе /var/lib/postgresql/data.
Контейнеры Docker и их запуск¶
Приложение состоит из двух основных контейнеров:
База данных (PostgreSQL)¶
-
Имя образа:
postgres:15 -
Имя контейнера:
strapi-db -
Порты:
5432:5432 -
Сеть:
strapi_network -
Политика перезапуска: всегда (
always) -
Переменные окружения: настройки имени базы, пользователя и пароля.
Приложение (Strapi)¶
-
Имя образа:
vshadbolt/strapi:latest -
Имя контейнера:
strapi -
Порты:
1337:1337 -
Сеть:
strapi_network -
Политика перезапуска: всегда (
always) -
Тома:
/opt/strapi:/srv/app -
Переменные окружения:
-
NODE_ENV:production -
Настройки подключения к базе данных (хост, порт, имя БД, пользователь, пароль).
-
Автоматически генерируемые секретные ключи (
APP_KEYS,ADMIN_JWT_SECRET,JWT_SECRET,API_TOKEN_SALT,TRANSFER_TOKEN_SALT).
Прокси-сервер (Nginx + Certbot)¶
Контейнер используется исключительно для управления SSL-сертификатами и проксирования трафика.
-
Имя образа:
jonasal/nginx-certbot:latest -
Сеть:
host -
Тома:
-
nginx_secrets:/etc/letsencrypt(для хранения сертификатов) -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d(конфигурации сайта)
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
(Команда выполняется в директории, где расположен файл конфигурации Nginx/Compose).