Initial project: ESP32-S3 e-ink photo frame with web UI
ESP32-S3 firmware (PlatformIO) that fetches JPEGs from a photo server, decodes on-device with PSRAM, Floyd-Steinberg dithers to the Spectra 6 6-color palette, and displays on a 7.3" GDEP073E01 e-paper panel. Deep sleeps 1 hour between updates. Photo server (Python/Flask) with web UI for photo management, Traefik routing at photos.haunt.house with Google OAuth, and Home Assistant REST sensor integration. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
40
server/docker-compose.yml
Normal file
40
server/docker-compose.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
services:
|
||||
photo-server:
|
||||
build: .
|
||||
container_name: eink-photo-server
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- webgateway
|
||||
volumes:
|
||||
- photos:/photos
|
||||
- state:/data
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# HTTPS
|
||||
- "traefik.http.routers.photos-websecure.rule=Host(`photos.haunt.house`)"
|
||||
- "traefik.http.routers.photos-websecure.entryPoints=websecure"
|
||||
- "traefik.http.routers.photos-websecure.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.photos-websecure.middlewares=hsts,google-auth@docker"
|
||||
# HTTP redirect
|
||||
- "traefik.http.routers.photos-http.rule=Host(`photos.haunt.house`)"
|
||||
- "traefik.http.routers.photos-http.entryPoints=web"
|
||||
- "traefik.http.routers.photos-http.middlewares=redirect-https"
|
||||
# Internal port
|
||||
- "traefik.http.services.photos.loadbalancer.server.port=8473"
|
||||
# ESP32 endpoint — no auth (frame can't do OAuth)
|
||||
- "traefik.http.routers.photos-frame.rule=Host(`photos.haunt.house`) && (Path(`/photo`) || Path(`/heartbeat`))"
|
||||
- "traefik.http.routers.photos-frame.entryPoints=websecure"
|
||||
- "traefik.http.routers.photos-frame.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.photos-frame.middlewares=hsts"
|
||||
- "traefik.http.routers.photos-frame.priority=100"
|
||||
- "traefik.http.routers.photos-frame.service=photos"
|
||||
|
||||
networks:
|
||||
webgateway:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
photos:
|
||||
state:
|
||||
Reference in New Issue
Block a user