2.8 KiB
2.8 KiB
Photobooth Operations Playbook
Use this checklist when bringing Photobooth FTP online for a tenant or debugging ingest issues.
1. Provisioning Flow
- SuperAdmin config – set defaults in Filament → Platform Management → Photobooth Settings.
- Tenant enablement – Event Admin opens the event → Fotobox-Uploads → “Photobooth aktivieren”.
- Laravel generates credentials and calls the control service (
POST /users). - vsftpd accepts uploads at
ftp://username:password@HOST:PORT/. photobooth:ingestcopies files into the hot storage disk and applies moderation/security pipelines.
2. Troubleshooting
| Symptom | Action |
|---|---|
| Tenant’s Photobooth page shows “Deaktiviert” immediately | Check storage/logs/laravel.log for control-service errors; re-run photobooth:ingest --event=ID -vv. |
Files remain under /storage/app/photobooth/<tenant>/<event> |
Ensure scheduler (Horizon/cron) runs photobooth:ingest; run manual command to force ingestion. |
| Photos missing from guest “Fotobox” tab | Confirm photos.ingest_source = photobooth and that /api/v1/events/{token}/photos?filter=photobooth returns data. |
| Rate-limit complaints | Inspect control service logs; adjust PHOTOBOOTH_RATE_LIMIT_PER_MINUTE and re-save settings (fires /config). |
| Credentials leaked/compromised | Click “Zugang neu generieren” in Event Admin; optional php artisan photobooth:cleanup-expired --event=ID to force deletion before expiry. |
3. Command Reference
# Manually ingest pending files for a single event
php artisan photobooth:ingest --event=123 --max-files=100
# Check ingest for all active events (dry run)
php artisan photobooth:ingest --max-files=10
# Remove expired accounts (safe to run ad hoc)
php artisan photobooth:cleanup-expired
4. Pre-flight Checklist for New Deployments
php artisan migrate- Configure
.envPhotobooth variables. - Mount shared Photobooth volume in all containers (FTP + Laravel).
- Verify
MediaStorageTargetrecords exist (hot target pointing at the hot disk). - Seed baseline emotions (Photobooth ingest assigns
emotion_idfrom existing rows). - Confirm scheduler runs (Horizon supervisor or system cron).
5. Incident Response
- Identify scope – which events/tenants are affected? Check ingestion logs for specific usernames/path.
- Quarantine – disable the Photobooth toggle for impacted events via Admin UI.
- Remediate – fix FTP/control issues, rotate credentials, run
photobooth:ingest. - Audit – review
photobooth_metadataon events andphotos.ingest_source. - Communicate – notify tenant admins via in-app message or email template referencing incident ID.
Keep this playbook updated whenever infra/process changes. PRs to /docs/ops/photobooth welcome.