نجی Telegram بوٹ VPS ایجنٹ تک سہولت دیتا ہے، مگر گیٹ وے کا جڑنا صحیح شخص کو جواب کا ثبوت نہیں۔ نئے Hermes Agent ڈیٹا فولڈر سے شروع کر ایک عددی Telegram ID قبول، حقیقی جواب اور مصدقہ توقف دیکھتے ہیں۔ بنیاد NousResearch کی v0.22.2 Docker ہدایات اور Telegram ہدایات ہیں، 19 اکتوبر 2026 کو جانچیں۔ BIG CHANGE نے اس کے لیے VPS نہیں چلایا، تصویر نہیں کھینچی، بوٹ نہیں بنایا اور ماڈل نہیں بلایا۔
بڑی تبدیلی
- کیا بدلا: ڈائجسٹ سے متعین، نسخہ جانچی Docker تصویر اور مخصوص
/opt/dataماؤنٹ اس گیٹ وے کے پروگرام و حالت کی شناخت دیتے ہیں۔ - یہ کیوں اہم ہے: عددی Telegram اجازت فہرست اور حقیقی نجی جواب بتاتے ہیں کہ مطلوب اکاؤنٹ اسے استعمال کر سکتا ہے۔
- کس بات کا خیال رکھیں: جوڑ یا عمومی اختیارات رسائی بڑھاتے ہیں؛ بےضرر درخواست ایجنٹ کے ٹول محدود نہیں کرتی۔ اجازت، لاگ، دوبارہ آغاز اور توقف دیکھیں۔
Linux VPS کو SSH سے سنبھالنے کا اختیار، چلتا Docker Engine اور میزبان بحالی رسائی، BotFather بوٹ بنانے کا Telegram اکاؤنٹ اور اہل Hermes ماڈل فراہم کنندہ اکاؤنٹ چاہیے۔ VPS ساخت و وسائل آفیشل amd64/arm64 تصویر سے ملائیں، وزارڈ سے پہلے رسائی و بل شرائط دیکھیں۔ Docker پہلے چلتا فرض ہے؛ تنصیب و فائر وال OS/فراہم کنندہ پر ہیں۔ میزبان سے Telegram اور ماڈل تک بیرونی رابطہ چاہیے۔ حالت کے لیے نجی فولڈر و محدود قارئین رکھیں: /opt/data اسناد، نشست اور لاگ رکھے گا۔ Docker ہدایت نامہ اسے مستقل مستند حالت کا ماخذ کہتا ہے۔
1. ترتیب سے پہلے تصویر متعین کریں
SSH سے جڑ کر اسی شیل میں رہیں۔ stable ٹیگ بدل سکتا ہے۔ تصویر کھینچیں، ذخیرے کا ڈائجسٹ لکھیں اور خود تصویر کا بتایا نسخہ 0.22.2 جانچیں۔ فرق، غائب ڈائجسٹ، پرانے ڈیٹا یا hermes نام کے کنٹینر پر رکیں۔ اصل نسخے کے لیے ہدایات تازہ یا موافق دستاویزی تصویر حاصل کر کے بڑھیں۔ ڈائجسٹ تصویر متعین کرتا ہے، خود نسخہ ثابت نہیں کرتا۔
set -eu
docker info >/dev/null
docker container inspect hermes >/dev/null 2>&1 && { echo 'Container hermes already exists; stop here.'; exit 1; }
HERMES_DATA="$HOME/.hermes"
if [ -e "$HERMES_DATA" ]; then echo 'Hermes data path already exists; stop here.'; exit 1; fi
mkdir -m 700 "$HERMES_DATA"
docker pull nousresearch/hermes-agent:stable
docker image inspect nousresearch/hermes-agent:stable --format '{{json .RepoDigests}}'
IMAGE_REF="$(docker image inspect nousresearch/hermes-agent:stable --format '{{index .RepoDigests 0}}')"
if ! printf '%s\n' "$IMAGE_REF" | grep -Eq '^nousresearch/hermes-agent@sha256:[0-9a-f]{64}$'; then
echo 'No valid repository digest; stop here.'; exit 1
fi
printf 'Pinned image: %s\n' "$IMAGE_REF"
VERSION_OUTPUT="$(docker run --rm "$IMAGE_REF" --version)"
printf 'Image version: %s\n' "$VERSION_OUTPUT"
if ! printf '%s\n' "$VERSION_OUTPUT" | grep -Eq '(^|[^0-9])v?0[.]22[.]2([^0-9]|$)'; then
echo 'Image version is not 0.22.2; stop here.'; exit 1
fiset -eu Docker نہ ملے، کھینچنا/معائنہ یا نسخہ کمانڈ ناکام ہو تو سلسلہ روکتا ہے۔ واضح جانچ خالی ڈائجسٹ یا مختلف نسخے پر بھی روکتی ہے۔ آگے ترتیب نہ کریں۔ درج nousresearch/hermes-agent@sha256:… قدر رکھیں۔ نیچے ترتیب و گیٹ وے IMAGE_REF لیتے ہیں، تاکہ ٹیگ بدل کر خاموشی سے کنٹینر نہ بدلے۔ قاری اصل VPS پر جانچے؛ مضمون میں مصدقہ تصویر ڈائجسٹ نہیں۔ میزبان کے اصلی فائل نظام پر نیا الگ فولڈر لیں؛ ایک ڈیٹا پر دو گیٹ وے نہیں۔
2. فراہم کنندہ اور ایک نجی مرسل مقرر کریں
ماؤنٹ فولڈر سے Docker ترتیب وزارڈ چلائیں۔ اکاؤنٹ کا مجاز ماڈل راستہ چنیں، تصدیق کریں، فراہم کنندہ/ماڈل دیکھیں۔ رسائی و فیس اکاؤنٹ کے مطابق۔ محفوظ ترتیب کامیاب ماڈل درخواست ثابت نہیں۔
docker run -it --rm -v "$HERMES_DATA:/opt/data" "$IMAGE_REF" setupTelegram میں @BotFather سے /newbot کے ذریعے بوٹ مانگ کر ٹوکن خفیہ رکھیں۔ مرسل کا عددی Telegram صارف ID پائیں، مثلاً Telegram ہدایت نامے کے مربوط طریقے سے؛ صارف نام ID نہیں۔ وزارڈ یا hermes gateway setup ٹوکن و فہرست لکھ سکتا ہے۔ دستی طور پر TELEGRAM_BOT_TOKEN=<private token> اور TELEGRAM_ALLOWED_USERS=<your numeric ID> ڈالیں $HERMES_DATA/.env میں، جو کنٹینر میں /opt/data/.env ہے۔ ٹوکن کمانڈ، تاریخ، مشترک نوٹ یا مضمون میں نہ ہو۔
اس $HERMES_DATA/config.yaml (/opt/data/config.yaml میں، کنٹینر کا مقام) غیرمجاز نجی پیغام کا عمومی برتاؤ مقرر کریں:
unauthorized_dm_behavior: ignoreترتیب کنٹینر نکلنے پر تصویر نے $HERMES_DATA کا مالک عملی UID 10000 کیا ہو سکتا ہے۔ آغاز .env کو موڈ 600 اور موجودہ config.yaml کو 640 تک محدود کرتا ہے؛ اسی آغاز کی پہلی نئی ترتیب بھی یہ سختی مانگ سکتی ہے۔ عام SSH لاگ اِن فائل نہ کھول پائے۔ چابیاں نہ بنیں تو مجاز میزبان منتظم وہ دو عین فائلیں sudo سے دیکھ/بدل کر مالک و نجی موڈ بحال کرے۔ UID 10000 ایڈیٹر لاگ اِن صارف کے $HOME سے نہ گزر سکے؛ اس لیے میزبان منتظم اختیار ہے۔ میزبان پر sudo اور vi ہوں تو غیرخفیہ مالک/موڈ پڑھ کر استعمال کریں۔ دوسرے UID یا گم فائل پر پہلے رسائی حل کریں۔
sudo stat -c '%u:%g %a %n' "$HERMES_DATA" "$HERMES_DATA/.env" "$HERMES_DATA/config.yaml"
# Expected: directory owner 10000 and mode 700; .env owner 10000 and mode 600.
# config.yaml should have owner 10000; its first-boot mode can vary.
sudo vi "$HERMES_DATA/.env"
sudo vi "$HERMES_DATA/config.yaml"
sudo chown 10000:10000 "$HERMES_DATA/.env" "$HERMES_DATA/config.yaml"
sudo chmod 700 "$HERMES_DATA"
sudo chmod 600 "$HERMES_DATA/.env"
sudo chmod 640 "$HERMES_DATA/config.yaml"
sudo stat -c '%u:%g %a %n' "$HERMES_DATA" "$HERMES_DATA/.env" "$HERMES_DATA/config.yaml"آخری stat نتیجے میں دونوں فائل UID/GID 10000، فولڈر موڈ 700, .env موڈ 600 اور config.yaml موڈ 640 ہوں۔ یہ میٹاڈیٹا ہے، اسناد نہیں۔ chown صرف ان دو فائلوں اور ایڈیٹر کے بدل پر لاگو ہے۔ اگر sudo یا vi نہ ہو تو مجاز میزبان طریقے سے وہی پڑتال کریں۔ ڈیٹا سب کو پڑھنے نہ دیں، کنٹینر صارف ری میپ نہ کریں۔
تبدیلی میں فراہم کنندہ ترتیب رکھیں۔ Telegram مخصوص unauthorized_dm_behavior اووررائیڈ pair نہ مقرر کرے، عمومی GATEWAY_ALLOWED_USERS یا GATEWAY_ALLOW_ALL_USERS رسائی نہ بڑھائے۔ config.yaml میں یہ بھی دیکھیں کہ نہ gateway.allow_all_users نہ بالائی allow_all_users true ہو، اور عمومی/Telegram فہرست میں اضافی مرسل نہ ہو۔ * استعمال، گروپ فہرست یا جوڑ کوڈ کی منظوری نہ دیں۔ نیا فولڈر وراثتی حقوق سے بچاتا ہے؛ ڈیٹا موجود ہو تو رک کر دیکھیں، اوپر نہ لکھیں۔ BotFather گروپ رازداری فعال رکھیں؛ بوٹ گروپ میں نہ ڈالیں، منتظم نہ بنائیں۔ گیٹ وے رسائی ہدایت فہرست اور مستقل جوڑ حقوق الگ راستے بتاتی ہے۔ سلامتی ہدایت کہتی ہے ignore غیرمجاز نجی پیغامات خاموشی سے گراتا ہے۔
فہرست بات شروع کرنے والا محدود کرتی ہے، مجاز ایجنٹ کا کام نہیں۔ Hermes Telegram نشست میں بنیادی ٹرمینل ٹول ہیں۔ اجازت سے پہلے ٹول، Docker ماؤنٹ، فراہم کنندہ اور میزبان پالیسی دیکھیں۔ بےضرر آزمائشی درخواست صرف درخواست ہے۔
3. شروع کرکے پہلا جواب دیکھیں
درج ڈائجسٹ سے ایک نامزد کنٹینر چلائیں۔ شائع Docker کمانڈ کا اختیاری -p 8642:8642 API کے لیے ہے؛ یہاں چھوڑیں کیونکہ نجی Telegram کو عوامی API یا ڈیش بورڈ پورٹ نہیں چاہیے۔ تصویر گیٹ وے کی نگرانی اور Docker کی unless-stopped پالیسی Docker آغاز پر کنٹینر دوبارہ چلانا سنبھالتی ہے۔ ماؤنٹ ترتیب و نشست محفوظ رکھتا ہے۔
docker run -d --name hermes --restart unless-stopped \
-v "$HERMES_DATA:/opt/data" "$IMAGE_REF" gateway run
if ! {
docker inspect hermes --format '{{.Image}} {{.State.Status}}' &&
[ "$(docker inspect hermes --format '{{.State.Status}}')" = running ] &&
docker logs --tail 50 hermes &&
docker exec -u hermes hermes hermes pairing list
}; then
echo 'State, logs or pairing check failed; stopping before any message.'
docker stop hermes || true
docker inspect hermes --format '{{.State.Status}}' || true
exit 1
fiکنٹینر running ہو، لاگ میں Telegram رابطہ/ماڈل خطا دیکھیں، پیغام سے پہلے جوڑ فہرست پڑھیں۔ پہلا پڑھنا ناکام ہو تو کوڈ روک کر حالت چھاپتا ہے؛ نامعلوم CLI/حق اجازت نہیں۔ پہلے exited کی تصدیق، پھر تحقیق؛ غیر یقینی حالت میں پیغام یا آغاز نہیں۔ دوسرے منظور مرسل پر روک کر رکی حالت جانچیں۔ docker exec رکے کنٹینر پر نہیں چلتا، عام تصویر داخلہ سابق گیٹ وے بحال کر سکتا ہے۔ نئے بنیادی UID میں آف لائن جانچ صرف متعین Hermes CLI کو UID 10000، بلا نیٹ ورک یا گیٹ وے آغاز چلاتی ہے۔ دستاویزی کمانڈ/داخلے کی تطبیق ہے، BIG CHANGE آزمائش نہیں۔ عملی UID اور ڈیٹا مالک 10000 ثابت ہوں تب استعمال۔ مالک، UID، CLI یا حقوق مبہم ہوں تو روک رکھیں، دوبارہ آغاز سے پہلے حل کریں۔
if [ "$(docker exec -u hermes hermes id -u)" != 10000 ] || [ "$(stat -c %u "$HERMES_DATA")" != 10000 ]; then
echo 'Runtime UID or data owner differs; stop for a host-specific repair.'; docker stop hermes; exit 1
fi
docker stop hermes
if [ "$(docker inspect hermes --format '{{.State.Status}}')" != exited ]; then
echo 'Container is not exited; do not mount state in another container.'; exit 1
fi
docker run --rm --network none --user 10000:10000 \
--entrypoint /opt/hermes/.venv/bin/hermes \
-v "$HERMES_DATA:/opt/data" "$IMAGE_REF" pairing list
# For a listed unwanted Telegram user, read the exact numeric ID first:
printf 'Unwanted numeric Telegram user ID: '; IFS= read -r UNWANTED_ID
if ! printf '%s\n' "$UNWANTED_ID" | grep -Eq '^[0-9]+$'; then echo 'Invalid ID; leave gateway stopped.'; exit 1; fi
docker run --rm --network none --user 10000:10000 \
--entrypoint /opt/hermes/.venv/bin/hermes \
-v "$HERMES_DATA:/opt/data" "$IMAGE_REF" pairing revoke telegram "$UNWANTED_ID"
docker run --rm --network none --user 10000:10000 \
--entrypoint /opt/hermes/.venv/bin/hermes \
-v "$HERMES_DATA:/opt/data" "$IMAGE_REF" pairing listآخری فہرست میں غیرمطلوب ID نہ ہو۔ خفیہ طور پر $HERMES_DATA/.env اور config.yaml میں دوسری پلیٹ فارم/عمومی فہرست، * یا سب کی اجازت دیکھیں اور دستاویزی راستے سے اختیار ہٹائیں۔ تمام راستے دیکھنے تک رکا رکھیں۔ ایک اندراج حذف سے الگ جوڑ/عمومی حق نہیں جاتا۔ پڑتال کے بعد docker start hermes اصل کنٹینر دانستہ بحال کرتا ہے؛ پیغام سے پہلے لاگ/فہرست پھر دیکھیں۔
مجاز اکاؤنٹ سے بوٹ کا نجی چیٹ کھول کر “مختصر سلام سے جواب دیں” جیسی بےضرر درخواست بھیجیں۔ اصل جواب و متعلقہ لاگ/نشست دیکھیں۔ ارسال، ٹائپنگ، حالت یا مکمل ترتیب جواب نہیں۔ Telegram کی /whoami فعال پیغام دائرہ بتا سکتی ہے، میزبان اختیار نہیں۔ غیرحساس ثبوت ہی رکھیں۔
جواب نہ ہو تو پہلے حالت و docker logs --tail 50 hermes پڑھیں۔ ٹوکن، درست عددی TELEGRAM_ALLOWED_USERS قدر، ماڈل تصدیق و استعمال اہلیت، خارجی رابطہ جانچیں۔ انجام نامعلوم ہو تو دوبارہ بھیجنے سے پہلے چیٹ/لاگ پڑھیں۔ دستاویزی کولڈ بوٹ منتظر اپ ڈیٹ گرا سکتا ہے؛ نقل روک یادداشت میں محدود ہے۔ عین ایک بار ترسیل کی ضمانت نہیں۔
4. دوبارہ آغاز، توقف اور بحالی جانچیں
پہلا دور مکمل ہو تو وہی کنٹینر دوبارہ چلا کر نئے لاگ و بچی /opt/data حالت دیکھیں، پھر نئی بےضرر نجی درخواست کا جواب جانچیں۔ روک کر Docker حالت پڑھیں۔ exited توقف کی علامت ہے؛ خاموش چیٹ کافی نہیں۔ docker start hermes بعد میں دانستہ شروع کرنے کا طریقہ ہے۔
docker restart hermes
docker logs --tail 50 hermes
docker inspect hermes --format '{{.State.Status}}'
# After the restarted gateway is ready, send a new private test message.
docker stop hermes
docker inspect hermes --format '{{.State.Status}}'
# Expected after stop: exited
# When intentionally resuming later: docker start hermesآغاز ناکام ہو تو Docker/لاگ، پھر $HERMES_DATA/logs/gateways/default/current اور $HERMES_DATA/logs/container-boot.log، ماؤنٹ، مالک و متعین تصویر/نسخہ دیکھیں۔ v0.22.2 اجرا نوٹ آغاز کی فعالیت کا حل بتاتے ہیں، آپ کے میزبان کا واقعہ نہیں۔ مرمت میں ڈیٹا نہ مٹائیں۔ ٹوکن افشا ہو تو روکیں، BotFather میں منسوخ، نجی طور پر ماؤنٹ کی .env میں بدلیں اور پہلے رسائی جانچیں۔ غیرمطلوب جوڑ منسوخ کر کے عملی فہرست دیکھیں۔
VPS اور ماڈل الگ فیس لے سکتے ہیں۔ اصل منصوبہ، حدود و فیس دیکھیں؛ وقت، مفت کوٹا یا دستیابی کا وعدہ نہیں۔ Telegram/فراہم کنندہ پیغام پر عمل، میزبان راز و حالت رکھتا ہے۔ یہ ایک میزبان، بوٹ کے پہلے جواب کی جانچ ہے۔ الگ BIG CHANGE رہنما بتاتے ہیں Hermes بیک اپ اور بحالی اور بار بار Hermes کام.
ماخذ اور مزید مطالعہ
یہ Docker ترتیب, Telegram ترتیب, گیٹ وے رسائی, سلامتی اور v0.22.2 اجرا NousResearch کے بنیادی ماخذ ہیں۔ فوری آغاز ماڈل فراہم کنندہ ترتیب بتاتا ہے۔ یہ طریقے کی دستاویزات ہیں، BIG CHANGE کے VPS/بوٹ اجرا کا ریکارڈ نہیں۔



