Florian f2ffe394ad Unified log levels
- Logger doesn't start with log level DEBUG by default, instead reads a environment variable
- Secret handler raises exceptions instead of using the module os to exit
- Added extensive debug logging
- Notifications: Added timestamp and category
2025-10-18 20:59:50 +02:00

90 lines
2.2 KiB
Markdown

# Docker Repository Query Service
A FastAPI-based service that monitors Docker repositories (Docker Hub and GitHub Container Registry) for new image versions and sends notifications when updates are detected.
## Features
- **Multi-Registry Support**: Queries both Docker Hub and GitHub Container Registry (GHCR)
- **Version Tracking**: Maintains local state of latest known versions in MySQL
- **Automatic Notifications**: Sends alerts when new versions are detected
- **Prometheus Metrics**: Built-in request monitoring
- **Scheduled Queries**: Designed to be called by external schedulers (cron, Kubernetes CronJob, etc.)
## Use Case
This service is ideal for:
- Monitoring self-hosted applications for updates
- Automating update notifications for Docker-based infrastructure
- Tracking specific image tags across different registries
## Prerequisites
- Python 3.8+
- MySQL database
- Required Python packages (see Installation)
## Installation
```bash
pip install -r requirements.txt
```
## Running the Application
```bash
python main.py
```
This starts two servers:
- **Main API**: `http://0.0.0.0:5000`
- **Metrics Server**: `http://0.0.0.0:9000`
## API Endpoints
### Health Check
```
GET /health
```
Returns 200 status code if the service is running.
### Check Suwayomi Updates
```
GET /suwayomi
```
Queries GitHub Container Registry for the latest stable version of Suwayomi/Tachidesk.
**Response:**
- `200 OK`: New version detected and notification sent
- `204 No Content`: No new version available
- `500 Internal Server Error`: Query or database error
**Registry:** GitHub Container Registry (ghcr.io)
**Repository:** Suwayomi/tachidesk
**Tag:** stable
### Check Pi-hole Updates
```
GET /pihole
```
Queries Docker Hub for the latest version of Pi-hole.
**Response:**
- `200 OK`: New version detected and notification sent
- `204 No Content`: No new version available
- `500 Internal Server Error`: Query or database error
**Registry:** Docker Hub
**Repository:** pihole/pihole
**Tag:** latest
## Monitoring
### Prometheus Metrics
Prometheus metrics are exposed on port 9000 and include:
- HTTP request counters by method, path, and status code
- Success/failure rates for version checks
Access metrics at: `http://0.0.0.0:9000/metrics`