services: metapi: image: 1467078763/metapi:latest ports: - "127.0.0.1:${PORT:-4000}:${PORT:-4000}" volumes: - ./data:/app/data - ./runtime:/app/runtime environment: AUTH_TOKEN: ${AUTH_TOKEN:?AUTH_TOKEN is required} PROXY_TOKEN: ${PROXY_TOKEN:?PROXY_TOKEN is required} CHECKIN_CRON: "${CHECKIN_CRON:-0 8 * * *}" BALANCE_REFRESH_CRON: "${BALANCE_REFRESH_CRON:-0 * * * *}" PORT: ${PORT:-4000} DATA_DIR: /app/data UPDATE_CENTER_RUNTIME_DIR: /app/runtime UPDATE_CENTER_RUNTIME_PERSISTENT: "true" TZ: ${TZ:-Asia/Shanghai} NOTIFY_COOLDOWN_SEC: ${NOTIFY_COOLDOWN_SEC:-300} ADMIN_IP_ALLOWLIST: "${ADMIN_IP_ALLOWLIST:-}" SYSTEM_PROXY_URL: "${SYSTEM_PROXY_URL:-}" TELEGRAM_ENABLED: ${TELEGRAM_ENABLED:-false} TELEGRAM_BOT_TOKEN: "${TELEGRAM_BOT_TOKEN:-}" TELEGRAM_CHAT_ID: "${TELEGRAM_CHAT_ID:-}" TELEGRAM_API_BASE_URL: "${TELEGRAM_API_BASE_URL:-}" TELEGRAM_MESSAGE_THREAD_ID: "${TELEGRAM_MESSAGE_THREAD_ID:-}" TELEGRAM_USE_SYSTEM_PROXY: ${TELEGRAM_USE_SYSTEM_PROXY:-false} restart: unless-stopped healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:' + (process.env.PORT || 4000) + '/healthz').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))"] interval: 30s timeout: 5s retries: 3