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

350 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 Настройка GitHub Actions и Автодеплоя
## 📋 Содержание
1. [Создание репозитория](#создание-репозитория)
2. [Настройка Secrets](#настройка-secrets)
3. [Настройка VPS](#настройка-vps)
4. [Первый деплой](#первый-деплой)
5. [Автоматический деплой](#автоматический-деплой)
---
## Создание репозитория
### 1. Инициализация Git
```bash
# В корне проекта
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
```bash
# Создайте репозиторий на 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 ключа
На вашем локальном компьютере:
```bash
# Сгенерируйте ключ (без пароля для 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. Быстрая настройка (автоматическая)
```bash
# На VPS выполните:
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/nanaxe-crm/main/server/scripts/setup-vps.sh | bash
```
### 2. Ручная настройка
```bash
# Скопируйте скрипт на 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. Локально настройте окружение
```bash
cd server
cp .env.example .env
# Отредактируйте .env
```
### 2. Запушьте на GitHub
```bash
git add .
git commit -m "Add server deployment configuration"
git push origin main
```
### 3. Запустите GitHub Actions
Перейдите в **Actions** вкладку на GitHub и запустите workflow вручную или дождитесь автоматического запуска.
### 4. Проверьте деплой
```bash
# На 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
### Проверка статуса
```bash
# На 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
```
---
## 🔧 Полезные команды
### Ручной деплой
```bash
# На VPS
cd /opt/nanaxe-server/server
bash scripts/deploy.sh
```
### Откат (Rollback)
```bash
# Через 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
```
### Обновление
```bash
# Локально
git pull origin main
# Внесите изменения
git add . && git commit -m "Update" && git push
# GitHub Actions автоматически задеплоит
```
### Мониторинг
```bash
# Статус сервисов
docker compose -f docker-compose.prod.yml ps
# Использование ресурсов
docker stats
# Логи в реальном времени
docker compose -f docker-compose.prod.yml logs -f --tail=100
```
---
## 🐛 Устранение неполадок
### Проблема: Деплой не запускается
```bash
# Проверьте GitHub Actions logs
# Actions → Deploy Nanaxe Server → Последний run
```
### Проблема: SSH подключение не работает
```bash
# На VPS проверьте ключ
cat ~/.ssh/authorized_keys
# Проверьте права
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
### Проблема: Контейнеры не стартуют
```bash
# На 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
```bash
# Проверьте 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 проверяют работоспособность
Ваш сервер всегда будет актуальным! 🚀