Ctrl K
ComunidadGuías…

docker-compose.yml

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Pin the Compose project name so `docker compose` from this directory always
# targets the same stack. Without this, the project defaults to the directory
# name (e.g. 'radio-tty'), which spins up a parallel stack that collides on
# port 80 with an install started under a different name.
name: hearthwave

services:
  backend:
    build:
      context: .
      dockerfile: backend/Dockerfile
      args:
        COMPUTE_BACKEND: ${COMPUTE_BACKEND:-cpu}
    volumes:
      - ./data:/data
      - ./Voices:/app/Voices:ro
      # All Whisper models live here, including the two-tier final-pass model.
      # setup-cpu.sh stages both in one run and defaults the final model to
      # large-v3-turbo (~1.6 GB) — the one "auto" prefers:
      #   bash setup-cpu.sh                                # small.en + large-v3-turbo
      #   bash setup-cpu.sh --final-model distil-large-v3  # faster on long overs
      #   bash setup-cpu.sh --final-model none             # single-pass RX
      # New installs default whisper_model_final="auto" and pick the staged
      # model up automatically (turbo > distil > large-v3); a persisted ""
      # (explicit off) stays off until set to "auto" or a model name in the
      # Settings System tab. The final model lazy-loads on first finalized
      # utterance and adds ~1.5 GB RAM only while active.
      - ./Models:/app/backend/Models:ro
      # setup.sh writes PULSE_UID to .env — run it once before docker compose up
      - /run/user/${PULSE_UID:-1000}/pulse:/run/pulse:ro
      # Host timezone, so times spoken on air and embedded in reports/journals
      # are local (the container otherwise runs UTC). Non-Linux hosts: remove
      # this line and set a TZ environment variable instead (e.g. TZ=America/Detroit).
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PULSE_SERVER=unix:/run/pulse/native
    devices:
      - /dev/snd:/dev/snd
      # MeshCore plugin: pass through the Companion radio's serial device.
      # Uncomment and match your host's port (also set it in the Server Config
      # panel → MeshCore device). Left commented so `docker compose up` works on
      # hosts without the device attached.
      # - /dev/ttyUSB0:/dev/ttyUSB0
    restart: unless-stopped
    networks:
      - radio
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8765/health')"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 20s

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - "80:8080"
    volumes:
      - ./data:/data:ro
    depends_on:
      backend:
        condition: service_started
    restart: unless-stopped
    networks:
      - radio

networks:
  radio:
    driver: bridge