feat: add Docker and Gitea services, monitoring, queue, and Telegram notification functionalities

- Implemented Docker operations including image building, container management, and resource stats.
- Added Gitea API client for repository management and webhook handling.
- Introduced monitoring service to collect and store container metrics in InfluxDB.
- Created a queue system using BullMQ for managing deployment jobs with real-time log streaming.
- Developed Telegram notification service for deployment status updates.
- Added Traefik label generation for dynamic reverse proxy configuration.
- Implemented WebSocket endpoints for log streaming and terminal access to containers.
- Created an updater sidecar for self-updating the AutoDeployer container.
This commit is contained in:
Giuseppe Raffa
2026-04-13 23:23:18 +02:00
commit 87d698bc5c
48 changed files with 5558 additions and 0 deletions

43
.env.example Normal file
View File

@@ -0,0 +1,43 @@
# ===========================================
# AutoDeployer Configuration
# ===========================================
# JWT secret for authentication (generate with: openssl rand -hex 64)
JWT_SECRET=change-me-to-a-random-64-char-hex-string
# Admin password (will be set on first login via setup wizard)
# Leave empty on first run — the app will prompt you to create it
ADMIN_PASSWORD_HASH=
# Webhook secret for Gitea webhook validation
WEBHOOK_SECRET=change-me-to-a-random-string
# ===========================================
# Gitea Configuration
# ===========================================
GITEA_URL=http://gitea:3000
GITEA_TOKEN=your-gitea-api-token
# ===========================================
# Redis (existing instance on meb-private)
# ===========================================
REDIS_URL=redis://redis:6379/2
# ===========================================
# Telegram Notifications
# ===========================================
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
TELEGRAM_CHAT_ID=your-chat-id
# ===========================================
# InfluxDB (existing instance for monitoring)
# ===========================================
INFLUXDB_URL=http://influxdb:8086
INFLUXDB_TOKEN=your-influxdb-token
INFLUXDB_ORG=autodeployer
INFLUXDB_BUCKET=metrics
# ===========================================
# Domain
# ===========================================
DEPLOY_DOMAIN=deploy.example.com