Spaces:
Sleeping
Sleeping
File size: 2,797 Bytes
b025231 07431f1 b025231 aac81b2 b025231 07431f1 b025231 7b2d99b 520deec 7b2d99b 520deec 07431f1 520deec b025231 07431f1 520deec | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | # OpenClaw Gateway for Hugging Face Spaces
# Build context: your Space repo (this Dockerfile + README + setup-hf-config.mjs).
# OpenClaw is cloned during build; setup-hf-config.mjs is overridden by your Space repo copy.
FROM node:22-bookworm
# Optional: point to a fork or branch (set in Space Variables)
ARG OPENCLAW_REPO=https://github.com/Josephrp/openclaw.git
ARG OPENCLAW_REF=hf-spaces
# Install git and Bun (needed for build scripts)
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends git ca-certificates && \
apt-get clean && rm -rf /var/lib/apt/lists/* \
&& curl -fsSL https://bun.sh/install | bash
ENV PATH="/root/.bun/bin:${PATH}"
RUN corepack enable
WORKDIR /app
# Clone OpenClaw and build (no COPY from host; Space repo only has this Dockerfile)
RUN git clone --depth 1 --branch "${OPENCLAW_REF}" "${OPENCLAW_REPO}" . \
&& pnpm install --frozen-lockfile \
&& pnpm build
ENV OPENCLAW_PREFER_PNPM=1
RUN pnpm ui:build
# Override the HF setup script with the customized version from Space repo
# This adds OpenRouter/Perplexity support on top of the default HF config
COPY setup-hf-config.mjs /app/spaces/huggingface/setup-hf-config.mjs
ENV NODE_ENV=production
# Spaces expose a single port (default 7860); gateway must listen on 0.0.0.0
EXPOSE 7860
# Entrypoint: set OPENCLAW_HOME, run HF Spaces setup (default model + token from secrets), then start gateway
RUN printf '%s\n' \
'#!/bin/sh' \
'set -e' \
'if mkdir -p /data/.openclaw 2>/dev/null; then' \
' export OPENCLAW_HOME=/data' \
'else' \
' export OPENCLAW_HOME=/home/user' \
' mkdir -p /home/user/.openclaw' \
'fi' \
'node /app/spaces/huggingface/setup-hf-config.mjs' \
'exec node /app/openclaw.mjs gateway --allow-unconfigured --bind lan --port 7860 "$@"' \
> /app/entrypoint.sh \
&& chmod +x /app/entrypoint.sh
# HF Spaces Dev Mode injects steps that expect /home/user; create it so they don't fail
RUN chown -R node:node /app \
&& mkdir -p /home/user \
&& chown -R node:node /home/user
USER node
# Required Secrets in HF Space Settings:
# OPENCLAW_GATEWAY_TOKEN — long random string for Control UI login (recommended)
# OPENCLAW_GATEWAY_PASSWORD — alternative to token (token wins if both set)
# HF_TOKEN — Hugging Face token with Inference Providers permission
# OPENROUTER_API_KEY — OpenRouter API key for Perplexity Sonar search model
#
# Optional Secrets/Variables:
# OPENCLAW_HF_DEFAULT_MODEL — e.g. huggingface/deepseek-ai/DeepSeek-R1 (default)
# OPENCLAW_GATEWAY_TRUSTED_PROXIES — comma-separated proxy IPs
# OPENCLAW_CONTROL_UI_ALLOWED_ORIGINS — comma-separated allowed origins
ENTRYPOINT ["/app/entrypoint.sh"]
|