Hosting

Hetzner

เป้าหมาย

รัน OpenClaw Gateway แบบถาวรบน Hetzner VPS โดยใช้ Docker พร้อมสถานะที่คงทน ไบนารีที่ฝังไว้ในอิมเมจ และพฤติกรรมการรีสตาร์ตที่ปลอดภัย

หากคุณต้องการ "OpenClaw ตลอด 24/7 ในราคา ~$5" นี่คือการตั้งค่าที่เรียบง่ายและเชื่อถือได้ที่สุด ราคา Hetzner อาจเปลี่ยนแปลงได้; เลือก VPS Debian/Ubuntu ขนาดเล็กที่สุด แล้วค่อยขยายขนาดหากพบปัญหา OOM

ข้อเตือนใจเรื่องโมเดลความปลอดภัย:

  • เอเจนต์ที่ใช้ร่วมกันในบริษัทใช้ได้เมื่อทุกคนอยู่ในขอบเขตความไว้วางใจเดียวกันและรันไทม์ใช้เพื่อธุรกิจเท่านั้น
  • แยกอย่างเคร่งครัด: VPS/รันไทม์เฉพาะ + บัญชีเฉพาะ; ห้ามใช้โปรไฟล์ Apple/Google/เบราว์เซอร์/ตัวจัดการรหัสผ่านส่วนตัวบนโฮสต์นั้น
  • หากผู้ใช้มีลักษณะเป็นปฏิปักษ์ต่อกัน ให้แยกตาม gateway/โฮสต์/ผู้ใช้ OS

ดู ความปลอดภัย และ การโฮสต์ VPS

เรากำลังทำอะไรอยู่ (แบบเข้าใจง่าย)?

  • เช่าเซิร์ฟเวอร์ Linux ขนาดเล็ก (Hetzner VPS)
  • ติดตั้ง Docker (รันไทม์แอปแบบแยกส่วน)
  • เริ่ม OpenClaw Gateway ใน Docker
  • เก็บ ~/.openclaw + ~/.openclaw/workspace ไว้บนโฮสต์แบบถาวร (ยังอยู่หลังรีสตาร์ต/สร้างใหม่)
  • เข้าถึง Control UI จากแล็ปท็อปของคุณผ่าน SSH tunnel

สถานะ ~/.openclaw ที่เมานต์ไว้นั้นรวมถึง openclaw.json, ไฟล์ต่อเอเจนต์ agents/<agentId>/agent/auth-profiles.json และ .env

สามารถเข้าถึง Gateway ได้ผ่าน:

  • การส่งต่อพอร์ต SSH จากแล็ปท็อปของคุณ
  • การเปิดพอร์ตโดยตรง หากคุณจัดการไฟร์วอลล์และโทเคนเอง

คู่มือนี้สมมติว่าใช้ Ubuntu หรือ Debian บน Hetzner
หากคุณใช้ Linux VPS อื่น ให้เทียบแพ็กเกจตามความเหมาะสม สำหรับขั้นตอน Docker ทั่วไป ดู Docker


เส้นทางด่วน (สำหรับผู้ดูแลระบบที่มีประสบการณ์)

  1. จัดเตรียม Hetzner VPS
  2. ติดตั้ง Docker
  3. โคลนรีโพซิทอรี OpenClaw
  4. สร้างไดเรกทอรีโฮสต์แบบถาวร
  5. กำหนดค่า .env และ docker-compose.yml
  6. ฝังไบนารีที่จำเป็นลงในอิมเมจ
  7. docker compose up -d
  8. ตรวจสอบการคงอยู่ของข้อมูลและการเข้าถึง Gateway

สิ่งที่คุณต้องมี

  • Hetzner VPS พร้อมสิทธิ์ root
  • การเข้าถึง SSH จากแล็ปท็อปของคุณ
  • ใช้งาน SSH + คัดลอก/วางได้ในระดับพื้นฐาน
  • ประมาณ 20 นาที
  • Docker และ Docker Compose
  • ข้อมูลรับรองการยืนยันตัวตนของโมเดล
  • ข้อมูลรับรองผู้ให้บริการเสริม
    • WhatsApp QR
    • โทเคนบอต Telegram
    • Gmail OAuth

  • Provision the VPS

    สร้าง VPS Ubuntu หรือ Debian ใน Hetzner

    เชื่อมต่อเป็น root:

    ssh root@YOUR_VPS_IP
    

    คู่มือนี้สมมติว่า VPS มีสถานะแบบคงอยู่ อย่าปฏิบัติต่อมันเหมือนโครงสร้างพื้นฐานที่ใช้แล้วทิ้ง

  • Install Docker (on the VPS)

    apt-get update
    apt-get install -y git curl ca-certificates
    curl -fsSL https://get.docker.com | sh
    

    ตรวจสอบ:

    docker --version
    docker compose version
    
  • Clone the OpenClaw repository

    git clone https://github.com/openclaw/openclaw.git
    cd openclaw
    

    คู่มือนี้สมมติว่าคุณจะสร้างอิมเมจแบบกำหนดเองเพื่อรับประกันว่าไบนารีจะคงอยู่

  • Create persistent host directories

    คอนเทนเนอร์ Docker มีลักษณะชั่วคราว สถานะที่ต้องอยู่ระยะยาวทั้งหมดต้องอยู่บนโฮสต์

    mkdir -p /root/.openclaw/workspace
    
    # Set ownership to the container user (uid 1000):
    chown -R 1000:1000 /root/.openclaw
    
  • Configure environment variables

    สร้าง .env ในรากของรีโพซิทอรี

    OPENCLAW_IMAGE=openclaw:latest
    OPENCLAW_GATEWAY_TOKEN=
    OPENCLAW_GATEWAY_BIND=lan
    OPENCLAW_GATEWAY_PORT=18789
    
    OPENCLAW_CONFIG_DIR=/root/.openclaw
    OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace
    
    GOG_KEYRING_PASSWORD=
    XDG_CONFIG_HOME=/home/node/.openclaw
    

    ตั้งค่า OPENCLAW_GATEWAY_TOKEN เมื่อคุณต้องการจัดการโทเคน gateway แบบคงที่ผ่าน .env; มิฉะนั้นให้กำหนดค่า gateway.auth.token ก่อน พึ่งพาไคลเอนต์ข้ามการรีสตาร์ต หากไม่มีแหล่งใดอยู่ OpenClaw จะใช้ โทเคนเฉพาะรันไทม์สำหรับการเริ่มต้นครั้งนั้น สร้างรหัสผ่าน keyring แล้ววาง ลงใน GOG_KEYRING_PASSWORD:

    openssl rand -hex 32
    

    อย่า commit ไฟล์นี้

    ไฟล์ .env นี้ใช้สำหรับ env ของคอนเทนเนอร์/รันไทม์ เช่น OPENCLAW_GATEWAY_TOKEN การยืนยันตัวตน OAuth/API-key ของผู้ให้บริการที่จัดเก็บไว้จะอยู่ในไฟล์ที่เมานต์ ~/.openclaw/agents/<agentId>/agent/auth-profiles.json

  • Docker Compose configuration

    สร้างหรืออัปเดต 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"
        command:
          [
            "node",
            "dist/index.js",
            "gateway",
            "--bind",
            "${OPENCLAW_GATEWAY_BIND}",
            "--port",
            "${OPENCLAW_GATEWAY_PORT}",
            "--allow-unconfigured",
          ]
    

    --allow-unconfigured มีไว้เพื่อความสะดวกในการบูตสแตรปเท่านั้น ไม่ใช่สิ่งทดแทนการกำหนดค่า gateway ที่เหมาะสม ยังคงต้องตั้งค่าการยืนยันตัวตน (gateway.auth.token หรือรหัสผ่าน) และใช้การตั้งค่า bind ที่ปลอดภัยสำหรับการปรับใช้ของคุณ

  • Shared Docker VM runtime steps

    ใช้คู่มือรันไทม์ร่วมสำหรับขั้นตอนโฮสต์ Docker ทั่วไป:

  • Hetzner-specific access

    หลังจากขั้นตอนสร้างและเริ่มใช้งานร่วมกันเสร็จแล้ว ให้ตั้งค่าต่อไปนี้เพื่อเปิด tunnel:

    ข้อกำหนดเบื้องต้น: ตรวจสอบให้แน่ใจว่าคอนฟิก sshd ของ VPS อนุญาตการส่งต่อ TCP หากคุณ ทำให้คอนฟิก SSH แข็งแรงขึ้นแล้ว ให้ตรวจสอบ /etc/ssh/sshd_config และตั้งค่า:

    AllowTcpForwarding local
    

    local อนุญาต ssh -L local forwards จากแล็ปท็อปของคุณ พร้อมทั้งบล็อก remote forwards จากเซิร์ฟเวอร์ การตั้งค่าเป็น no จะทำให้ tunnel ล้มเหลว ด้วย: channel 3: open failed: administratively prohibited: open failed

    หลังจากยืนยันว่าเปิดใช้งานการส่งต่อ TCP แล้ว ให้รีสตาร์ตบริการ SSH (systemctl restart ssh) และรัน tunnel จากแล็ปท็อปของคุณ:

    ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
    

    เปิด:

    http://127.0.0.1:18789/

    วาง shared secret ที่กำหนดค่าไว้ คู่มือนี้ใช้โทเคน gateway เป็นค่าเริ่มต้น; หากคุณเปลี่ยนไปใช้การยืนยันตัวตนด้วยรหัสผ่าน ให้ใช้รหัสผ่านนั้นแทน

  • แผนที่การคงอยู่ร่วมกันอยู่ใน รันไทม์ Docker VM

    โครงสร้างพื้นฐานในรูปแบบโค้ด (Terraform)

    สำหรับทีมที่ต้องการเวิร์กโฟลว์โครงสร้างพื้นฐานในรูปแบบโค้ด การตั้งค่า Terraform ที่ดูแลโดยชุมชนมีสิ่งต่อไปนี้:

    • การกำหนดค่า Terraform แบบโมดูลาร์พร้อมการจัดการสถานะระยะไกล
    • การจัดเตรียมอัตโนมัติผ่าน cloud-init
    • สคริปต์การปรับใช้ (bootstrap, deploy, backup/restore)
    • การเสริมความปลอดภัย (ไฟร์วอลล์, UFW, การเข้าถึงผ่าน SSH เท่านั้น)
    • การกำหนดค่า SSH tunnel สำหรับการเข้าถึง gateway

    รีโพซิทอรี:

    แนวทางนี้เสริมการตั้งค่า Docker ด้านบนด้วยการปรับใช้ที่ทำซ้ำได้ โครงสร้างพื้นฐานที่ควบคุมเวอร์ชันได้ และการกู้คืนจากภัยพิบัติแบบอัตโนมัติ

    ขั้นตอนถัดไป

    ที่เกี่ยวข้อง