# ============================================================
# HalaVoice On-Premise Stack — كل شيء محلي داخل شبكة العميل
#
# الخدمات:
#   asterisk   : الهاتفة (SIP trunk محلي / بوابة FXO) → AudioSocket
#   stt        : faster-whisper (OpenAI-compatible /v1/audio/transcriptions)
#   tts        : Piper عبر خادم OpenAI-compatible (/v1/audio/speech)
#   llm        : Ollama (OpenAI-compatible /v1/chat/completions)
#
# منصة HalaVoice نفسها تعمل على المضيف (pm2) مع:
#   ONPREM_AUDIOSOCKET_ENABLED=true  (المنفذ 9092)
# أو داخل Compose أيضًا إن رغبت بعزل كامل.
#
# GPU: أزل تعليق أقسام deploy/resources لتفعيل NVIDIA GPU
# (يتطلب nvidia-container-toolkit).
# ============================================================

services:
  # ----------------------------------------------------------
  # STT — faster-whisper بواجهة OpenAI
  # اضبط في الوكيل: onprem_stt_url = http://<host>:9000/v1
  # ----------------------------------------------------------
  stt:
    image: fedirz/faster-whisper-server:latest-cuda
    # للأجهزة بلا GPU استخدم: fedirz/faster-whisper-server:latest-cpu
    restart: unless-stopped
    ports:
      - "9000:8000"
    environment:
      - WHISPER__MODEL=Systran/faster-whisper-large-v3
      - WHISPER__INFERENCE_DEVICE=auto
    volumes:
      - whisper-models:/root/.cache/huggingface
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: 1
    #           capabilities: [gpu]

  # ----------------------------------------------------------
  # TTS — Piper بواجهة OpenAI (/v1/audio/speech)
  # اضبط في onprem_config: { "ttsUrl": "http://<host>:8001/v1", "ttsVoice": "ar_JO-kareem-medium" }
  # ----------------------------------------------------------
  tts:
    image: ghcr.io/matatonic/openedai-speech:latest
    restart: unless-stopped
    ports:
      - "8001:8000"
    environment:
      - PRELOAD_MODEL=xtts
    volumes:
      - tts-voices:/app/voices
      - tts-config:/app/config

  # ----------------------------------------------------------
  # LLM — Ollama (بديل LM Studio للخوادم)
  # بعد التشغيل:  docker exec -it onprem-llm ollama pull qwen3:14b
  # ثم في تبويب Custom LLM: http://<host>:11434/v1  والنموذج qwen3:14b
  # ----------------------------------------------------------
  llm:
    image: ollama/ollama:latest
    container_name: onprem-llm
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ollama-models:/root/.ollama
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: 1
    #           capabilities: [gpu]

  # ----------------------------------------------------------
  # Asterisk — الهاتفة المحلية
  # عدّل asterisk/extensions.conf (ضع id الوكيل وعنوان الجسر)
  # وpjsip.conf حسب الـtrunk/بوابة FXO لديك.
  # ----------------------------------------------------------
  asterisk:
    image: andrius/asterisk:20
    restart: unless-stopped
    network_mode: host   # مطلوب لـRTP/SIP بدون تعقيد NAT
    volumes:
      - ./asterisk/extensions.conf:/etc/asterisk/extensions.conf:ro
      - ./asterisk/pjsip.conf:/etc/asterisk/pjsip.conf:ro

volumes:
  whisper-models:
  tts-voices:
  tts-config:
  ollama-models:
