ప్రైవేటు Telegram బాట్ VPS ఏజెంట్కు సులభ మార్గం, కానీ కనెక్షన్ సరైన వ్యక్తికి సమాధానం రుజువు కాదు. కొత్త Hermes Agent డేటా ఫోల్డర్తో మొదలై ఒక Telegram సంఖ్య ID అనుమతించి నిజ సమాధానం, నిర్ధారిత ఆపే నియంత్రణ చూస్తాం. ఆధారం NousResearch యొక్క v0.22.2 Docker సూచనలు మరియు Telegram సూచనలు, 19 అక్టోబర్ 2026న తనిఖీ. BIG CHANGE దీనికోసం VPS నడపలేదు, ఇమేజ్ తేలేదు, బాట్ చేయలేదు, మోడల్ పిలవలేదు.
పెద్ద మార్పు
- మారింది ఏమిటి: డైజెస్ట్తో స్థిరపరిచిన, వెర్షన్ తనిఖీ చేసిన Docker ఇమేజ్, ప్రత్యేక
/opt/dataమౌంట్ గేట్వే సాఫ్ట్వేర్, స్థితిని గుర్తిస్తాయి. - ఇది ఎందుకు ముఖ్యం: సంఖ్యల Telegram అనుమతి జాబితా, నిజ ప్రైవేటు సమాధానం సరైన ఖాతా వాడగలదో చూపుతాయి.
- గమనించవలసినది: జత లేదా ప్రపంచ అనుమతులు ప్రవేశం పెంచుతాయి; హాని లేని అభ్యర్థన సాధనాలను నిర్బంధించదు. అనుమతులు, లాగ్లు, పునఃప్రారంభం, ఆగిన స్థితి చూడండి.
SSH తో Linux VPS నిర్వహణ అధికారం, పనిచేసే 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 సెషన్లలో డిఫాల్ట్ టెర్మినల్ సాధనాలు ఉంటాయి. అనుమతి ముందు సాధనాలు, మౌంట్, సరఫరాదారు, హోస్ట్ విధానం చూడండి. హాని లేని పరీక్ష కేవలం అభ్యర్థనే.
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/బాట్ నడిపిన రికార్డు కాదు.



