# Deploy Scripts Скрипты для развертывания компонентов проекта на сервера. ## Структура ``` deploy/ ├── backend-build_app.sh # Сборка и деплой backend ├── fix-backend-port-conflict.sh # Исправление конфликта портов backend ├── fix-vscode-server.sh # Восстановление VSCode Server после перезагрузки ├── deploy-vscode-nginx.sh # Деплой nginx конфигурации VSCode ├── check-nginx.sh # Проверка статуса nginx ├── test-vscode-final.sh # Тесты доступности VSCode и Forgejo ├── VSCODE_SERVER_SETUP.md # Документация VSCode Server ├── BACKEND_FIX_REPORT_2025-11-19.md # Отчет об исправлении backend ├── BUILD_SCRIPTS_FIXED.md # Исправление скриптов сборки └── web-app/ # Скрипты деплоя веб приложения ├── config.sh # Конфигурация деплоя ├── deploy.sh # Основной скрипт деплоя └── nginx.conf # Nginx конфигурация ``` ## Использование ### Backend ```bash # Сборка и деплой backend на сервер ./backend-build_app.sh ``` ⚠️ **Важно**: Backend использует порт **8081** (не 8443, который используется VSCode Server) Если после сборки backend не запускается: ```bash ./fix-backend-port-conflict.sh ``` ### Web App ```bash # Переход в директорию web-app cd web-app # Деплой веб приложения ./deploy.sh ``` ### VSCode Server ```bash # Восстановление VSCode Server после перезагрузки сервера ./fix-vscode-server.sh # Деплой nginx конфигурации VSCode ./deploy-vscode-nginx.sh # Тестирование доступности ./test-vscode-final.sh ``` **Доступ:** - URL: https://vscode.mnemo-cards.online/ - Password: AGktOidxrah1KVC0 📖 Подробная документация: [VSCODE_SERVER_SETUP.md](./VSCODE_SERVER_SETUP.md) ## Конфигурация ### Переменные окружения Основные настройки в `web-app/config.sh`: - `SERVER_IP` - IP сервера (147.45.152.129) - `DOMAIN` - домен веб приложения (mnemo-cards.online) - `API_BASE_URL` - URL API (https://api.mnemo-cards.online) [nginx:443 → backend: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 для: - `mnemo-cards.online` (web app) - `api.mnemo-cards.online` (backend API) - `vscode.mnemo-cards.online` (VSCode Server) - `code.mnemo-cards.online` (Forgejo Git Server) ## Безопасность - Используется SSH ключ для аутентификации - Nginx конфигурация включает security headers - CORS правильно настроен между доменами