When closed, the public request page shows a "booth closed" message instead of the form.
❌ {{ health.message }}
{% if health.missing_columns %}Missing columns: {{ health.missing_columns | join(', ') }}
{% endif %} {% if health.missing_tables %}Missing tables: {{ health.missing_tables | join(', ') }}
{% endif %} {% else %}✅ {{ health.message }}
{% endif %}Total requests: {{ total_records }}
Database size: {{ db_size }}
Uploaded MP3s: {{ upload_file_count }} files in {{ upload_dir_count }} request folders
Uploads total size: {{ upload_size }}
{% if status_counts %}Status breakdown:
Database path:
{{ db_path }}
Uploads path:
{{ upload_path }}
Set how the public /kiosk page cycles. Use -1 for QR only, 0 for pricing only, 1 for queue only, or 5+ seconds to cycle between QR, pricing, and queue.
Set via Portainer env var HERMES_API_KEY. Used for callback auth.
Current key: {{ hermes_key_masked }}
⚠️ No Hermes API key is configured. Set the HERMES_API_KEY environment variable in Portainer before using the callback workflow.
{% endif %}How long the signed Hermes callback URL stays valid (in hours). Default is 168 hours (7 days).
Push notifications for new customer requests. Leave either field blank to disable.
Push song request data to Hermes so it can generate a MusicGPT prompt automatically. The URL must include the route name (e.g. https://ntfy.hallsworth.ca/webhooks/trollgorithm-song-info). The secret is encrypted before storage.
API key is set via the MUSICGPT_API_KEY environment variable in Docker.
API key configured: {{ '✅ Yes' if musicgpt_api_key_set else '❌ No' }}
Webhook URL: {{ musicgpt_webhook_url }}
This URL is sent as webhook_url with every MusicGPT conversion request. MusicGPT POSTs results here when each task completes.
When enabled, the generated album cover is attached to the delivery email. It is always shown on this admin page.
When enabled, the site automatically polls MusicGPT every few minutes and downloads MP3/WAV files once they are ready.
These settings are used to send confirmation, preview, and delivery emails to customers. The password is stored encrypted using the Flask secret key.
These values are written into every uploaded MP3 file. The song title from the prompt is written to the Title tag automatically. Blank fields are skipped.
Download a copy of the SQLite database before the event. Upload a previous backup to restore it; the current database will be renamed as a timestamped backup.
Download all uploaded MP3 and archived revision files as a single ZIP.
Use this only at the start of a new event. It will delete every request and every uploaded MP3 file. This cannot be undone.