كيفية تثبيت OpenClaw على VeerHost VPS (Docker)

القراءة المقدرة:3دقائق

Summary: OpenClaw هي منصة مساعد ذكاء اصطناعي ذاتية الاستضافة يمكنها الاتصال بقنوات المراسلة والـ webhooks وقواعد البيانات ومصادر المعرفة الخاصة. يرشدك هذا الدليل

OpenClaw هي منصة مساعد ذكاء اصطناعي ذاتية الاستضافة يمكنها الاتصال بقنوات المراسلة والـ webhooks وقواعد البيانات ومصادر المعرفة الخاصة. يرشدك هذا الدليل إلى تثبيت OpenClaw على خادم VeerHost VPS باستخدام Docker بطريقة أنظف وأكثر أمانًا.

ملاحظة: قد تشير بعض الأدلة القديمة إلى OpenClaw باسم Moltbot أو Clawdbot. نستخدم في هذه الوثائق الاسم الحالي: OpenClaw.

المتطلبات

قبل أن تبدأ، تأكد من توفر ما يلي:

  • خادم VeerHost VPS بنظام Ubuntu 22.04 أو Ubuntu 24.04
  • وصول SSH إلى الخادم
  • مستخدم لديه صلاحيات sudo
  • تثبيت Docker
  • تثبيت إضافة Docker Compose
  • نطاق أو نطاق فرعي إذا كنت تريد HTTPS أو webhooks

الخطوة 1: اتصل بخادم VPS

ادخل إلى خادمك عبر SSH:

ssh root@YOUR_SERVER_IP

إذا كنت تستخدم مستخدم sudo غير root:

ssh youruser@YOUR_SERVER_IP

الخطوة 2: حدّث النظام

حدّث قوائم الحزم وترقّ الحزم المثبتة:

sudo apt update && sudo apt -y upgrade

الخطوة 3: ثبّت Docker

إذا لم يكن Docker مثبتًا بالفعل، شغّل:

sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

تحقق من التثبيت:

docker --version
docker compose version

الخطوة 4: أنشئ دليل مشروع OpenClaw

أنشئ دليلًا مخصصًا لـ OpenClaw:

mkdir -p ~/openclaw
cd ~/openclaw

إذا كنت تستنسخ من مستودع، فاستخدم عنوان URL الحالي لمستودع OpenClaw:

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

إذا كنت تستخدم fork خاصًا بك أو مستودعًا خاصًا، فاستبدل عنوان URL بما يناسب.

الخطوة 5: أنشئ ملف البيئة

أنشئ ملف .env:

nano .env

الصق هذا المثال وعدّله:

BOT_TOKEN=YOUR_TOKEN_HERE

WEBHOOK_ENABLED=false
WEBHOOK_URL=https://bot.yourdomain.com/webhook
WEBHOOK_PORT=3000

DB_TYPE=postgres
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=openclaw
DB_USER=openclaw_user
DB_PASSWORD=STRONG_PASSWORD_HERE

REDIS_URL=redis://127.0.0.1:6379

NODE_ENV=production
LOG_LEVEL=info

احفظ الملف، ثم قيّد الأذونات:

chmod 600 .env

الخطوة 6: أنشئ ملف Docker Compose

أنشئ ملف docker-compose.yml:

nano docker-compose.yml

استخدم هذا المثال الأساسي وعدّله ليناسب صورة OpenClaw ومتطلبات الخدمة الفعلية لديك:

services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:latest
    container_name: openclaw
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "127.0.0.1:3000:3000"
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:16
    container_name: openclaw_postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: openclaw
      POSTGRES_USER: openclaw_user
      POSTGRES_PASSWORD: STRONG_PASSWORD_HERE
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7
    container_name: openclaw_redis
    restart: unless-stopped
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

مهم:

  • اربط التطبيق بـ 127.0.0.1 فقط إذا كنت تستخدم Nginx كوكيل عكسي (reverse proxy).
  • لا تكشف منافذ التطبيق الداخلية للعامة إلا إذا كنت بحاجة فعلية إلى وصول مباشر.

الخطوة 7: شغّل OpenClaw

أطلق الحزمة:

docker compose up -d

تحقق من الحاويات قيد التشغيل:

docker compose ps

عاين السجلات:

docker compose logs -f

الخطوة 8: اضبط قواعد جدار الحماية

اسمح بالمنافذ التي تحتاجها فقط:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
sudo ufw status

لا تفتح المنفذ 3000 للعامة إذا كان Nginx يوجّه الحركة إلى OpenClaw محليًا.

الخطوة 9: وكيل عكسي من Nginx (اختياري)

إذا كنت تريد الوصول إلى OpenClaw عبر نطاق مثل bot.yourdomain.com، فأنشئ موقع Nginx:

sudo nano /etc/nginx/sites-available/openclaw

مثال على التكوين:

server {
    listen 80;
    server_name bot.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

فعّل الموقع:

sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

الخطوة 10: أضف SSL من Let’s Encrypt

ثبّت Certbot:

sudo apt install -y certbot python3-certbot-nginx

اطلب الشهادة:

sudo certbot --nginx -d bot.yourdomain.com

إذا فعّلت وضع webhook، فحدّث .env:

WEBHOOK_ENABLED=true
WEBHOOK_URL=https://bot.yourdomain.com/webhook
WEBHOOK_PORT=3000

ثم أعد تشغيل الحزمة:

docker compose down
docker compose up -d

استكشاف الأخطاء وإصلاحها

حاوية OpenClaw تعيد التشغيل باستمرار

افحص السجلات أولًا:

docker compose logs -f openclaw

الأسباب الشائعة:

  • رمز token خاطئ
  • بيانات اعتماد قاعدة البيانات سيئة
  • متغيرات بيئة مفقودة
  • تضارب المنافذ

المنفذ 3000 قيد الاستخدام بالفعل

اعثر على ما يستخدم المنفذ:

sudo ss -tulpn | grep 3000

إما أن توقف الخدمة المتعارضة أو تغيّر الربط الداخلي.

فشل الاتصال بقاعدة البيانات

تأكد من أن:

  • حاوية PostgreSQL تعمل
  • اسم المستخدم وكلمة المرور واسم قاعدة البيانات تطابق ما في .env
  • التطبيق يستخدم المضيف والمنفذ الصحيحين

Nginx يعيد الخطأ 502 Bad Gateway

يعني ذلك عادةً أن OpenClaw غير قيد التشغيل أو لا يستمع على المنفذ المتوقع. تحقق من:

docker compose ps
docker compose logs -f openclaw

نصائح أمنية

  • أبقِ OpenClaw خلف Nginx قدر الإمكان
  • اكشف المنافذ 22 و80 و443 فقط
  • خزّن الأسرار فقط في .env
  • استخدم كلمات مرور قوية لقاعدة البيانات
  • أبقِ صور Docker محدّثة
  • انسخ .env وملف compose وقاعدة البيانات احتياطيًا بانتظام

الخطوات التالية

Launchpad