Files
espresso_frame/server/docker-compose.yml.example
T
tfaour fd9516f5d1
Build and push server image / build-and-push (push) Successful in 36s
Server: quiet hours (no wake overnight), zero firmware changes needed
Purely a server-side decision: GET /frame/config hands back a longer
refresh_interval_s while quiet hours are in effect (exactly the seconds
until they end), and clamps the normal interval so the device's next
wake lands at the boundary instead of wandering into the window, when
outside it but approaching. A device already mid-sleep when quiet hours
begin can still land one wake inside the window -- unavoidable without
touching the firmware, since it has no wall-clock awareness -- but from
that wake on it sleeps straight through to the end.

Window is "HH:MM"-"HH:MM", wrap-past-midnight aware (e.g. 22:00-07:00),
in the server's local timezone -- added tzdata to the Dockerfile since
python:3.12-slim doesn't include it and TZ would otherwise silently
resolve to nothing and fall back to UTC.

Also fixed the "overdue" device-status check to account for quiet hours:
without this it would falsely flag a device sleeping through a long
quiet window as unreachable.
2026-07-20 23:25:43 -04:00

25 lines
1.0 KiB
Plaintext

services:
espresso-frame-server:
image: git.thumeit.com/tfaour/espresso-frame-server:latest
build: .
ports:
- "8420:8420"
volumes:
- ./data:/data
environment:
- CONFIG_PATH=/data/config.json
- IMMICH_URL=http://your-immich-host:2283
- IMMICH_API_KEY=your-immich-api-key-here
# Set this to your local timezone (e.g. America/New_York) if you use
# the "Quiet hours" setting -- without it, the container defaults to
# UTC, and quiet hours would run on UTC clock time instead of yours.
- TZ=UTC
# Optional: gates the entire server -- the web UI (/, /api/*) AND
# every device-facing /frame/* endpoint -- behind this shared secret.
# Leave unset to keep it all open on a trusted LAN, same as before.
# Paste the same value into the ESP32's captive portal setup form
# (Access Token field) so it's sent on every device request and gets
# embedded automatically in the manage-menu/share QR codes.
- MANAGEMENT_TOKEN=changeme
restart: unless-stopped