mnemo_cards/tools/deploy/README.md

80 lines
2.4 KiB
Markdown
Raw Normal View History

2025-11-16 13:54:50 +00:00
# Deploy Scripts
Скрипты для развертывания компонентов проекта на сервера.
## Структура
```
deploy/
├── backend-build_app.sh # Сборка и деплой backend
└── web-app/ # Скрипты деплоя веб приложения
├── config.sh # Конфигурация деплоя
├── deploy.sh # Основной скрипт деплоя
├── nginx.conf # Nginx конфигурация
└── setup-*.sh # Дополнительные setup скрипты
```
## Использование
### Backend
```bash
# Сборка и деплой backend на сервер
./backend-build_app.sh
```
### Web App
```bash
# Переход в директорию web-app
cd web-app
# Деплой веб приложения
./deploy.sh
```
## Конфигурация
### Переменные окружения
Основные настройки в `web-app/config.sh`:
- `SERVER_IP` - IP сервера (147.45.152.129)
- `DOMAIN` - домен веб приложения (memo-cards.online)
- `API_BASE_URL` - URL API (https://api.memo-cards.online:8081)
### SSH доступ
Необходим SSH ключ для доступа к серверу. Ключ должен быть добавлен:
1. В Forgejo secrets: `DEPLOY_SSH_PRIVATE_KEY`
2. На сервере в `~/.ssh/authorized_keys`
## Процесс деплоя
### Backend
1. Компиляция Dart кода в бинарный файл
2. Копирование на сервер
3. Обновление systemd сервиса
4. Перезапуск сервиса
5. Получение SSL сертификата (Let's Encrypt)
### Web App
1. Сборка Flutter Web приложения
2. Копирование файлов на сервер (rsync)
3. Обновление Nginx конфигурации
4. Перезапуск Nginx
5. Получение SSL сертификата (Let's Encrypt)
## SSL сертификаты
Автоматически получаются сертификаты Let's Encrypt для:
- `memo-cards.online` (web app)
- `api.memo-cards.online` (backend API)
## Безопасность
- Используется SSH ключ для аутентификации
- Nginx конфигурация включает security headers
- CORS правильно настроен между доменами