#!/usr/bin/env bash set -euo pipefail log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" } log "=== Starting up ===" log "Python: $(python --version 2>&1)" log "Working dir: $(pwd)" # Ensure required directories exist mkdir -p /app/data /app/logs log "Data directories: OK" # Check core deps python -c "import markitdown, fastapi, httpx, pandas" 2>/dev/null if [ $? -ne 0 ]; then log "ERROR: Missing core dependencies" python -c "import markitdown" 2>&1 | log python -c "import fastapi" 2>&1 | log python -c "import httpx" 2>&1 | log python -c "import pandas" 2>&1 | log exit 1 fi log "Core dependencies: OK" # Start SearXNG export SEARXNG_SETTINGS_PATH="${SEARXNG_SETTINGS_PATH:-/app/searxng/settings.yml}" log "SearXNG settings path: $SEARXNG_SETTINGS_PATH" if [ -f "$SEARXNG_SETTINGS_PATH" ]; then log "Starting SearXNG..." searxng-run > /tmp/searxng.log 2>&1 & SEARXNG_PID=$! log "SearXNG PID: $SEARXNG_PID" sleep 3 if kill -0 "$SEARXNG_PID" 2>/dev/null; then log "SearXNG is running (PID: $SEARXNG_PID)" else log "WARNING: SearXNG process exited. Check /tmp/searxng.log" cat /tmp/searxng.log 2>/dev/null | tail -10 | while IFS= read -r line; do log " searxng: $line"; done fi else log "WARNING: SearXNG settings not found at $SEARXNG_SETTINGS_PATH, skipping SearXNG start" fi # Start main app HOST="${HOST:-0.0.0.0}" PORT="${PORT:-7860}" WORKERS="${WORKERS:-1}" LOG_LEVEL="${LOG_LEVEL:-info}" log "Starting uvicorn: host=$HOST port=$PORT workers=$WORKERS log_level=$LOG_LEVEL" exec python -m uvicorn app.api.server:app \ --host "$HOST" \ --port "$PORT" \ --workers "$WORKERS" \ --log-level "$LOG_LEVEL" \ --access-log