- executor.py: wipe person output dir before each run so stale crops from previous runs don't accumulate on disk - compose.yml: move inline comment off CRON_SCHEDULE value (croniter would parse the comment text as part of the expression) - compose.yml: add note clarifying <pool> placeholder in volume paths Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.5 KiB
YAML
48 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)
|
|
# Every Sunday at 3 AM:
|
|
- CRON_SCHEDULE=0 3 * * 0
|
|
# - CRON_SCHEDULE=0 3 1 * *
|
|
# - CRON_SCHEDULE=*/30 * * * *
|
|
volumes:
|
|
# Replace <pool> with your TrueNAS pool name, e.g. /mnt/tank/if-curator/...
|
|
- /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]
|
|
|