services: freellmapi: image: ghcr.io/tashfeenahmed/freellmapi:latest build: context: . dockerfile: Dockerfile env_file: - .env environment: NODE_ENV: production PORT: 3001 # Bound to localhost by default — FreeLLMAPI is single-user and must not be # exposed to the internet. Set HOST_BIND=0.0.0.0 to reach it from your LAN. ports: - "${HOST_BIND:-127.0.0.1}:${PORT:-3001}:3001" volumes: - freellmapi-data:/app/server/data restart: unless-stopped healthcheck: test: [ "CMD", "node", "-e", "fetch('http://127.0.0.1:3001/api/ping').then((res) => { if (!res.ok) process.exit(1); }).catch(() => process.exit(1));" ] interval: 30s timeout: 5s start_period: 15s retries: 3 volumes: freellmapi-data: