- Fix RGBA→JPEG error: convert all images to RGB before saving - Upload tracker: per-person breakdown in JSON, reset_person(), get_person_summary() - mark_rejected() only fires on face-detection failures (not all HTTP 400s) - New env vars: DRY_RUN, RETRY_REJECTED, RESET_PERSON - Tracker summary printed at startup showing uploaded/rejected counts per person - Document new env vars in compose.yml Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
46 lines
1.5 KiB
YAML
46 lines
1.5 KiB
YAML
services:
|
|
if-curator:
|
|
image: ghcr.io/sudolulo/if-curator-headless:latest
|
|
container_name: if-curator
|
|
environment:
|
|
- IMMICH_URL=${IMMICH_URL}
|
|
- API_KEY=${API_KEY}
|
|
- AUTO_MODE=true
|
|
- FRIGATE_URL=${FRIGATE_URL}
|
|
- TRAINING_MODE=face
|
|
- STRATEGY=auto
|
|
- FORCE_CPU=false
|
|
- ENABLE_CACHE=true
|
|
- CACHE_DIR=/app/.if_cache
|
|
- HF_HOME=/models/huggingface
|
|
- INSIGHTFACE_HOME=/models
|
|
# - ONLY_PEOPLE=John,Jane
|
|
# - SKIP_PEOPLE=Unknown
|
|
# - MIN_FACE_COUNT=5
|
|
|
|
# ── Tracker overrides (one-shot, remove after use) ──
|
|
# - DRY_RUN=true # Preview selection without downloading/uploading
|
|
# - RETRY_REJECTED=true # Re-attempt previously rejected images
|
|
# - RESET_PERSON=John # Clear uploaded+rejected history for one person
|
|
|
|
# ── Scheduling ──
|
|
# Cron expression (unset = run once and exit)
|
|
- CRON_SCHEDULE=0 3 * * 0 # Every Sunday at 3 AM
|
|
# - CRON_SCHEDULE=0 3 1 * * # 1st of every month at 3 AM
|
|
# - CRON_SCHEDULE=*/30 * * * * # Every 30 minutes (testing)
|
|
volumes:
|
|
- /mnt/<pool>/if-curator/models:/models
|
|
- /mnt/<pool>/if-curator/embeddings:/app/.if_cache
|
|
- /mnt/<pool>/if-curator/output:/app/output
|
|
stdin_open: true
|
|
tty: true
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: all
|
|
capabilities: [gpu]
|
|
|