أتش تي أم أل كيفية نشر وكيل Hermes على Oracle VM مجانًا · Nous Research
← العودة إلى الصفحة الرئيسية
🌐 繁體中文 English 简体中文 العربية
أبحاث Nous · معهد ماساتشوستس للتكنولوجيا مفتوحة المصدر · 2026

كيفية نشر وكيل Hermes على Oracle VM مجانًا

OCI Free Tier ARM في الممارسة · Always Free: 2 vCPU / 12GB RAM (منذ 2026-06-15) · PAYG: 4 OCPU / 24GB دون تأثر (انظر §15) · نظام 24/7
وكيل الذكاء الاصطناعي السحابي بدون تكلفة، تم التخلص من جميع المخاطر بالنسبة لك

⚡ يُحدَّث هذا الدليل باستمرار (آخر قياس 2026-09). يجب إبقاء جميع الموارد ضمن حصة "Always Free" وإلا فستُفرض رسوم؛ حسابات PAYG غير متأثرة بتنصيف 2026-06-15 (انظر §15).
جدول المحتويات
0%
أبحاث Nous · MIT مفتوح المصدر

نشر Hermes Agent
على Oracle VM مجانًا

Always Free ARM · وكيل ذكاء اصطناعي 24/7 بتكلفة صفر

2vCPU
12GB RAM
200GB قرص
0شهريًا ($)
24/7تشغيل
📝
سجّل OCI
🖥
أنشئ ARM VM
️
إعداد SSH
🔑
ثبّت Hermes
📦
اربط نموذج API
🧠
systemd يعمل
✅
اكتمل النشر
يعمل 24/7 مجانًا · إعادة تشغيل تلقائي
HERMES AGENT · ORACLE FREE TIER
البداية · 0–4 0 البنية العامة 1 تسجيل حساب 2 إنشاء الخادم 3 تهيئة SSH 4 تثبيت Hermes
النشر · 5–10 5 الإعداد الأولي 6 مفتاح API للنموذج 7 بوابة systemd 8 روبوت Telegram 9 ردود بالصينية 10 جدار الحماية
متقدم وتشغيل · 11–16 11 مرجع الأوامر 12 الأخطاء الشائعة 13 واجهة الويب 14 النسخ الاحتياطي والصيانة 15 تنصيف الطبقة المجانية 16 مراقبة الاستهلاك الملحق
0. الهندسة المعمارية

0كيفية النشر (نظرة عامة على البنية)

Hermes Agent هو إطار عمل مفتوح المصدر للذكاء الاصطناعي (بروتوكول MIT) تم تطويره بواسطة Nous Research - فهو يقرأ الملفات ويكتب التعليمات البرمجية وينفذ الأوامر ويتحكم في المتصفحات على الجهاز. إنه غير مرتبط بأي مصنع للنماذج ويحتوي على بوابة Telegram مدمجة. ضعه على جهاز VM المجاني الدائم من Oracle وسيصبح وكيل سحابي يعمل بالذكاء الاصطناعي على مدار 24 ساعة طوال أيام الأسبوع دون انقطاع.

رسائل برقية→ بوابة هيرميس→ واجهة برمجة تطبيقات ديب سيك→ رد الذكاء الاصطناعي→ دردشة برقية

إدارة خدمة systemd: التشغيل التلقائي عند التمهيد، وإعادة التشغيل تلقائيًا بعد التعطل، وفصل SSH، كل ذلك يعمل كالمعتاد.

💰

مجانا إلى الأبد

ARM 2 vCPU + ذاكرة 12 جيجابايت + قرص 200 جيجابايت (Always Free، منذ 2026-06-15)؛ حساب PAYG يحتفظ بـ 4 OCPU / 24GB (انظر §15)

🔄

حرية النموذج

يمكنك الاختيار من بين DeepSeek / OpenAI / Anthropic / Google، ما عليك سوى تغيير المورد وتغيير التكوين.

💬

برقية الأصلي

بوابة مدمجة، وهي خدمة نظام تقوم بالرد تلقائيًا على مدار الساعة طوال أيام الأسبوع

🖥️

صفر القلق التشغيلي

إعادة التشغيل التلقائي بعد التعطل + سجل Journald + النسخ الاحتياطي عن بعد، لا يمكنك حتى النوم.

1. سجل

1قم بالتسجيل للحصول على حساب Oracle Cloud Free Tier

انتقل إلى صفحة التسجيل

https://signup.cloud.oracle.com/

املأ اسمك وبريدك الإلكتروني والبلد/المنطقة.

اختر المنطقة الرئيسيةمفتاح

تأكد من الاختياريدعم مثيلات Ampere ARMالمنطقة (لا يمكن تغييرها بعد المنطقة الرئيسية):
أوساكا / طوكيو / باريس / فرانكفورت / أشبورن / فينيكس كلها مدعومة.

إذا اخترت المنطقة الرئيسية الخاطئة، فلن تكون هناك مثيلات ARM - وسيحدد هذا ما إذا كان سيكون لديك 4 أجهزة خالية من vCPU لاحقًا.

التحقق من بطاقة الائتمان

مطلوب بطاقة ائتمان أو خصم صالحة. ستقوم Oracle بخصم العقد مؤقتًا1 دولار أمريكيالتحقق والعودة بعد بضعة أيام.لا يتم قبول البطاقات الافتراضية أو المدفوعة مسبقًا.

في انتظار التنشيط

عادة بضع دقائق إلى بضع ساعات. قم بتسجيل الدخول بعد تلقي رسالة التنشيط الإلكترونيةcloud.oracle.com.

⚠️ مجاني لا يعني غير محدود:الموارد التي تتجاوز الحد "المجاني دائمًا" ستتحمل رسومًا. يوصى بالترقية إلى Pay-As-You-Go (لا يزال 0 دولارًا، ولكن يمكن حلها عندما تكون السعة غير كافية، وهو أيضًا ترياق لنقص السعة باستخدام ARM المجاني).
2. إنشاء جهاز افتراضي

2إنشاء مثيل حوسبة OCI (VM)

افتح صفحة الإنشاء

وحدة تحكم OCI →حساب → المثيلات → إنشاء مثيل. يجب أن تعرض المنطقة التسمية "المؤهلة مجانًا دائمًا".

اختيار ملف الصورة

تغيير الصورة → اختيارأوبونتو 22.04 LTS أو 24.04 LTS.

اختر مواصفات المثيليوصى باستخدام ARM Ampere

يخططمواصفةاقتراح
الذراع أمبير A1VM.Standard.A1.Flex- 2 وحدات معالجة مركزية + 12 جيجا بايت رام (كان 4/24 قبل 2026-06-15)✅ القوة الرئيسية (الأكبر ضمن الحصة المجانية)
x86مايكروVM.Standard.E2.1.Micro— 1/8 وحدة المعالجة المركزية + 1 جيجابايت❌ رفيع جدًا، ولا يصلح إلا للاختبار

مفتاح الشبكة + SSH

استخدم شبكة VCN/الشبكة الفرعية الافتراضية وحدد "تعيين عنوان IPv4 عام". حدد SSH "لصق المفاتيح العامة" والصق مفتاحك العام (قم بإنشائه إذا لم يكن متاحًا محليًا):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

قم بزيادة حجم قرص التمهيد إلى 200 جيجابايتقبعة مجانية

عرض الخيارات المتقدمة → حجم التمهيد → حجم مخصص → أدخل200(غيغابايت). الافتراضي هو 50 جيجابايت. ليس من المناسب توسيعه أولاً قبل التنزيل.

إنشاء وتذكر IP العام

انتظر حتى تتغير الحالة إلى "قيد التشغيل" وقم بتسجيل عنوان IP العام الأدنى (على سبيل المثال130.123.45.67).

3. سش

3قم بتوصيل VM وتهيئة النظام

اتصال SSH

ssh -i ~/.ssh/id_rsa ubuntu@<your public IP>

نظام المستخدم الافتراضي لأوبونتوubuntu؛ أوراكل لينكس أولاًopc.

تحديث النظام

sudo apt update && sudo apt upgrade -y

تثبيت الأدوات الأساسية + تحديد المنطقة الزمنية

sudo apt install -y curl git wget nano vim ufw build-essential sudo timedatectl set-timezone Asia/Hong_Kong

قم بتشغيل جدار الحماية UFW (الطبقة الأولى)

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable

⚠️ تذكر:أوراكل لديها طبقتين من جدار الحماية— بالإضافة إلى UFW/iptables داخل الجهاز الظاهري، توجد أيضًا قائمة الأمان الخاصة بـ OCI VCN (تمت مناقشتها في القسم 10). يجب فتح كلا الطابقين أولاً.

4. التثبيت

4تثبيت وكيل هيرميس

التثبيت بنقرة واحدة

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

الإكمال التلقائي: تثبيت uv → إنشاء Python 3.11 venv → تثبيت أكثر من 100 تبعية → تثبيت Node.js → تثبيت cua-driver.

إعادة تحميل + التحقق

source ~/.bashrc hermes --version

إلى رقم الإصدار (على سبيل المثالhermes 0.14.0) يعني النجاح. مسار التثبيت هو~/.local/bin/hermes، المنصوص عليها~/.hermes/.

⚠️ حفرة الاختبار الفعلي لـ ARM: فشل تنزيل HTTP/2.قد يتم الإبلاغ عن البرنامج النصي للتثبيت عند تنزيل Node.jscurl: (92) HTTP/2 stream error. حل:Ctrl+Cالإنهاء → تنزيل Node.js يدويًا لـ ARM باستخدام HTTP/1.1:
curl --http1.1 -L "https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-arm64.tar.gz" -o /tmp/node.tar.gz mkdir -p ~/.hermes/node tar -xzf /tmp/node.tar.gz -C ~/.hermes/node --strip-components=1 rm /tmp/node.tar.gz
إذا قمت بإعادة تنفيذ البرنامج النصي للتثبيت، فسيتم تخطي Node.js الذي تم تنزيله.
5. الإعداد

5الإعدادات الأولية (معالج الإعداد)

بدء المعالج

hermes setup

الخيارات في لمحة

  • وضع الإعداد: إعداد سريع (سريع) أو إعداد مخصص (مفصل)
  • الواجهة الخلفية للمحطة:الخلفية المحلية
  • منصة المراسلة: حدد "تخطي - الإعداد لاحقًا" وقم بإعداد Telegram بشكل منفصل (القسم 7-8)

ينهي

إعداد الكتابة~/.hermes/config.yaml، المفتاح مكتوب~/.hermes/.env.

6. مفتاح API

6تعيين موفر النموذج ومفتاح API

هيرميس تدعم أي مورد. ما يلي يستخدم DeepSeek كمثال (أداء عالي التكلفة، لا يتطلب الدفع في الخارج).

أو مفتاح DeepSeek API

platform.deepseek.com→ التسجيل/تسجيل الدخول → مفاتيح واجهة برمجة التطبيقات → إنشاء مفتاح (sk-بداية). المستخدمين الجدد لديهم حصة مجانية.

قم بتأكيد ملف config.yaml

nano ~/.hermes/config.yaml
provider: deepseek model: deepseek-v4-pro base_url: https://api.deepseek.com/v1

اكتب إلى .env

DEEPSEEK_API_KEY=sk-your-deepseek-key

التحقق من الاتصال

hermes chat

أدخل "مرحبًا" واستقبل الرد بنجاح.Ctrl+Cيترك.

⚠️ المأزق: هناك نوعان من مفتاح DeepSeek!قد يكون الأشخاص الذين استخدموا Claude Code + DeepSeek مخطئين - أحدهما يستخدم بواسطة Claude CodeANTHROPIC_AUTH_TOKEN، أحدهما هو المفتاح الأصلي لمنصة DeepSeek،كلاهما لهما نفس التنسيق ولكن بقيم مختلفة. استخدم المفتاح الأصلي للمنصة؛ الإبلاغ 401 يعني خطأ رئيسي. اختبار سريع:
curl https://api.deepseek.com/v1/chat/completions \ -H "Authorization: Bearer sk-你的key" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-v4-pro","messages":[{"role":"user","content":"hi"}]}'
200 = صالح، 401 = غير صالح.
7. نظام البوابة د

7تثبيت بوابة هيرميس (خدمة systemd)

على خادم Linux، يجب على البوابة تشغيل systemd من أجل: البدء التلقائي عند التمهيد، وإعادة التشغيل التلقائي عند التعطل، والبقاء على اتصال على مدار الساعة طوال أيام الأسبوع، ومواصلة التشغيل بعد قطع اتصال SSH.

تثبيت البوابة

hermes gateway install

إنشاء ملف خدمة systemd يدويًاالخطوات الأساسية

⚠️المأزق الأكبر هو أن systemd لا يستطيع قراءة ملفات .env!يجب كتابة متغيرات البيئة مباشرة في ملف الخدمة، وإلا ستكون جلسة الروبوت "لم يتم تمكين منصات المراسلة".

sudo nano /etc/systemd/system/hermes-gateway.service
[Unit] Description=Hermes Gateway Service After=network.target [Service] Type=simple User=ubuntu WorkingDirectory=/home/ubuntu ExecStart=/home/ubuntu/.local/bin/hermes gateway Restart=always RestartSec=10 Environment=PATH=/home/ubuntu/.local/bin:/usr/local/bin:/usr/bin:/bin # المفتاح: systemd لا يقرأ .env، ويجب كتابة متغيرات البيئة هناك مباشرة! Environment=DEEPSEEK_API_KEY=sk-your-deepseek-key Environment=TELEGRAM_BOT_TOKEN=你的Bot Token Environment=TELEGRAM_ALLOWED_USERS=你的Telegram數字ID Environment=TELEGRAM_HOME_CHANNEL=你的Telegram數字ID Environment=GATEWAY_ALLOW_ALL_USERS=true [Install] WantedBy=multi-user.target

النقاط الرئيسية للتعديل:User/WorkingDirectory/ExecStartالتغيير وفقًا للمسار الفعلي؛ خمسةEnvironment=يجب ملء كل شيء بالقيم الحقيقية.

ابدأ + ابدأ عند التمهيد

sudo systemctl daemon-reload sudo systemctl enable hermes-gateway sudo systemctl start hermes-gateway

التحقق + قراءة السجلات

sudo systemctl status hermes-gateway sudo journalctl -u hermes-gateway -f

عرض الحالةactive (running)، يرى السجل✓ telegram connectedهذا هو النجاح.

إعداد دوران السجل (لمنع انفجار القرص)

sudo nano /etc/systemd/journald.conf
SystemMaxUse=200M SystemKeepFree=500M RuntimeMaxUse=100M
sudo systemctl restart systemd-journald
الدروس المستفادة من الاختبار الفعلي (جهازنا):لتعديل ملف الخدمة يمكنك كتابته محليا وتحميله أولا -sudo cpيدخل/etc/systemd/system/مرة أخرىdaemon-reloadفقط يجب أن. فضلاً عن ذلكقبل استخدام systemd على الروبوت، يجب عليك إنهاء عملية الاقتراع القديمة.وإلا فسوف يقوم Telegram بالإبلاغ عن تعارض 409 (يتنافس تحديثان على نفس الروبوت في نفس الوقت). أخيراhermes git pull --rebaseتذكر إعادة تشغيل الخدمة بعد التحديث.
8. برقية

8الوصول إلى بوت تيليجرام

قم ببناء روبوت مع @BotFather

بحث برقية@BotFather→/newbot→ تعيين الاسم/اسم المستخدم →رمز بوت(شكل123456:ABC-DEF1234ghiJKL). قم بتخزينه بشكل صحيح وتجنب التسرب.

احصل على معرف Telegram الرقمي الخاص بك

يبحث@userinfobot→/start→ معرف رقمي (على سبيل المثال123456789).

تحديث ملفات خدمة systemd

sudo nano /etc/systemd/system/hermes-gateway.service
Environment=TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghiJKL Environment=TELEGRAM_ALLOWED_USERS=123456789 Environment=TELEGRAM_HOME_CHANNEL=123456789 Environment=GATEWAY_ALLOW_ALL_USERS=true
sudo systemctl daemon-reload sudo systemctl restart hermes-gateway

يؤكد

سجل انظر✓ telegram connected، ثم تحدث إلى الروبوت الخاص بك على Telegram واحصل على رد.

نصائح لاستكشاف الأخطاء وإصلاحها:ليس لدى الروبوت أي استجابة → ①sudo systemctl status hermes-gatewayتشغيل النظام → ② السجلjournalctl -u hermes-gateway -f→ ③ انظرNo messaging platforms enabled= لم تتم قراءة الرمز المميز → ④ تحقق من بيئة ملف الخدمة → ⑤daemon-reload+restart→ ⑥ تحقق مرة أخرى.
9.SOUL.md

9ضبط الرد الصيني (SOUL.md)

تحرير SOUL.md

cp ~/.hermes/SOUL.md ~/.hermes/SOUL.md.backup nano ~/.hermes/SOUL.md

أضف قواعد اللغة في الأعلى:

قاعدة اللغة الحرجة: يجب عليك الرد باللغة الصينية (繁体中文) في جميع الأوقات. The user speaks Chinese. Never use English unless the user explicitly asks.

(اختياري) أدخل المعرفة بالمشروع

يمكن لـ SOUL.md كتابة الهوية والمهارات وبنية المشروع ومواصفات الترميز والأوامر شائعة الاستخدام - وتصبح "الذاكرة طويلة المدى" لشركة Hermes ويتم الرجوع إليها في كل محادثة.

إعادة التشغيل تصبح نافذة المفعول

sudo systemctl restart hermes-gateway

بعد تغيير SOUL.md، يجب عليك إعادة تشغيل البوابة حتى تدخل حيز التنفيذ.

10. جدار الحماية

10جدار الحماية وقواعد الأمان (يجب تشغيل كلتا الطبقتين)

أوراكل VM لديهاجدار الحماية ذو طبقتين: قائمة الأمان الخاصة بـ OCI VCN (الطبقة السحابية) + UFW (طبقة النظام) داخل المثيل. لن يُسمح بمرور كلا الطابقين حتى يتم إخلاءهما أولاً.

▎10.1 قائمة أمان OCI (الطبقة السحابية)

فتح القواعد الواردة

وحدة تحكم OCI ← الشبكات ← شبكات السحابة الافتراضية ← حدد VCN ← الشبكات الفرعية ← قوائم الأمان ← قائمة الأمان الافتراضية ← إضافة قواعد الدخول:

نوع المصدرالمصدر CIDRميناءيستخدم
CIDR0.0.0.0/0إثنان وعشرونسش
CIDR0.0.0.0/080HTTP
CIDR0.0.0.0/0443HTTPS

إذا قمت بتثبيت WebUI، فستحتاج إلى فتح المنفذ المقابل (مثل 8787).

▎10.2 جدار الحماية المثيل (طبقة النظام)

sudo ufw status verbose

يجب أن نرى22 / 80 / 443 ALLOW IN. قد يحتاج مستخدمو Oracle Linux إلى تغيير iptables مباشرةً إذا لم يستجب UFW.

⚠️ دروس من الاختبار الفعلي: "NSG ≠ iptables" من OCI.إذا قمت بفتح قائمة الأمان في وحدة التحكم ولكنك لا تزال غير قادر على الاتصال، فمن الأفضل التحقق من iptables في VM - تأكد أولاً مما إذا كانت طبقة OCI (قائمة الأمان / NSG) مسموحة أم لا. الطابقين مستقلين.أي طبقة تمنعها سوف تفشل.. Zhong You: في كثير من الأحيان تم احتلال 443 بواسطة خدمات أخرى (مثل وكيل صندوق الغناء). قبل فتح المنفذss -tlnpنلقي نظرة على الموقع أدناه.
11. أمر بالفحص السريع

11ورقة الغش للأوامر المشتركة

تعليماتتأثير
hermes chatابدأ وضع المحادثة الطرفية
hermes --tuiبدء تشغيل واجهة TUI
hermes setupقم بتشغيل معالج الإعداد مرة أخرى
hermes updateتحديث وكيل Hermes (للإصدار المصدر)git pull --rebase)
hermes gateway install / status / restartتثبيت البوابة/الحالة/إعادة التشغيل
hermes cron list / statusقائمة/عرض المهام المجدولة
sudo systemctl status hermes-gatewayالتحقق من حالة الخدمة
sudo systemctl enable hermes-gatewayابدأ تلقائيًا عند التمهيد
sudo journalctl -u hermes-gateway -fعرض سجلات الخدمة في الوقت الحقيقي
tail -f ~/.hermes/logs/gateway.logعرض سجلات هيرميس على الفور
df -h / free -hاستخدام القرص/الذاكرة
12. خطوة على الفخ

12مجموعة من المزالق (جميعها تم اختبارها شخصيا)

س: يُبلغ الروبوت عن تعارض 409 بعد تشغيل systemd؟

سبب:لا تزال عملية الاقتراع القديمة تتنافس مع البوابة للحصول على رمز الروبوت.
يحل:قبل البدء بالخدمةpkill -f "hermes"أو مباشرةpkill -f polling،مرة أخرىsystemctl start hermes-gateway.

س: تم تشغيل البوابة ولكن الروبوت لا يستجيب تمامًا؟

سبب:9 Systemd لا يقرأ متغيرات البيئة. يظهر السجلNo messaging platforms enabledأي أنه لم يتم تحميل الرمز المميز.
يحل:قم بتأكيد ملف الخدمةEnvironment=يتم ملء كافة المتغيرات الخمسة في →daemon-reload+restart→ اقرأ السجل مرة أخرى.

س: تُبلغ DeepSeek API عن فشل المصادقة 401؟

سبب:يتم استخدام المفتاح الخاطئ (رمز كلود الأول) أو تنتهي صلاحية المفتاح.
يحل:استخدم الضفيرة لاختبار المفتاح (انظر الفقرة 6) ← إعادة بناء النظام الأساسي ← تحديث ملف الخدمةDEEPSEEK_API_KEY→daemon-reload+restart.

س: فشل/انتهت مهلة اتصال SSH؟

التحقق من الطلب:① هل قائمة أمان OCI مفتوحة؟ 22 → ② IP العام نعم → ③ أذونات المفاتيحchmod 400 ~/.ssh/id_rsa→ ④ اسم المستخدم (لـ Ubuntuubuntu).

س: هل نفدت الذاكرة (OOM)؟

في الأساس، لن تواجه هذا مع مثيلات ARM 2 vCPU / 12 جيجابايت. يحتاج x86 micro إلى إضافة Swap أولاً:
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
انضم مرة أخرى/etc/fstabفعالة بشكل دائم.

س: هل ستقوم شركة Oracle بإعادة تدوير جهازي؟

ستقوم Oracle بإعادة تدوير المثيلات المجانية ذات فترات طويلة من النشاط المنخفض. تعد عملية تشغيل البوابة على مدار الساعة طوال أيام الأسبوع بحد ذاتها نشاطًا مستمرًا؛ إذا كنت تريد أن تكون أكثر استقرارًا، يمكنك إضافة keepalive:
crontab -e→ انضم*/30 * * * * echo "keepalive $(date)" >> ~/keepalive.log

س: هل أحتاج إلى إعادة التشغيل بعد التحديث؟

apt upgradeبعد تحديث النواة، عليك القيام بذلكsudo rebootفعالة أولا؛hermes git pull --rebaseبعد تحديث الكود المصدري، عليك القيام بذلكsudo systemctl restart hermes-gateway.

13.WebUI

13متقدم: Hermes WebUI (اختياري)

هل تريد التفاعل مع الوكيل باستخدام واجهة المتصفح دون استخدام SSH؟ فقط قم بتثبيت WebUI.

استنساخ + تعيين كلمة المرور

cd ~ git clone https://github.com/nesquena/hermes-webui.git hermes-webui cd hermes-webui echo "HERMES_WEBUI_PASSWORD=تعيين كلمة مرور قوية" > .env

بناء خدمة systemd

sudo nano /etc/systemd/system/hermes-webui.service
[Unit] Description=Hermes WebUI After=network.target [Service] Type=simple User=ubuntu WorkingDirectory=/home/ubuntu/hermes-webui ExecStart=/home/ubuntu/hermes-webui/start.sh Restart=always RestartSec=5 [Install] WantedBy=multi-user.target

إطلاق + الوصول

sudo systemctl daemon-reload sudo systemctl enable hermes-webui sudo systemctl start hermes-webui

افتح المتصفحhttp://<Public IP>:8787، قم بتسجيل الدخول باستخدام كلمة المرور .env. تذكر قائمة أمان OCI لتمرير 8787.

(اختياري) إنشاء Nginx العكسي + HTTPS

sudo apt install nginx certbot python3-certbot-nginx -y sudo nano /etc/nginx/sites-available/hermes-webui
server { listen 80; server_name ai.yourdomain.com; client_max_body_size 500M; location / { proxy_pass http://127.0.0.1:8787; 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 Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
sudo ln -s /etc/nginx/sites-available/hermes-webui /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx sudo certbot --nginx -d ai.yourdomain.com
14. النسخ الاحتياطي

14توصيات النسخ الاحتياطي والصيانة

▎14.1 النسخ الاحتياطي المنتظم (أهم الملفات)

tar -czvf hermes-backup-$(date +%Y%m%d).tar.gz \ ~/.hermes/config.yaml ~/.hermes/.env ~/.hermes/SOUL.md \ ~/.hermes/logs/ /etc/systemd/system/hermes-gateway.service # التراجع إلى المحلية scp ubuntu@<your public IP>:~/hermes-backup-*.tar.gz ./

config.yaml(يثبت)،.env(مفتاح)،SOUL.md(الذاكرة طويلة المدى)، ملفات خدمة systemd - هذه الإضافات الأربعة هي "روح" الجهاز، بدونها تكون مثل البدء من الصفر.

▎14.2 إيقاع الصيانة

تكرارما يجب القيام به
أسبوعيsudo apt update && sudo apt upgrade -y+sudo apt autoremove -y
كل شهرsudo journalctl --vacuum-time=30d;df -h/free -hيفحص
كل 3-6 أشهرتدوير مفتاح API، والتحقق من سلامة محرك الأقراص/النسخ الاحتياطي عن بعد
⚠️ لا تفترض أن تحديث apt "آمن": ترقية docker-ce / containerd تعيد تشغيل خدمة Docker، فتُعاد جميع الحاويات. قياس فعلي (2026-09-16): أثناء إعادة التشغيل لم تستطع Pi-hole ربط منفذها فتوقفت بصمت، وسقطت معها كل مصافحات الوكيل — وأظهر العملاء "المنفذ غير مفتوح" مع أن 443 و853 كانتا تستمعان. بعد أي ترقية تحقّق من ثلاثة أمور: docker ps لكل الحاويات، وsystemctl status sing-box، واتصال حقيقي بالوكيل (انظر §16).

▎14.3 توصيات السلامة

زائدة

15 ⚠️ 2026-06-15: Oracle خفّض الطبقة المجانية بصمت

في 2026-06-15 غيّرت Oracle بصمت وثائق Always Free بدون أي إعلان أو بريد إلكتروني: انخفض حد ARM من 4 OCPU / 24GB → 2 OCPU / 12GB (السقف الشهري 3,000 OCPU-hrs + 18,000 GB-hrs → 1,500 + 9,000). حركة المرور الصادرة تبقى 10TB/شهر (دون تغيير).

التكوين (شغّال طوال الشهر)الاستهلاكالسقف الجديد 1,500 + 9,000
4 OCPU / 24GB (قديم)2,920 OCPU-hrs + 17,520 GB-hrs❌ تجاوز مزدوج
2 OCPU / 12GB (جديد)1,460 OCPU-hrs + 8,760 GB-hrs✅ مناسب تمامًا

▎15.1 الحساب المجاني مقابل PAYG — مصير مختلف

⚠️ التحذير الوحيد (أقرّت به Oracle): المثيل المتوقف يمكن إعادة تشغيله طبيعيًا؛ أما إذا أُنهي، فإعادة إنشاء نفس التكوين تعتمد على سعة ARM في أوساكا حينها. التأمين جاهز: نسخة احتياطية لقرص التمهيد OCI + نسخة خارجية على Drive.

▎15.2 النص الرسمي للسياسة (مقتطفات أساسية)

المصدر: docs.oracle.com — Always Free Resources

"All tenancies get the first 1,500 OCPU hours and 9,000 GB hours per month for free for VM instances using the VM."
"you can create one or two OCI Ampere A1 Compute instances, 2 OCPUs total."

▎15.3 رد الدعم الرسمي حرفيًا (2026-08-03، استفسار PAYG)

"Thank you for providing the details. Since your tenancy is a Pay As You Go (PAYG) account, you do not need to worry about the recent Always Free Ampere A1 resource limit update. Your existing 4 OCPU / 24 GB A1 instance does not need to be resized as a result of this policy change. You will not be billed for your existing 4 OCPU / 24 GB A1 instance solely because of the Always Free limit update. The reduction to 2 OCPUs / 12 GB RAM applies only to Always Free tenancies, not to PAYG accounts. There is no deadline requiring PAYG customers to resize existing A1 instances because of this change. If your instance is stopped, you can start it again normally. However, if it is terminated, the ability to recreate an instance with the same configuration depends on current capacity availability in your selected region. The reduction in the Always Free Ampere A1 allocation applies only to Always Free tenancies. PAYG and other paid tenancy types are not affected by this specific policy change. Based on the information available, your existing 4 OCPU / 24 GB A1 instance on your PAYG tenancy will continue to operate under the terms applicable to your paid account and will not incur charges solely because of this Always Free policy update."

▎15.4 إجماع المجتمع (2026-07)

▎15.5 التأمين الثلاثي (مُجرّب)

  1. OCI Boot Volume Backup: Console → Compute → Instance → Boot volume → Create backup (استعادة كاملة سحابيًا، ~10 دقائق)
  2. نسخة احتياطية خارجية على Drive: tar.gz للإعدادات (~/.hermes, nginx, systemd, crontab) يوميًا → Google Drive (انظر §14)
  3. لا توقف المثيل عشوائيًا: خلال فترة grandfather قد لا تستعيده أبدًا

▎15.6 بدائل (إذا انهارت Oracle)

الحاجةالخيارالتكلفة
IP ياباني + الأرخصالاحتفاظ بـ Oracle 2/12$0
IP ياباني (مدفوع)Contabo أوساكا 4vCPU/8GB | Vultr طوكيو 1-2GB~€7/شهر | $5-6/شهر
بدون حاجة لـ IP يابانيRackNerd 1GB | GCP e2-micro~$1/شهر | $0
لأغراض GFWVLESS/REALITY (يعمل على أي VPS) + CF Worker احتياطيمن $0

💡 ملاحظة GFW: عناوين IP لمراكز بيانات Oracle/Contabo تميل للحظر مع الوقت؛ REALITY يقاوم الفحص النشط؛ CF Worker (edgetunnel) قناة احتياطية مجانية.

16 مراقبة الطبقة المجانية + تقرير الفاتورة اليومي (OCI Usage API)

لن تُخبرك Oracle بمقدار ما استهلكته من الحد المجاني — عادةً تكتشف ذلك عند ظهور رسوم. في هذا القسم نسحب الاستهلاك الحقيقي من Usage API الرسمي كل يوم، ونتوقّع نهاية الشهر، وننبّه عند تجاوز 90%، ثم يرسله Hermes إلى Telegram. كل الأرقام مباشرة من الـ API وليست مكتوبة يدويًا.

▎16.1 تثبيت OCI CLI ومفتاح API

bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" ~/bin/oci setup config # تفاعلي: Tenancy OCID / User OCID / Region / توليد المفاتيح

ثم من الـ Console: الصورة الرمزية (أعلى اليمين) → My profile → API keys → Add API key → الصق محتوى ~/.oci/oci_api_key_public.pem. وسجّل Tenancy OCID — فهو قيمة --tenant-id أدناه. بعد ذلك تقرأ كل الاستعلامات ~/.oci/config مباشرة دون تسجيل دخول.

الوثائق مقابل الواقع: في هذه النسخة من الـ CLI لا وجود لـ oci limits / oci iam limit*، لذا لا يمكن قراءة الحد المجاني من quota API — استخرجها من Usage API أدناه.

▎16.2 الأمران الأساسيان (مُختبران؛ الوثائق ناقصة)

TENANCY=ocid1.tenancy.oc1..xxxx # معرّف Tenancy الخاص بك S=$(date -d "$(date +%Y-%m-01)" +%Y-%m-%d) # أول يوم من الشهر E=$(date -d tomorrow +%Y-%m-%d) # (1) التكلفة (منذ بداية الشهر / الأمس) ~/bin/oci usage-api usage-summary request-summarized-usages \ --tenant-id $TENANCY \ --time-usage-started ${S}T00:00:00Z --time-usage-ended ${E}T00:00:00Z \ --granularity MONTHLY --query-type COST --output json # (2) استهلاك الطبقة المجانية (مجمّع حسب service + skuName) ~/bin/oci usage-api usage-summary request-summarized-usages \ --tenant-id $TENANCY \ --time-usage-started ${S}T00:00:00Z --time-usage-ended ${E}T00:00:00Z \ --granularity MONTHLY --query-type USAGE \ --group-by '["service","skuName"]' --output json
صف الـ API (service · skuName)مقياس الطبقة المجانيةالوحدة
Compute · Standard - A1معالج ARMOCPU·ساعة
Compute · Standard - A1 - Memoryذاكرة ARMGB·ساعة
Block Storage · Block Volume - Freeإجمالي التخزينGB
Virtual Cloud Network · Outbound Data Transfer*الحركة الصادرةGB
⚠️ ثلاث مصائد مُختبرة:
  • المسار الصحيح هو usage-api usage-summary request-summarized-usages. أما usage-api request-summarized-usages وusage-api query ... (للاستعلامات المحفوظة فقط) فيعطيان Error: No such command.
  • عندما لا يجد oci ... list شيئًا فإنه يعيد rc=0 مع stdout فارغ تمامًا (وليس {"data": []}) → يفشل json.loads. تعامل معه بـ if not out: return {"data": []}.
  • الكلمة المفتاحية Standard - A1 تطابق أيضًا صف الذاكرة → ساعات OCPU = qty("A1") − qty("A1 - Memory")، وإلا تضاعف الرقم.

▎16.3 الربط مع Hermes: إرسال يومي إلى Telegram عند 08:00

# 1) سكربت التقرير (ما يطبعه stdout هو نص رسالة Telegram) nano /home/ubuntu/oci-billing/oci_billing_report.py # 2) يقبل Hermes cron ملفات ~/.hermes/scripts/ فقط، لذا أضف غلافًا رقيقًا echo '#!/bin/bash' > ~/.hermes/scripts/oci_billing_report.sh echo 'exec python3 /home/ubuntu/oci-billing/oci_billing_report.py' >> ~/.hermes/scripts/oci_billing_report.sh chmod +x ~/.hermes/scripts/oci_billing_report.sh # 3) أنشئ مهمة no_agent (بدون أي توكنات LLM؛ يُرسل stdout كما هو) hermes cron create "0 8 * * *" --name "OCI daily billing report" \ --script oci_billing_report.sh --no-agent --deliver origin # 4) شغّلها مرة الآن hermes cron run <job_id>

--no-agent يعني عدم استدعاء أي LLM — يُرسل stdout كما هو، وstdout الفارغ لا يرسل شيئًا (نمط watchdog). غيّر الموعد بتعديل تعبير cron، مثل "30 7 * * 1" = كل اثنين 07:30. crontab النظام يكفي أيضًا، لكن hermes cron يضيف سجل تنفيذ وإشعارات فشل.

▎16.4 مخرجات حقيقية (أوساكا A1 · 4 OCPU / 24GB · PAYG)

-- تقرير فاتورة Oracle OCI اليومي -- 📅 2026-09-16 · أوساكا ap-osaka-1 -- 💰 التكلفة (HKD) -- الأمس: 0.00 هذا الشهر: 0.00 -- 🎁 استهلاك الطبقة المجانية هذا الشهر -- معالج ARM: 1,484.0 / 3,000 OCPU·ساعة (49%) ذاكرة ARM: 8,904.0 / 18,000 GB·ساعة (49%) الحركة الصادرة: 53.6 / 10,240 GB (1%) التخزين: 85.7 / 200 GB (43%) -- 📈 توقّع نهاية الشهر (حتى 30 سبتمبر) -- معالج ARM: ~2,782.5 / 3,000 OCPU·ساعة (93%) ذاكرة ARM: ~16,695.0 / 18,000 GB·ساعة (93%) ⚠️ قريب من الحد: معالج ARM، ذاكرة ARM -- 🖥️ الأجهزة -- قيد التشغيل: 1 · instance-20260508-2242 · VM.Standard.A1.Flex 4.0 OCPU / 24.0 GB -- 💡 ما زال متاحًا -- أجهزة AMD الصغيرة: يمكن إنشاء 2 (E2.1.Micro · 1/8 نواة / 1GB) قواعد البيانات المستقلة: 2 غير مستخدمة موازنات الحمل: 1 غير مستخدم

▎16.5 أين تُكتب الحدود (مرة واحدة)

الحدود قيم رسمية ثابتة (مقام فقط) — اجعلها ثوابت في أعلى السكربت؛ أما الاستهلاك فدائمًا مباشر من الـ API:

LIMITS = { "arm_ocpu": 3000.0, # ساعات OCPU/شهر (حسابات Always Free: 1500) "arm_mem": 18000.0, # ساعات GB/شهر (حسابات Always Free: 9000) "egress": 10240.0, # GB/شهر (10TB، متطابق للنوعين) "block": 200.0, # إجمالي GB (متطابق للنوعين) } WARN_PCT = 90.0 # تنبيه عند تجاوز التوقّع 90%

مُرفَقالملحق: مسار الملف + حد الموارد + قائمة الإكمال

▎A.1 نظرة عامة على مسارات الملفات

طريقيوضح
~/.local/bin/hermesهيرميس البرنامج الرئيسي
~/.hermes/config.yamlالملف الرئيسي
~/.hermes/.envمتغيرات/مفاتيح البيئة
~/.hermes/SOUL.mdكلمات موجهة للنظام (الذاكرة طويلة المدى)
~/.hermes/logs/gateway.logسجل البوابة
/etc/systemd/system/hermes-gateway.serviceملف خدمة بوابة systemd

▎A.2 OCI دائمًا حد الموارد المجاني

المواردحد
ARM أمبير A1 مثال2 OCPU + 12GB رام (انخفض منذ 2026-06-15؛ الحسابات القديمة تستطيع الاستمرار بـ 4/24 حتى توقف المثيل)
مثيل AMD x86ما يصل إلى 2 E2.1.Micro (1/8 OCPU + 1 جيجابايت لكل منهما)
إجمالي سعة قرص التمهيد200 جيجابايت (مشتركة في جميع الحالات)
IPv4 العامما يصل إلى 6
عرض النطاق الترددي للشبكة1 جيجابت في الثانية لكل وحدة معالجة مركزية افتراضية

▎A.3 قائمة مراجعة إكمال النشر

✅تحقق من العناصر
□تم إنشاء VM (ARM 2 OCPU / 12GB) وتم توصيل SSH به
□hermes --versionهناك الإخراج
□مفتاح DeepSeek API صالح (curl 200)
□خدمة systemd نشطة + ممكّنة، راجع السجل✓ telegram connected
□اختبار Telegram الفعلي لديه الرد
□قامت SOUL.md بإعداد الرد الصيني التقليدي
□تم تمكين قائمة أمان OCI + جدار الحماية ثنائي الطبقة UFW
□تم إنشاء استراتيجية النسخ الاحتياطي (tar.gz + pull back to local)
روابط ذات صلة

هل أعجبك هذا الدليل؟ اشترِ لي قهوة ☕

☕ اشترِ لي قهوة