f1e0f6b5ef
- Add complete server infrastructure with Gitea, API, PostgreSQL - Implement Obsidian-compatible markdown mindmap converter - Add Flutter service for server synchronization - Configure GitHub Actions for automated build and deploy - Add production docker-compose with health checks - Include VPS setup and deployment scripts - Add comprehensive deployment documentation
9.1 KiB
9.1 KiB
🚀 Настройка GitHub Actions и Автодеплоя
📋 Содержание
Создание репозитория
1. Инициализация Git
# В корне проекта
cd c:\Users\ormix\StudioProjects\NANAXE
git init
# Добавьте .gitignore
echo "# Flutter/Dart
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/
*.g.dart
*.freezed.dart
# IDE
.idea/
.vscode/
*.iml
*.ipr
*.iws
# Environment
.env
.env.local
# Server
server/node_modules/
server/logs/
server/backups/
*.log
# OS
.DS_Store
Thumbs.db
" > .gitignore
# Первый коммит
git add .
git commit -m "Initial commit: Nanaxe CRM with server"
2. Создание репозитория на GitHub
# Создайте репозиторий на GitHub (через веб-интерфейс)
# Затем:
git remote add origin https://github.com/YOUR_USERNAME/nanaxe-crm.git
git branch -M main
git push -u origin main
Настройка Secrets
Перейдите в Settings → Secrets and variables → Actions и добавьте:
Обязательные Secrets
| Secret Name | Description | Example |
|---|---|---|
VPS_HOST |
IP или домен VPS | 203.0.113.1 или nanaxe.example.com |
VPS_USER |
SSH пользователь | root или deploy |
VPS_SSH_KEY |
Приватный SSH ключ | Содержимое ~/.ssh/id_rsa |
DEPLOY_PATH |
Путь на сервере | /opt/nanaxe-server |
Опциональные Secrets
| Secret Name | Description |
|---|---|
GITEA_DOMAIN |
Домен для Gitea |
GITEA_TOKEN |
API токен Gitea |
JWT_SECRET |
Секретный ключ JWT |
POSTGRES_PASSWORD |
Пароль PostgreSQL |
WEBDAV_USER |
WebDAV пользователь |
WEBDAV_PASSWORD |
WebDAV пароль |
Генерация SSH ключа
На вашем локальном компьютере:
# Сгенерируйте ключ (без пароля для CI/CD)
ssh-keygen -t ed25519 -C "github-actions" -f ~/.ssh/nanaxe_deploy
# Добавьте публичный ключ на VPS
ssh-copy-id -i ~/.ssh/nanaxe_deploy.pub root@YOUR_VPS_IP
# Скопируйте приватный ключ для GitHub
cat ~/.ssh/nanaxe_deploy
# Скопируйте вывод в секрет VPS_SSH_KEY
Настройка VPS
1. Быстрая настройка (автоматическая)
# На VPS выполните:
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/nanaxe-crm/main/server/scripts/setup-vps.sh | bash
2. Ручная настройка
# Скопируйте скрипт на VPS
scp server/scripts/setup-vps.sh root@YOUR_VPS_IP:/tmp/
# Выполните
ssh root@YOUR_VPS_IP
chmod +x /tmp/setup-vps.sh
/tmp/setup-vps.sh
3. Что делает скрипт
- ✅ Обновляет систему
- ✅ Устанавливает Docker и Docker Compose
- ✅ Настраивает UFW firewall
- ✅ Устанавливает Fail2Ban
- ✅ Создаёт директорию деплоя
- ✅ Настраивает SSL (Let's Encrypt)
- ✅ Создаёт systemd сервис
- ✅ Генерирует секреты
Первый деплой
1. Локально настройте окружение
cd server
cp .env.example .env
# Отредактируйте .env
2. Запушьте на GitHub
git add .
git commit -m "Add server deployment configuration"
git push origin main
3. Запустите GitHub Actions
Перейдите в Actions вкладку на GitHub и запустите workflow вручную или дождитесь автоматического запуска.
4. Проверьте деплой
# На VPS
ssh root@YOUR_VPS_IP
cd /opt/nanaxe-server/server
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f
Автоматический деплой
Как это работает
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Push to │────→│ GitHub │────→│ Build & │
│ main │ │ Actions │ │ Push │
└─────────────┘ └─────────────┘ │ Docker │
│ Image │
└──────┬──────┘
│
▼
┌─────────────┐
│ Deploy │
│ to VPS │
└──────┬──────┘
│
▼
┌─────────────┐
│ Health │
│ Check │
└─────────────┘
Триггеры деплоя
Автодеплой запускается при:
- Push в
mainилиmasterветку - Merge Pull Request
- Ручной запуск через GitHub UI
Проверка статуса
# На VPS
docker compose -f docker-compose.prod.yml ps
# Логи API
docker compose -f docker-compose.prod.yml logs api -f
# Логи Gitea
docker compose -f docker-compose.prod.yml logs gitea -f
🔧 Полезные команды
Ручной деплой
# На VPS
cd /opt/nanaxe-server/server
bash scripts/deploy.sh
Откат (Rollback)
# Через GitHub Actions
# Actions → Deploy Nanaxe Server → Run workflow → Use workflow from: main
# Выберите "Rollback" (если добавлено) или вручную:
# На VPS
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d
Обновление
# Локально
git pull origin main
# Внесите изменения
git add . && git commit -m "Update" && git push
# GitHub Actions автоматически задеплоит
Мониторинг
# Статус сервисов
docker compose -f docker-compose.prod.yml ps
# Использование ресурсов
docker stats
# Логи в реальном времени
docker compose -f docker-compose.prod.yml logs -f --tail=100
🐛 Устранение неполадок
Проблема: Деплой не запускается
# Проверьте GitHub Actions logs
# Actions → Deploy Nanaxe Server → Последний run
Проблема: SSH подключение не работает
# На VPS проверьте ключ
cat ~/.ssh/authorized_keys
# Проверьте права
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Проблема: Контейнеры не стартуют
# На VPS
cd /opt/nanaxe-server/server
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.prod.yml logs
Проблема: Health check failed
# Проверьте API
curl http://localhost:8080/health
# Проверьте Gitea
curl http://localhost:3000/api/healthz
📊 Workflow файлы
Основной деплой: .github/workflows/deploy.yml
- Собирает Docker образ
- Публикует в GitHub Container Registry
- Деплоит на VPS
- Запускает health checks
- Поддерживает rollback
PR Checks: .github/workflows/pr-check.yml
- Запускается на Pull Request
- Проверяет код
- Тестирует сборку Docker
- Сканирует уязвимости
- Валидирует docker-compose
🎉 Готово!
Теперь при каждом push в main:
- ✅ Код автоматически тестируется
- ✅ Docker образ собирается
- ✅ Образ публикуется в GitHub Container Registry
- ✅ VPS автоматически обновляется
- ✅ Health checks проверяют работоспособность
Ваш сервер всегда будет актуальным! 🚀