feat(01-03): integration wiring, Docker deployment, lightsync.groll.cloud

- Fix API routing: redirect_slashes=False + strip trailing slashes from route paths
- Fix StaticFiles catch-all intercepting /api/* before FastAPI redirect
- Add [tool.hatch.build.targets.wheel] to pyproject.toml for Docker builds
- Install docker-compose plugin (v2.34.0) as CLI plugin
- Create Dockerfile (python:3.11-alpine, CMD python -m lightsync)
- Create docker-compose.prod.yml (Traefik + Authelia, edge network)
- Deploy lightsync container to lightsync.groll.cloud
- Add LightSync entry to start/projects.json
- Update frontend app.js to use /api/devices (no trailing slash)
This commit is contained in:
Claude
2026-04-05 18:59:34 +00:00
parent 9f3a2fc7a1
commit a21962cbcf
7 changed files with 45 additions and 6 deletions

24
docker-compose.prod.yml Normal file
View File

@@ -0,0 +1,24 @@
services:
lightsync:
build: .
container_name: lightsync
restart: unless-stopped
environment:
HOST: 0.0.0.0
PORT: "8000"
volumes:
- ./shows:/app/shows
- ./devices.json:/app/devices.json
networks:
- edge
labels:
- "traefik.enable=true"
- "traefik.http.routers.lightsync.rule=Host(`lightsync.groll.cloud`)"
- "traefik.http.routers.lightsync.entrypoints=websecure"
- "traefik.http.routers.lightsync.tls.certresolver=letsencrypt"
- "traefik.http.routers.lightsync.middlewares=authelia@docker"
- "traefik.http.services.lightsync.loadbalancer.server.port=8000"
networks:
edge:
external: true