Files
Avtex/GITHUB_SETUP.md
T
Alexyz f1e0f6b5ef feat: Add Nanaxe server with Docker, GitHub Actions CI/CD, and auto-deployment
- 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
2026-04-19 22:18:25 +05:00

9.1 KiB
Raw Blame History

🚀 Настройка GitHub Actions и Автодеплоя

📋 Содержание

  1. Создание репозитория
  2. Настройка Secrets
  3. Настройка VPS
  4. Первый деплой
  5. Автоматический деплой

Создание репозитория

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:

  1. ✅ Код автоматически тестируется
  2. ✅ Docker образ собирается
  3. ✅ Образ публикуется в GitHub Container Registry
  4. ✅ VPS автоматически обновляется
  5. ✅ Health checks проверяют работоспособность

Ваш сервер всегда будет актуальным! 🚀