services: aitherboard: container_name: aitherboard build: context: . # Optional: override defaults from config.ts if needed # Uncomment and modify if you want custom values: # args: # VITE_DEFAULT_RELAYS: "wss://theforest.nostr1.com,wss://nostr21.com,wss://nostr.land" # VITE_THREAD_TIMEOUT_DAYS: "30" ports: - "9876:9876" environment: - PORT=9876 - NODE_ENV=production - PIPER_TTS_HOST=piper-tts - PIPER_TTS_PORT=10200 restart: unless-stopped depends_on: piper-tts: condition: service_healthy networks: - aitherboard-network piper-tts: container_name: piper-tts # Using official Wyoming Piper from source # To build locally: git clone https://github.com/rhasspy/wyoming-piper.git wyoming-piper # Then change build.context to ./wyoming-piper build: context: ./wyoming-piper dockerfile: Dockerfile # Port 10200 is only used internally by aitherboard container # No need to expose it to the host expose: - "10200" command: # --voice is required at startup but can be overridden in synthesize messages # This is the default/fallback voice - --voice - en_US-lessac-medium - --uri - tcp://0.0.0.0:10200 - --data-dir - /data volumes: - ./piper-data:/data restart: unless-stopped networks: - aitherboard-network healthcheck: test: ["CMD-SHELL", "timeout 3 bash -c 'echo > /dev/tcp/localhost/10200' || exit 1"] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: aitherboard-network: driver: bridge