# 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 записей