#!/bin/sh set -eu # Hugging Face Spaces exposes port 7860 by default. The upstream image sets # PORT=3001, so override that explicitly here. Use HF_SPACE_PORT only if you # also change app_port in the Space README front matter. export PORT="${HF_SPACE_PORT:-7860}" # Put the SQLite database and (fallback) encryption key in the same mount. # Attach a persistent Storage Bucket at /data if you want data to survive # Space restarts/rebuilds. Without a persistent volume, both are ephemeral. DATA_DIR="${FREELLMAPI_DATA_DIR:-/data}" mkdir -p "$DATA_DIR" export FREEAPI_DB_PATH="${FREEAPI_DB_PATH:-$DATA_DIR/freeapi.db}" # Official FreeLLMAPI requires ENCRYPTION_KEY. Prefer setting it as a Space # Secret; otherwise create/reuse a key file alongside the database. Keeping # the file beside the DB means a normal restart does not mismatch the key. if [ -z "${ENCRYPTION_KEY:-}" ]; then KEY_FILE="${ENCRYPTION_KEY_FILE:-$DATA_DIR/.encryption-key}" if [ ! -s "$KEY_FILE" ]; then umask 077 TMP_KEY="${KEY_FILE}.tmp.$$" node -e "process.stdout.write(require('crypto').randomBytes(32).toString('hex'))" > "$TMP_KEY" mv "$TMP_KEY" "$KEY_FILE" fi ENCRYPTION_KEY="$(tr -d '\r\n' < "$KEY_FILE")" export ENCRYPTION_KEY fi # Call the upstream entrypoint so it can set ownership and drop privileges # before starting the original server command from the image. exec /usr/local/bin/docker-entrypoint.sh "$@"