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
เส้นทางด่วน (สำหรับผู้ดูแลระบบที่มีประสบการณ์)
- จัดเตรียม Hetzner VPS
- ติดตั้ง Docker
- โคลนรีโพซิทอรี OpenClaw
- สร้างไดเรกทอรีโฮสต์แบบถาวร
- กำหนดค่า
.envและdocker-compose.yml - ฝังไบนารีที่จำเป็นลงในอิมเมจ
docker compose up -d- ตรวจสอบการคงอยู่ของข้อมูลและการเข้าถึง 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
รีโพซิทอรี:
- โครงสร้างพื้นฐาน: openclaw-terraform-hetzner
- คอนฟิก Docker: openclaw-docker-config
แนวทางนี้เสริมการตั้งค่า Docker ด้านบนด้วยการปรับใช้ที่ทำซ้ำได้ โครงสร้างพื้นฐานที่ควบคุมเวอร์ชันได้ และการกู้คืนจากภัยพิบัติแบบอัตโนมัติ
ขั้นตอนถัดไป
- ตั้งค่าช่องทางข้อความ: ช่องทาง
- กำหนดค่า Gateway: การกำหนดค่า Gateway
- อัปเดต OpenClaw ให้ทันสมัยอยู่เสมอ: การอัปเดต