mnemo_cards/tools/deploy
2025-11-20 21:41:09 +03:00
..
backend api 2025-11-19 23:10:22 +03:00
web-app mnemo 2025-11-20 01:40:56 +03:00
backend-build_app.sh port 2025-11-20 21:41:09 +03:00
backend-build_app_webroot.sh port 2025-11-20 21:41:09 +03:00
BACKEND_FIX_REPORT_2025-11-19.md backend fix 2025-11-19 22:59:53 +03:00
BUILD_SCRIPTS_FIXED.md backend fix 2025-11-19 22:59:53 +03:00
check-nginx.sh tools 2025-11-19 22:32:48 +03:00
deploy-vscode-nginx.sh tools 2025-11-19 22:32:48 +03:00
find-code-domain-conflicts.sh tools 2025-11-19 22:32:48 +03:00
fix-backend-port-conflict.sh api 2025-11-19 23:10:22 +03:00
fix-code-domain-conflict.sh tools 2025-11-19 22:32:48 +03:00
fix-git-permissions.sh stuff 2025-11-19 21:13:33 +03:00
fix-nginx-duplicates.sh tools 2025-11-19 22:32:48 +03:00
fix-nginx-upload-limit.sh stuff 2025-11-19 21:13:33 +03:00
fix-vscode-server.sh tools 2025-11-19 22:32:48 +03:00
install-forgejo-runner.sh jq 2025-11-19 22:16:01 +03:00
README.md mnemo 2025-11-20 01:40:56 +03:00
RECOVERY_REPORT_2025-11-19.md backend fix 2025-11-19 22:59:53 +03:00
setup-forgejo-actions.sh Fix backend: Register Isar in GetIt, remove broken lib download 2025-11-19 22:03:20 +03:00
test-vscode-final.sh tools 2025-11-19 22:32:48 +03:00
test-vscode-from-server.sh tools 2025-11-19 22:32:48 +03:00
VSCODE_SERVER_SETUP.md backend fix 2025-11-19 22:59:53 +03:00

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

# Сборка и деплой backend на сервер
./backend-build_app.sh

⚠️ Важно: Backend использует порт 8081 (не 8443, который используется VSCode Server)

Если после сборки backend не запускается:

./fix-backend-port-conflict.sh

Web App

# Переход в директорию web-app
cd web-app

# Деплой веб приложения
./deploy.sh

VSCode Server

# Восстановление VSCode Server после перезагрузки сервера
./fix-vscode-server.sh

# Деплой nginx конфигурации VSCode
./deploy-vscode-nginx.sh

# Тестирование доступности
./test-vscode-final.sh

Доступ:

📖 Подробная документация: 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 правильно настроен между доменами