| |
| FROM node:22-slim |
|
|
| |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| git openssh-client build-essential \ |
| g++ make ca-certificates socat \ |
| chromium fonts-noto-cjk python3 \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN update-ca-certificates && \ |
| git config --global http.sslVerify false && \ |
| git config --global url."https://github.com/".insteadOf ssh://git@github.com/ |
| |
| |
| RUN npm install -g openclaw@latest --unsafe-perm |
| |
| |
| ENV PORT=7860 \ |
| HOME=/home/node |
| |
| RUN mkdir -p /home/node/.openclaw/sessions \ |
| && mkdir -p /home/node/.openclaw/workspace \ |
| && mkdir -p /home/node/data \ |
| && chown -R node:node /home/node |
| |
| |
| RUN echo " |
| set -e\n\ |
| \n\ |
| if [ -n \"\$HF_TOKEN\" ] && [ -n \"\$DATASET_REPO\" ]; then\n\ |
| echo \"๐ ๅๅงๅ Git ่ชๅจๅคไปฝ...\"\n\ |
| git config --global user.email \"openclaw-bot@huggingface.co\"\n\ |
| git config --global user.name \"OpenClaw Bot\"\n\ |
| cd /home/node/data\n\ |
| if [ ! -d \".git\" ]; then\n\ |
| echo \"๐ฅ ๅ
้ๆฐๆฎ้: \$DATASET_REPO\"\n\ |
| git clone https://user:\$HF_TOKEN@huggingface.co/datasets/\$DATASET_REPO .\n\ |
| else\n\ |
| echo \"๐ฅ ๆๅๆๆฐๆฐๆฎ...\"\n\ |
| git pull origin main\n\ |
| fi\n\ |
| if [ \"\$(ls -A /home/node/data)\" ]; then\n\ |
| echo \"โป๏ธ ๆญฃๅจๆขๅคๅๅฒๆฐๆฎ...\"\n\ |
| cp -r /home/node/data/* /home/node/.openclaw/ 2>/dev/null || true\n\ |
| fi\n\ |
| fi\n\ |
| \n\ |
| |
| echo \"๐งน ๆญฃๅจๆธ
็ๅฏ่ฝๆฎ็็ๆต่งๅจๆญป้ๆไปถ...\"\n\ |
| find /home/node/.openclaw -name SingletonLock -delete 2>/dev/null || true\n\ |
| \n\ |
| CLEAN_BASE=\$(echo \"\$OPENAI_API_BASE\" | sed \"s|/chat/completions||g\" | sed \"s|/v1/|/v1|g\" | sed \"s|/v1\$|/v1|g\")\n\ |
| \n\ |
| echo \"โ๏ธ ๆญฃๅจ็ๆ OpenClaw ้
็ฝฎๆไปถ...\"\n\ |
| cat > /home/node/.openclaw/openclaw.json <<EOF\n\ |
| {\n\ |
| \"models\": {\n\ |
| \"providers\": {\n\ |
| \"siliconflow\": {\n\ |
| \"baseUrl\": \"\$CLEAN_BASE\",\n\ |
| \"apiKey\": \"\$OPENAI_API_KEY\",\n\ |
| \"api\": \"openai-completions\",\n\ |
| \"models\": [{ \"id\": \"\$MODEL\", \"name\": \"DeepSeek\", \"contextWindow\": 128000 }]\n\ |
| }\n\ |
| }\n\ |
| },\n\ |
| \"agents\": { \"defaults\": { \"model\": { \"primary\": \"siliconflow/\$MODEL\" } } },\n\ |
| \"channels\": {\n\ |
| \"telegram\": {\n\ |
| \"enabled\": true,\n\ |
| \"botToken\": \"\$TELEGRAM_BOT_TOKEN\",\n\ |
| \"dmPolicy\": \"allowlist\",\n\ |
| \"allowFrom\": [\"\$TELEGRAM_ADMIN_ID\"]\n\ |
| }\n\ |
| },\n\ |
| \"browser\": {\n\ |
| \"defaultProfile\": \"openclaw\",\n\ |
| \"headless\": true,\n\ |
| \"noSandbox\": true,\n\ |
| \"executablePath\": \"/usr/bin/chromium\",\n\ |
| \"args\": [\n\ |
| \"--disable-dev-shm-usage\",\n\ |
| \"--disable-gpu\",\n\ |
| \"--disable-software-rasterizer\",\n\ |
| \"--disable-setuid-sandbox\"\n\ |
| ]\n\ |
| },\n\ |
| \"gateway\": {\n\ |
| \"mode\": \"local\",\n\ |
| \"bind\": \"loopback\",\n\ |
| \"port\": 25808,\n\ |
| \"trustedProxies\": [\"127.0.0.1/32\", \"0.0.0.0/0\", \"10.0.0.0/8\", \"172.16.0.0/12\", \"192.168.0.0/16\"],\n\ |
| \"auth\": { \"mode\": \"token\", \"token\": \"\$OPENCLAW_GATEWAY_PASSWORD\" },\n\ |
| \"controlUi\": { \n\ |
| \"allowInsecureAuth\": true,\n\ |
| \"dangerouslyDisableDeviceAuth\": true\n\ |
| }\n\ |
| }\n\ |
| }\n\ |
| EOF\n\ |
| \n\ |
| if [ -n \"\$HF_TOKEN\" ] && [ -n \"\$DATASET_REPO\" ]; then\n\ |
| (while true; do \n\ |
| sleep 300;\n\ |
| cp -r /home/node/.openclaw/sessions /home/node/data/ 2>/dev/null || true;\n\ |
| cp -r /home/node/.openclaw/workspace /home/node/data/ 2>/dev/null || true;\n\ |
| rm -rf /home/node/data/workspace/.git 2>/dev/null || true;\n\ |
| cd /home/node/data;\n\ |
| if [[ \$(git status --porcelain) ]]; then\n\ |
| echo \"๐พ [่ชๅจๅๆญฅ] ๅ็ฐๆฐๆฎๅๅจ๏ผๆญฃๅจไธไผ ...\"\n\ |
| git add .;\n\ |
| git commit -m \"Auto sync: \$(date)\";\n\ |
| git push https://user:\$HF_TOKEN@huggingface.co/datasets/\$DATASET_REPO main > /dev/null 2>&1;\n\ |
| fi;\n\ |
| done) &\n\ |
| fi\n\ |
| \n\ |
| cd /home/node/.openclaw\n\ |
| echo \"๐ ๅฏๅจ็ซฏๅฃ่ฝฌๅๅผๆ...\"\n\ |
| socat TCP4-LISTEN:7860,fork,reuseaddr TCP4:127.0.0.1:25808 &\n\ |
| \n\ |
| echo \"๐ ๅฏๅจ OpenClaw Gateway...\"\n\ |
| exec openclaw gateway run --port 25808 --allow-unconfigured\n\ |
| " > /usr/local/bin/start-openclaw && chmod +x /usr/local/bin/start-openclaw |
| |
| |
| USER node |
| WORKDIR /home/node |
| EXPOSE 7860 |
| CMD ["/usr/local/bin/start-openclaw"] |