diff --git a/infra/compose.yaml b/infra/compose.yaml index 18bf841..a4009d9 100644 --- a/infra/compose.yaml +++ b/infra/compose.yaml @@ -87,96 +87,14 @@ services: build: ./doorbell-listener container_name: doorbell-listener restart: unless-stopped + network_mode: host depends_on: mosquitto: condition: service_healthy volumes: - ./doorbell-listener/state:/data/doorbell-listener environment: - MQTT_HOST: mosquitto - MQTT_PORT: "1883" - PLUG_TOPIC: "zigbee2mqtt/Squiggle/set" - POLL_INTERVAL: "5" - MAX_AGE_SECONDS: "180" - FLASH_INTERVAL_SECONDS: "1" - FLASH_DURATION_SECONDS: "14" - TZ: America/Los_Angeles - - # Audio router: PipeWire + WirePlumber + PulseAudio bridge + BlueZ. - # Routes audio from librespot / mopidy / phone-Bluetooth to USB DAC (Q5K) - # via ALSA. Falls back to RPi 3.5mm / HDMI if no USB DAC. - # PEQ is applied on the DAC side (Q5K's Qudelix app, 20 bands), not here. - # NOTE: /run/dbus + /run/user/0 use tmpfs (NOT host bind-mount) — the host's - # dbus socket is /run/dbus/system_bus_socket and bind-mounting our container's - # socket overwrites it, breaking dockerd's ability to talk to systemd. - audio-bridge: - build: ./audio-bridge - container_name: audio-bridge - restart: unless-stopped - privileged: true - network_mode: host - devices: - - /dev/snd:/dev/snd - tmpfs: - - /run/dbus:size=1M - - /run/user/0:size=1M - cap_add: - - SYS_ADMIN # bluetoothd needs CAP_SYS_ADMIN for HCI - - NET_ADMIN - - # Spotify Connect: phone's Spotify app shows "Klubhaus" as a Connect target. - # Outputs audio to audio-bridge via PulseAudio (TCP localhost:4713). - # Built locally on RPi (cross-compile is too slow under qemu). - librespot: - build: ./librespot - image: infra-librespot:latest - container_name: librespot - restart: unless-stopped - depends_on: - - audio-bridge - network_mode: host - # CMD is set in Dockerfile; do not override here. - volumes: - - librespot_cache:/var/cache/librespot - - # Mopidy: Qobuz + local files + internet radio. Web UI on http://rpi:6680. - # Outputs audio to audio-bridge via PulseAudio (localhost:4713). - # Get Qobuz app_id + secret from https://developer.qobuz.com/api/v1/oauth - # Built locally from python:3.12-slim + pip install (no ghcr.io image). - mopidy: - build: ./mopidy - image: infra-mopidy:latest - container_name: mopidy - restart: unless-stopped - depends_on: - - audio-bridge - network_mode: host - ports: - - "6680:6680" - volumes: - - ./mopidy/data:/var/lib/mopidy - - ./mopidy/music:/music # drop FLACs in infra/mopidy/music/ - environment: - TZ: America/Los_Angeles - QOBUZ_APP_ID: "${QOBUZ_APP_ID:-}" - QOBUZ_APP_SECRET: "${QOBUZ_APP_SECRET:-}" - QOBUZ_USERNAME: "${QOBUZ_USERNAME:-}" - QOBUZ_PASSWORD: "${QOBUZ_PASSWORD:-}" - - # Party lock: blocks state changes to DJ Booth plug when locked. - # Watches party-lock/dj-booth/set and swaps mosquitto ACL file. - party-lock: - build: ./party-lock - container_name: party-lock - restart: unless-stopped - depends_on: - mosquitto: - condition: service_healthy - volumes: - - ./mosquitto/config:/mosquitto/config - - /var/run/docker.sock:/var/run/docker.sock - environment: - MQTT_HOST: mosquitto + MQTT_HOST: 192.168.81.147 MQTT_PORT: "1883" TZ: America/Los_Angeles