docs: add deployment guide
This commit is contained in:
102
docs/DEPLOYMENT.md
Normal file
102
docs/DEPLOYMENT.md
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
# Руководство по развертыванию
|
||||||
|
|
||||||
|
## Предварительные требования
|
||||||
|
|
||||||
|
Для запуска платформы вам потребуются:
|
||||||
|
- **Docker** и **Docker Compose**
|
||||||
|
- **Git**
|
||||||
|
- Сгенерированная пара RSA ключей для подписи профилей (private.pem, public.pem)
|
||||||
|
- Доменное имя (для корректной работы SSL и Yggdrasil API)
|
||||||
|
|
||||||
|
## Структура проекта
|
||||||
|
|
||||||
|
Проект использует Git Submodules. После клонирования репозитория необходимо инициализировать подмодули:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone --recursive https://git.mrixs.me/minecraft-platform/platform.git
|
||||||
|
# Или если уже склонировали:
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
## Конфигурация
|
||||||
|
|
||||||
|
### 1. Переменные окружения (.env)
|
||||||
|
|
||||||
|
Создайте файл `.env` в корне проекта на основе примера. Основные переменные:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
APP_DOMAIN=yourdomain.com
|
||||||
|
DATABASE_URL=postgres://user:password@db:5432/platform?sslmode=disable
|
||||||
|
JWT_SECRET_KEY=super_secret_key_change_me
|
||||||
|
CURSEFORGE_API_KEY=your_curseforge_api_key_here
|
||||||
|
RSA_PRIVATE_KEY_PATH=/app/secrets/private_key.pem
|
||||||
|
MODPACKS_STORAGE_PATH=/app/data/modpacks
|
||||||
|
SKINS_STORAGE_PATH=/app/data/skins
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. RSA Ключи
|
||||||
|
|
||||||
|
Сгенерируйте ключи для подписи профилей Yggdrasil:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p secrets
|
||||||
|
openssl genrsa -out secrets/private_key.pem 2048
|
||||||
|
openssl rsa -in secrets/private_key.pem -pubout -out secrets/public_key.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
Файл `private_key.pem` должен быть доступен бэкенду (см. `docker-compose.yml`).
|
||||||
|
|
||||||
|
### 3. База данных
|
||||||
|
|
||||||
|
При первом запуске необходимо применить миграции. Скрипты миграций находятся в `backend/scripts/migrations/`.
|
||||||
|
|
||||||
|
Если вы используете Docker Compose, миграции можно применить вручную или добавить init-контейнер. Для ручного применения (пример с `psql`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Подключение к контейнеру БД
|
||||||
|
docker-compose exec db psql -U user -d platform
|
||||||
|
|
||||||
|
# Внутри psql примените SQL файлы из backend/scripts/migrations/
|
||||||
|
```
|
||||||
|
|
||||||
|
*Примечание: в будущих версиях планируется автоматическая миграция.*
|
||||||
|
|
||||||
|
## Запуск в Docker Compose
|
||||||
|
|
||||||
|
Сборка и запуск всех сервисов:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Сервисы:
|
||||||
|
- **frontend**: Статика и UI (доступен по http://localhost:80 или через Caddy)
|
||||||
|
- **backend**: API сервер (http://backend:8080)
|
||||||
|
- **db**: PostgreSQL
|
||||||
|
- **caddy**: Reverse Proxy (автоматический HTTPS)
|
||||||
|
|
||||||
|
## Настройка Caddy (Reverse Proxy)
|
||||||
|
|
||||||
|
В корне проекта находится `Caddyfile`. Отредактируйте его, указав ваш домен:
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
yourdomain.com {
|
||||||
|
reverse_proxy /api/* backend:8080
|
||||||
|
reverse_proxy /authserver/* backend:8080
|
||||||
|
reverse_proxy /sessionserver/* backend:8080
|
||||||
|
|
||||||
|
# Frontend files
|
||||||
|
root * /srv
|
||||||
|
file_server
|
||||||
|
try_files {path} /index.html
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Обновление
|
||||||
|
|
||||||
|
Для обновления версий (после `git pull`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git submodule update --remote --merge
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user