मुख्य सामग्री पर जाएं

Hetzner पर OpenClaw (Docker, प्रोडक्शन VPS गाइड)

लक्ष्य

Docker का उपयोग करके Hetzner VPS पर एक स्थायी OpenClaw Gateway चलाना, जिसमें durable state, अंतर्निहित बाइनरीज़ और सुरक्षित रीस्टार्ट व्यवहार हो। यदि आप “~$5 में OpenClaw 24/7” चाहते हैं, तो यह सबसे सरल और विश्वसनीय सेटअप है। Hetzner की कीमतें बदलती रहती हैं; सबसे छोटा Debian/Ubuntu VPS चुनें और यदि OOMs आएँ तो स्केल अप करें।

हम क्या कर रहे हैं (सरल शब्दों में)?

  • एक छोटा Linux सर्वर किराए पर लेना (Hetzner VPS)
  • Docker इंस्टॉल करना (आइसोलेटेड ऐप रनटाइम)
  • Docker में OpenClaw Gateway शुरू करना
  • होस्ट पर ~/.openclaw + ~/.openclaw/workspace को स्थायी रखना (रीस्टार्ट/रीबिल्ड के बाद भी)
  • SSH टनल के माध्यम से अपने लैपटॉप से Control UI तक पहुँच बनाना
Gateway तक निम्न तरीकों से पहुँचा जा सकता है:
  • आपके लैपटॉप से SSH पोर्ट फ़ॉरवर्डिंग
  • यदि आप फ़ायरवॉलिंग और टोकन स्वयं प्रबंधित करते हैं तो सीधे पोर्ट एक्सपोज़र
यह गाइड Hetzner पर Ubuntu या Debian मानकर चलती है।
यदि आप किसी अन्य Linux VPS पर हैं, तो पैकेजों को उसी अनुसार मैप करें। सामान्य Docker फ्लो के लिए, देखें Docker

त्वरित मार्ग (अनुभवी ऑपरेटर)

  1. Hetzner VPS प्रोविजन करें
  2. Docker इंस्टॉल करें
  3. OpenClaw रिपॉज़िटरी क्लोन करें
  4. स्थायी होस्ट डायरेक्टरी बनाएँ
  5. .env और docker-compose.yml को विन्यस्त करें
  6. आवश्यक बाइनरीज़ को इमेज में बेक करें
  7. docker compose up -d
  8. persistence और Gateway एक्सेस सत्यापित करें

आपको क्या चाहिए

  • root एक्सेस के साथ Hetzner VPS
  • अपने लैपटॉप से SSH एक्सेस
  • SSH + कॉपी/पेस्ट में बुनियादी सहजता
  • ~20 मिनट
  • Docker और Docker Compose
  • मॉडल प्रमाणीकरण क्रेडेंशियल्स
  • वैकल्पिक प्रदाता क्रेडेंशियल्स
    • WhatsApp QR
    • Telegram bot टोकन
    • Gmail OAuth

1. VPS प्रोविजन करें

Hetzner में Ubuntu या Debian VPS बनाएँ। root के रूप में कनेक्ट करें:
ssh root@YOUR_VPS_IP
यह गाइड मानती है कि VPS stateful है। इसे disposable infrastructure की तरह न मानें।

2. Docker इंस्टॉल करें (VPS पर)

apt-get update
apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh
सत्यापित करें:
docker --version
docker compose version

3. OpenClaw रिपॉज़िटरी क्लोन करें

git clone https://github.com/openclaw/openclaw.git
cd openclaw
यह गाइड मानती है कि आप बाइनरी persistence की गारंटी के लिए एक कस्टम इमेज बनाएँगे।

4. स्थायी होस्ट डायरेक्टरी बनाएँ

Docker कंटेनर ephemeral होते हैं। सारा long-lived state होस्ट पर होना चाहिए।
mkdir -p /root/.openclaw/workspace

# Set ownership to the container user (uid 1000):
chown -R 1000:1000 /root/.openclaw

5. पर्यावरण चर विन्यस्त करें

रिपॉज़िटरी रूट में .env बनाएँ।
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789

OPENCLAW_CONFIG_DIR=/root/.openclaw
OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace

GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw
मज़बूत सीक्रेट्स जनरेट करें:
openssl rand -hex 32
इस फ़ाइल को कमिट न करें।

6. Docker Compose विन्यास

docker-compose.yml बनाएँ या अपडेट करें।
services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE}
    build: .
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - HOME=/home/node
      - NODE_ENV=production
      - TERM=xterm-256color
      - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
      - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
      - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
      - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
      - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    ports:
      # Recommended: keep the Gateway loopback-only on the VPS; access via SSH tunnel.
      # To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
      - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"

      # Optional: only if you run iOS/Android nodes against this VPS and need Canvas host.
      # If you expose this publicly, read /gateway/security and firewall accordingly.
      # - "18793:18793"
    command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND}",
        "--port",
        "${OPENCLAW_GATEWAY_PORT}",
        "--allow-unconfigured",
      ]
--allow-unconfigured is only for bootstrap convenience, it is not a replacement for a proper gateway configuration. Still set auth (gateway.auth.token or password) and use safe bind settings for your deployment.

7. आवश्यक बाइनरीज़ को इमेज में बेक करें (महत्वपूर्ण)

चल रहे कंटेनर के अंदर binaries इंस्टॉल करना एक जाल है। रनटाइम पर इंस्टॉल की गई कोई भी चीज़ रीस्टार्ट पर खो जाएगी। Skills द्वारा आवश्यक सभी बाहरी बाइनरीज़ को इमेज बिल्ड समय पर इंस्टॉल किया जाना चाहिए। नीचे दिए गए उदाहरण केवल तीन सामान्य बाइनरीज़ दिखाते हैं:
  • Gmail एक्सेस के लिए gog
  • Google Places के लिए goplaces
  • WhatsApp के लिए wacli
ये उदाहरण हैं, पूरी सूची नहीं। आप उसी पैटर्न का उपयोग करके जितनी चाहें binaries इंस्टॉल कर सकते हैं। यदि आप बाद में नए Skills जोड़ते हैं जो अतिरिक्त बाइनरीज़ पर निर्भर करते हैं, तो आपको करना होगा:
  1. Dockerfile अपडेट करें
  2. इमेज को रीबिल्ड करें
  3. कंटेनरों को रीस्टार्ट करें
उदाहरण Dockerfile
FROM node:22-bookworm

RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*

# Example binary 1: Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# Example binary 2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# Example binary 3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli

# Add more binaries below using the same pattern

WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts

RUN corepack enable
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]

8. बिल्ड और लॉन्च करें

docker compose build
docker compose up -d openclaw-gateway
बाइनरीज़ सत्यापित करें:
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli
अपेक्षित आउटपुट:
/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli

9. Gateway सत्यापित करें

docker compose logs -f openclaw-gateway
सफलता:
[gateway] listening on ws://0.0.0.0:18789
अपने लैपटॉप से:
ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
खोलें: http://127.0.0.1:18789/ अपना gateway टोकन पेस्ट करें।

क्या कहाँ स्थायी रहता है (source of truth)

OpenClaw Docker में चलता है, लेकिन Docker source of truth नहीं है। सारा long-lived state रीस्टार्ट, rebuilds और reboots के बाद भी बना रहना चाहिए।
घटकस्थानPersistence तंत्रनोट्स
Gateway विन्यास/home/node/.openclaw/होस्ट वॉल्यूम माउंटopenclaw.json, टोकन शामिल
मॉडल auth प्रोफ़ाइल/home/node/.openclaw/होस्ट वॉल्यूम माउंटOAuth टोकन, एपीआई कुंजियाँ
Skill विन्यास/home/node/.openclaw/skills/होस्ट वॉल्यूम माउंटSkill-स्तरीय state
एजेंट वर्कस्पेस/home/node/.openclaw/workspace/होस्ट वॉल्यूम माउंटकोड और एजेंट आर्टिफ़ैक्ट्स
WhatsApp सत्र/home/node/.openclaw/होस्ट वॉल्यूम माउंटQR लॉगिन को सुरक्षित रखता है
Gmail कीरिंग/home/node/.openclaw/होस्ट वॉल्यूम + पासवर्डGOG_KEYRING_PASSWORD आवश्यक
बाहरी बाइनरीज़/usr/local/bin/Docker इमेजबिल्ड समय पर बेक होना चाहिए
Node रनटाइमकंटेनर फ़ाइलसिस्टमDocker इमेजहर इमेज बिल्ड पर रीबिल्ड
OS पैकेजकंटेनर फ़ाइलसिस्टमDocker इमेजरनटाइम पर इंस्टॉल न करें
Docker कंटेनरEphemeralरीस्टार्ट योग्यनष्ट करना सुरक्षित

इन्फ्रास्ट्रक्चर ऐज़ कोड (Terraform)

जो टीमें infrastructure-as-code वर्कफ़्लो को प्राथमिकता देती हैं, उनके लिए समुदाय द्वारा मेंटेन किया गया Terraform सेटअप प्रदान करता है:
  • रिमोट स्टेट मैनेजमेंट के साथ मॉड्यूलर Terraform कॉन्फ़िगरेशन
  • cloud-init के माध्यम से स्वचालित प्रोविज़निंग
  • डिप्लॉयमेंट स्क्रिप्ट्स (bootstrap, deploy, backup/restore)
  • सुरक्षा सुदृढ़ीकरण (firewall, UFW, केवल SSH एक्सेस)
  • gateway एक्सेस के लिए SSH टनल कॉन्फ़िगरेशन
रिपॉज़िटरीज़: यह तरीका ऊपर दिए गए Docker सेटअप को पुनरुत्पादन योग्य डिप्लॉयमेंट, वर्ज़न-कंट्रोल्ड इन्फ्रास्ट्रक्चर और स्वचालित डिज़ास्टर रिकवरी के साथ पूरक बनाता है।
नोट: समुदाय द्वारा मेंटेन किया गया। समस्याओं या योगदान के लिए, ऊपर दिए गए रिपॉज़िटरी लिंक देखें।