СВЕТ НЕ СТОЈИ У МЕСТУ.RSS
BIG CHANGE.

Markdown издање

AI-translated from English; not yet reviewed by a fluent editor.

# Покрените један Hermes Agent пролаз на VPS-у и проверите приватни Telegram одговор

> Подесите верзијски проверен Hermes Docker пролаз на Linux VPS-у, дозволите једног приватног Telegram пошиљаоца, проверите стваран одговор, па поновно покретање и заустављање.

By BIG CHANGE Editorial

Published: 2026-10-19T20:31:34.981Z
Updated: 2026-10-19T20:31:34.981Z
Canonical: https://bigchange.ai/blog/hermes-vps-docker-private-telegram-first-reply

![Conceptual charcoal illustration of one hand holding an unbranded phone with two blank message shapes on its screen.](https://bigchange.ai/api/media/file/hermes-private-reply-check-hero-v1.png)
AI-generated conceptual illustration by BIG CHANGE; no actual Telegram interface, Hermes deployment or observed reply is depicted.

Приватан Telegram бот олакшава приступ агенту на VPS-у, али повезан пролаз не доказује да ће одговарати правој особи. Почињемо новим Hermes Agent директоријумом, допуштамо један бројчани Telegram ID, проверавамо стваран одговор и остављамо потврђен начин заустављања. Пратимо NousResearch [Docker упутство в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/docker.md) и [Telegram упутство](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/telegram.md), проверена 19. октобра 2026. BIG CHANGE није управљао VPS-ом, преузео слику, направио бота ни позвао модел за овај водич.

## Велика промена

- **Шта се променило:** Docker слика везана за сажетак и проверену верзију, уз посебан `/opt/data` моунт, омогућава препознавање софтвера и стања овог пролаза.
- **Зашто је важно:** Бројчана Telegram листа дозвољених и стваран приватан одговор показују да ли предвиђени налог може да користи пролаз.
- **На шта пазити:** Упаривање или глобална права шире приступ; безазлен захтев не ограничава алате агента. Проверите дозволе, дневнике, поновно покретање и заустављено стање.

Потребни су овлашћење за управљање једним Linux VPS-ом преко SSH, исправан Docker Engine и приступ опоравку хоста, Telegram налог за прављење BotFather бота и одговарајући Hermes налог добављача модела. Проверите архитектуру и ресурсе према званичној amd64/arm64 слици, као и приступ и наплату пре чаробњака. Docker мора већ радити; инсталација и заштитни зид зависе од OS-а и добављача. Хост мора излазно приступати Telegram-у и моделу. Одвојите приватан директоријум стања и ограничите читаоце: `/opt/data` чува приступне податке, сесије и дневнике. [Docker приручник](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/docker.md) тај моунт назива трајним меродавним извором стања.

## 1. Фиксирајте слику пре подешавања

Повежите се преко SSH и останите у истој командној љусци. Ознака `stable` може да се промени. Преузмите слику, забележите сажетак репозиторијума и потврдите да сама слика пријављује верзију `0.22.2`. Станите при разлици, недостајућем сажетку, постојећим подацима или контејнеру имена `hermes`. Пре наставка освежите упутство за стварну верзију или набавите подударну документовану слику. Сажетак фиксира слику, али сам не доказује верзију.

```sh
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
fi
```

`set -eu` зауставља низ ако Docker није доступан, преузимање или преглед не успе, или команда верзије закаже. Експлицитне провере заустављају празан сажетак или другу верзију. После тога не прелазите на подешавање. Сачувајте забележену вредност `nousresearch/hermes-agent@sha256:…`. И подешавање и пролаз испод користе `IMAGE_REF`, па промена ознаке не мења неприметно контејнер. Читалац то проверава на стварном VPS-у; у чланку нема потврђеног сажетка слике. Користите нов посебан директоријум на изворном систему датотека хоста, никад два пролаза над истим подацима.

## 2. Подесите добављача и једног приватног пошиљаоца

Покрените [Docker чаробњак за подешавање](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/docker.md) са монтираним директоријумом. Изаберите пут модела који налог дозвољава, аутентификујте се и проверите добављача/модел. Приступ и цена зависе од налога. Сачувана поставка не доказује успешан захтев моделу.

```sh
docker run -it --rm -v "$HERMES_DATA:/opt/data" "$IMAGE_REF" setup
```

У Telegram-у тражите од [@BotFather](https://t.me/BotFather) бота помоћу `/newbot` и чувајте токен приватно. Прибавите **бројчани Telegram ID пошиљаоца**, на пример методом повезаном у [Telegram приручнику](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/telegram.md); корисничко име није 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` у контејнеру) поставите глобално понашање за неовлашћене приватне поруке:

```yaml
unauthorized_dm_behavior: ignore
```

После изласка контејнера за подешавање, званична слика је можда променила власништво `$HERMES_DATA` на извршни UID 10000. Почетна процедура ограничава `.env` на режим `600` и постојећи `config.yaml` на `640`; први пут настала конфигурација може захтевати исто пооштравање. Обичан SSH корисник можда не може да отвори датотеке. Ако чаробњак није унео потребне кључеве, **овлашћени администратор хоста** може прегледати и изменити те две датотеке помоћу `sudo` и вратити извршно власништво и приватне режиме. Уређивач као UID 10000 можда не пролази кроз корисников `$HOME`, па команда користи администраторски приступ. На хосту са `sudo` и `vi` користите је после провере власника/режима без тајни. При другом UID-у или недостајућој датотеци станите и решите хост приступ.

```sh
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 и да листе немају додатног пошиљаоца. Не користите `*` у листама, не додајте групне листе ни одобрења кодова за упаривање. Ново избегава наслеђена права; код старих података станите и прегледајте уместо преписивања. Оставите BotFather приватност група укључену, не додајте бота групи и не дајте му администраторску улогу. [Приручник приступа пролазу](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/index.md) раздваја листе и трајне дозволе упаривања као независне путеве. [Безбедносни приручник](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/security.md) описује `ignore` као тихо одбацивање неовлашћених приватних порука.

Листа контролише почетак разговора, не радње овлашћеног агента. Hermes Telegram сесије подразумевано имају терминалске алате. Пре дозволе проверите алате, Docker монтирања, добављача и политику хоста. Безазлен тест захтев је само захтев.

## 3. Покрените пролаз и проверите први одговор

Покрените један именован контејнер из забележеног сажетка. Објављена Docker команда има опциони `-p 8642:8642` за API. Изоставите га јер приватна порука не тражи јавни API ни порт контролне табле. Слика надзире пролаз, а Docker политика `unless-stopped` управља поновним покретањем при старту Docker-а. Монтирани директоријум чува поставке и сесије.

```sh
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 или права нејасни, оставите заустављено до решења пре рестарта.

```sh
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` је намеран наставак касније.

```sh
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`, монтирање, власништво и фиксирану слику/верзију. [Белешке издања в0.22.2](https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.2) описују исправку провере рада при старту, не догађај на вашем хосту. Не бришите стање ради поправке. Ако токен исцури, станите, опозовите га у BotFather, приватно замените у монтираном `.env` и проверите приступ пре рестарта. Опозовите и нежељено упаривање и прегледајте стварне листе.

VPS и модел могу се посебно наплаћивати. Проверите свој пакет, лимите и трошкове; нема обећаног трајања, бесплатне квоте или доступности. Telegram и добављач обрађују поруке; хост чува тајне и стање. Проверава се први одговор једног хоста и бота. Други BIG CHANGE водичи обрађују [Hermes резервну копију и опоравак](https://bigchange.ai/blog/hermes-encrypted-github-backup-recovery-guide) и [понављајући Hermes посао](https://bigchange.ai/blog/hermes-skill-recurring-job-first-run).

## Извори и додатна литература

Упутства за [Docker подешавање](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/docker.md), [Telegram подешавање](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/telegram.md), [приступ пролазу](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/index.md), [безбедност](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/security.md) и [издање в0.22.2](https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.2) јесу NousResearch примарни извори. [Брзи почетак](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/getting-started/quickstart.md) објашњава добављача. Ово документује поступак, не BIG CHANGE рад VPS-а или бота.

## Sources

- [Hermes Agent издање в0.22.2](https://github.com/NousResearch/hermes-agent/releases/tag/v0.22.2) — Датум и документована исправка рада при старту.
- [Hermes Docker подешавање, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/docker.md) — Канали слике, монтирање, подешавање, надзор, порт и дневници.
- [Званични Dockerfile, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/Dockerfile) — Улазна тачка, извршни UID, HERMES_HOME и CLI пут за ограничену ванмрежну проверу.
- [Docker кука друге фазе, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/docker/stage2-hook.sh) — Циљано власништво и .env/config дозволе после подешавања.
- [Telegram подешавање, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/telegram.md) — BotFather, токен, бројчана листа, приватност и ограничења доставе.
- [Поруке и пролаз, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/messaging/index.md) — Стваран приступ, читање упаривања и опозив.
- [Безбедност, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/user-guide/security.md) — Неовлашћене приватне поруке и границе приступа.
- [Брзи почетак, в0.22.2](https://raw.githubusercontent.com/NousResearch/hermes-agent/v0.22.2/website/docs/getting-started/quickstart.md) — Пут подешавања добављача модела.