services: freellmapi: image: ghcr.io/tashfeenahmed/freellmapi:latest container_name: freellmapi environment: NODE_ENV: production PORT: "3001" ENCRYPTION_KEY: ${ENCRYPTION_KEY:?required} CATALOG_BASE_URL: "http://catalog-proxy:8080" ports: - "${HOST_IP:-192.168.1.101}:3002:3001" volumes: - ${DATA_DIR:-/sata/freellmapi/data}:/app/server/data extra_hosts: - "host.docker.internal:host-gateway" restart: unless-stopped depends_on: - catalog-proxy healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3001/api/ping').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"] interval: 30s timeout: 5s start_period: 15s retries: 3 catalog-proxy: image: python:3.13-slim container_name: freellmapi-catalog-proxy restart: unless-stopped volumes: - ${DATA_DIR:-/sata/freellmapi/data}:/data environment: PORT: "8080" PROXY_HOST: "${PROXY_HOST:-77.239.127.49}" PROXY_PORT: "${PROXY_PORT:-18322}" PROXY_USER: "${PROXY_USER:-}" PROXY_PASS: "${PROXY_PASS:-}" command: ["python", "-u", "/data/catalog_proxy.py"]