mikrotik-bot/infra/README.md

191 lines
5.8 KiB
Markdown
Raw Permalink 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.

# CI/CD Infrastructure for MikroTik Telegram Bot
Полноценная CI/CD инфраструктура на базе Proxmox для автоматического развертывания MikroTik Telegram Bot.
## 🏗️ Архитектура
```
Developer → Gitea → Actions → Registry → Watchtower → Production
```
### Компоненты:
- **Git Server (10.10.0.10)**: Gitea + PostgreSQL + Actions Runner
- **Registry (10.10.0.20)**: Docker Registry + UI + Watchtower
- **Production (10.10.0.30)**: Portainer + MikroTik Bot + Watchtower
## 🚀 Быстрый старт
### 1. Развертывание инфраструктуры
```bash
cd infra/
chmod +x *.sh
./deploy-all.sh
```
### 2. Первичная настройка
#### Gitea (http://10.10.0.10:3000)
1. Создать админ аккаунт
2. Создать репозиторий `mikrotik-bot`
3. Получить Actions runner token:
- Site Administration → Actions → Runners
- Generate token
4. Обновить токен в контейнере:
```bash
pct exec 100 -- bash -c "cd /opt/gitea && echo 'RUNNER_TOKEN=your_token' > .env"
pct exec 100 -- docker-compose restart runner
```
#### Portainer (http://10.10.0.30:9000)
1. Создать админ аккаунт
2. Настроить webhook для автодеплоя
3. Обновить bot.env с реальными данными
### 3. Настройка проекта
```bash
git clone http://10.10.0.10:3000/your-user/mikrotik-bot.git
cd mikrotik-bot
cp -r .gitea/ ./ # скопировать workflow файлы
git add .
git commit -m "Add CI/CD pipeline"
git push origin main
```
## 📁 Структура файлов
```
infra/
├── setup-lxc.sh # Создание LXC контейнеров
├── deploy-all.sh # Полное развертывание
├── gitea-compose.yml # Git сервер
├── registry-compose.yml # Docker Registry
├── production-compose.yml # Production окружение
└── README.md # Эта инструкция
.gitea/workflows/
└── deploy.yml # CI/CD pipeline
```
## 🔄 Workflow процесс
1. **Push** в main ветку
2. **Gitea Actions** запускает pipeline
3. **Build** Docker образа
4. **Push** в private registry
5. **Watchtower** обнаруживает новый образ
6. **Auto-deploy** в production
## 🛠️ Ручное управление
### Просмотр логов
```bash
# Gitea logs
pct exec 100 -- docker logs gitea
# Registry logs
pct exec 101 -- docker logs docker-registry
# Bot logs
pct exec 102 -- docker logs mikrotik-telegram-bot
```
### Перезапуск сервисов
```bash
# Restart Git server
pct exec 100 -- bash -c "cd /opt/gitea && docker-compose restart"
# Restart Registry
pct exec 101 -- bash -c "cd /opt/registry && docker-compose restart"
# Restart Production
pct exec 102 -- bash -c "cd /opt/production && docker-compose restart"
```
### Обновление конфигурации бота
```bash
pct exec 102 -- nano /opt/production/bot.env
pct exec 102 -- bash -c "cd /opt/production && docker-compose restart mikrotik-bot"
```
## 🔍 Мониторинг
### Проверка статуса
- Git Server: http://10.10.0.10:3000
- Registry UI: http://10.10.0.20:5001
- Portainer: http://10.10.0.30:9000
- Bot Health: http://10.10.0.30:8000/health
### Health checks
```bash
curl http://10.10.0.10:3000/api/v1/version
curl http://10.10.0.20:5000/v2/_catalog
curl http://10.10.0.30:9000/api/status
curl http://10.10.0.30:8000/health
```
## 🔧 Troubleshooting
### Проблемы с registry
```bash
# Проверить конфигурацию insecure registry
pct exec 101 -- cat /etc/docker/daemon.json
pct exec 102 -- cat /etc/docker/daemon.json
# Перезапуск Docker
pct exec 101 -- systemctl restart docker
pct exec 102 -- systemctl restart docker
```
### Проблемы с Actions Runner
```bash
# Проверить статус runner
pct exec 100 -- docker logs gitea-runner
# Перегенерировать токен в Gitea UI
# Обновить .env файл
pct exec 100 -- bash -c "cd /opt/gitea && docker-compose restart runner"
```
### Проблемы с автодеплоем
```bash
# Проверить Watchtower logs
pct exec 102 -- docker logs watchtower-production
# Ручной pull и restart
pct exec 102 -- bash -c "cd /opt/production && docker-compose pull mikrotik-bot && docker-compose up -d mikrotik-bot"
```
## 🔒 Безопасность
- Все сервисы работают в изолированной сети 10.10.0.0/24
- Registry настроен как insecure только для локальной сети
- Рекомендуется настроить VPN для внешнего доступа
- Регулярные снапшоты контейнеров в Proxmox
## 📈 Расширения
### Добавление HTTPS
1. Получить SSL сертификаты
2. Настроить Nginx reverse proxy
3. Обновить конфигурации сервисов
### Мониторинг с Prometheus/Grafana
1. Добавить в registry-compose.yml:
```yaml
prometheus:
image: prom/prometheus
grafana:
image: grafana/grafana
```
### Backup стратегия
1. Автоматические снапшоты LXC
2. Backup Docker volumes
3. Export Gitea repositories
## 🆘 Поддержка
При проблемах:
1. Проверить статус всех контейнеров
2. Просмотреть логи соответствующих сервисов
3. Убедиться в корректности сетевых настроек
4. Проверить доступность портов и DNS записей