diff --git a/OPENCODE.md b/OPENCODE.md index 27c58a8..e2dab75 100644 --- a/OPENCODE.md +++ b/OPENCODE.md @@ -13,25 +13,31 @@ This is a Telegram bot for managing sticker packs. Built with python-telegram-bo - **Video Processing**: FFmpeg for GIF to WebM conversion - **Background Removal**: rembg (local) + remove.bg API (optional) - **Container**: Docker + Docker Compose +- **Base Image**: python:3.11-slim (Debian-based for better compatibility) - **Environment**: python-dotenv for configuration -### Project Structure -``` -stickerbot/ -├── bot.py # Main bot with ConversationHandler -├── config.py # Configuration and environment loading -├── database.py # SQLite database operations -├── sticker_manager.py # Sticker management utilities -├── image_processor.py # Automatic image conversion -├── gif_processor.py # GIF to WebM conversion -├── background_remover.py # Background removal (local + API) -├── requirements.txt # Python dependencies -├── Dockerfile # Docker image configuration -├── docker-compose.yml # Docker Compose configuration -├── .env.example # Environment template -└── data/ # Persistent data directory +### Dockerfile Configuration +```dockerfile +FROM python:3.11-slim + +# System dependencies for OpenCV, FFmpeg and rembg +RUN apt-get update && apt-get install -y --no-install-recommends \ + ffmpeg \ + libgl1 \ + libglib2.0-0 \ + libsm6 \ + libxext6 \ + libxrender-dev \ + libgomp1 \ + && rm -rf /var/lib/apt/lists/* ``` +**Key points:** +- Uses `python:3.11-slim` (Debian-based) instead of Alpine for better Python package compatibility +- Includes OpenCV dependencies: `libgl1`, `libglib2.0-0`, `libsm6`, `libxext6`, `libxrender-dev` +- Includes `libgomp1` for OpenMP support (required by numba/llvmlite) +- Non-root user for security + ### Database Schema - **sticker_sets**: Tracks created sticker sets (user_id, set_name, set_title, timestamps) - **user_premium**: Caches user premium status with last check timestamp @@ -321,9 +327,21 @@ sudo docker-compose up -d --build --force-recreate 5. **API limit reached**: Check current usage with `/hilfe` or in database 6. **Background removal slow**: First run downloads ML model (~180MB) 7. **GIF conversion fails**: Ensure GIF is under 10MB before upload +8. **Docker build fails with Alpine**: We use `python:3.11-slim` (Debian) instead of Alpine because rembg requires compilation tools that don't work well with Alpine's musl libc ## Troubleshooting +### Docker Build Issues +If the Docker build fails with package errors: +```bash +# The Dockerfile uses Debian-based python:3.11-slim +# NOT Alpine - this is intentional for better Python package compatibility + +# Check Dockerfile has correct base image: +grep "FROM" Dockerfile +# Should show: FROM python:3.11-slim +``` + ### Bot not responding ```bash # Check if container is running @@ -344,3 +362,59 @@ sudo docker-compose restart - Verify REMOVE_BG_API_KEY is correct - Check API usage in database: `sqlite3 data/sticker_bot.db "SELECT * FROM api_usage;"` - API automatically falls back to local processing on errors + +## CI/CD with Gitea Actions + +The project includes automated Docker builds via Gitea Actions. + +### Workflow Files + +**`.gitea/workflows/docker-autobuild.yaml`** - Automatic builds on push +- Triggers on push to `main` or `master` branch +- Builds and pushes to local registry: `192.168.88.201:5000` +- Tags: `latest` and `v{run_number}-autobuild` +- Features: + - Path ignores for markdown/docs changes + - Docker Buildx with layer caching + - Automatic cleanup after build + +**`.gitea/workflows/docker-build.yaml`** - Manual builds +- Triggered manually via Gitea web interface +- Options: + - Custom version tag (e.g., `1.0.0`, `v1.0.0`) + - Additional tags (comma-separated, e.g., `stable,production`) + - Toggle `latest` tag +- Features: + - Flexible versioning + - Multiple tag support + - Docker layer caching + +### Required Secrets + +Configure these in Gitea repository settings: +- `REGISTRY_USERNAME` - Username for Docker registry +- `REGISTRY_PASSWORD` - Password for Docker registry + +### Registry Configuration + +Default registry: `192.168.88.201:5000` + +To change the registry, edit both workflow files: +```yaml +REGISTRY="your-registry:port" +``` + +## Version History + +See git log for detailed commit history: +```bash +git log --oneline +``` + +Current features: +- ✅ Telegram Sticker Bot with full management capabilities +- ✅ Automatic image optimization (WebP conversion) +- ✅ GIF to Video Sticker conversion +- ✅ Background removal (local + API) +- ✅ Existing sticker set import +- ✅ Gitea Actions CI/CD