
环境:Debian 12 / root 用户 / Docker 已安装
目标:从零部署 Hermes Agent,数据持久化,Telegram 可用,搜索不弹审批。
第一步:创建目录
mkdir -p /opt/hermes /opt/hermes/data
chmod 700 /opt/hermes/data
第二步:写入密钥文件
nano /opt/hermes/data/.env
内容(填入你自己的值):
NVIDIA_API_KEY=nvapi-xxxxxxxxxxxxxxxxxxxx
TELEGRAM_BOT_TOKEN=123456789:ABCxxxxxxxxxxxx
保存后执行:
chmod 600 /opt/hermes/data/.env
第三步:写入配置文件
nano /opt/hermes/data/config.yaml
完整内容(直接复制):
model:
provider: nvidia
default: nvidia/nemotron-3-super-120b-a12b
base_url: https://integrate.api.nvidia.com/v1
context_length: 65536
database:
journal_mode: wal
runtime:
nofile_soft_limit: 4096
agent:
max_turns: 150
service_tier: ''
fast_auto_seconds: 60
verbose: false
reasoning_effort: medium
personalities: {}
terminal:
backend: local
cwd: .
timeout: 180
home_mode: auto
container_cpu: 1
container_memory: 5120
container_disk: 51200
container_persistent: true
docker_mount_cwd_to_workspace: false
lifetime_seconds: 300
web:
backend: ddgs
search_backend: ddgs
extract_backend: ddgs
security:
tirith_enabled: true
tirith_timeout: 15
tirith_fail_open: true
approvals:
mode: smart
timeout: 300
browser:
backend: local
tts:
provider: edge
vision:
mode: auto
第四步:写入 Docker Compose 文件
nano /opt/hermes/docker-compose.yml
完整内容:
services:
hermes:
build:
context: .
dockerfile: Dockerfile
container_name: hermes
restart: unless-stopped
command: gateway run
stdin_open: true
tty: true
volumes:
- /opt/hermes/data:/opt/data
environment:
TZ: Asia/Shanghai
HERMES_DASHBOARD: "1"
ports:
- "127.0.0.1:8642:8642"
- "127.0.0.1:9119:9119"
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"
第五步:写入 Dockerfile(预装依赖,根治审批弹窗)
nano /opt/hermes/Dockerfile
完整内容:
FROM nousresearch/hermes-agent:latest
USER root
RUN apt-get update && apt-get install -y --no-install-recommends \
fonts-wqy-microhei \
ca-certificates \
curl \
wget \
git \
procps \
&& rm -rf /var/lib/apt/lists/*
RUN uv pip install --python /opt/hermes/.venv/bin/python --no-cache-dir \
ddgs \
httpx \
beautifulsoup4 \
lxml \
pandas \
python-docx \
openpyxl \
pillow
USER hermes
第六步:构建并启动
cd /opt/hermes
docker compose build
docker compose up -d
第七步:验证
# 确认容器运行
docker compose ps
# 状态应为 Up
# 确认 ddgs 已预装(关键,不报 ModuleNotFoundError 即通过)
docker compose exec hermes python -c "import ddgs; print('ddgs OK')"
# 健康检查
curl -s http://127.0.0.1:8642/health; echo
全部正常后,去 Telegram 给机器人发消息测试(如"搜索今日科技新闻"),应直接返回结果,不再弹 uv pip install ddgs 审批。
维护命令
| 操作 | 命令 |
|---|---|
| 查看日志 | cd /opt/hermes && docker compose logs -f |
| 重启容器 | cd /opt/hermes && docker compose restart |
| 升级(保留数据) | cd /opt/hermes && docker compose build && docker compose up -d |
| 停止并删除容器(数据不丢) | cd /opt/hermes && docker compose down |
| 备份数据 | tar czf /root/hermes-data-$(date +%F).tgz -C /opt/hermes data |
| 彻底清除(含数据,慎用) | cd /opt/hermes && docker compose down && rm -rf /opt/hermes |
本地访问 Dashboard
在本地电脑执行:
ssh -L 9119:127.0.0.1:9119 root@<服务器IP>
浏览器打开 http://127.0.0.1:9119 即可。