无网环境docker部署Hermes Agent笔记——下篇 内网部署和中文社区桌面端配置
书接上篇,咱们已经准备好了内网部署所需要的全部依赖和docker镜像,接下来我们开始完全离网部署!
部署要求
必须:
- Windows: 10 22H2版本及以上,或windows11
- 或使用版本较新的Linux,安装好docker和docker compose
为什么使用沙箱?
为了数据的绝对安全!使用沙箱docker后,有如下好处:
- hermes只能读取你挂载在沙箱的目录,而且你可以设置只读权限
- 可以控制hermes执行代码时的CPU、内存占用等
- 可以控制是否让沙箱访问网络
1 Windows 10系统安装docker destop
1.1 安装 WSL2(离线)
- 启用 WSL(离线,使用 dism,无需联网)
-
注意必须使用系统自带PowerShell(否则无法成功),运行如下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart或在控制面板添加系统组件
-
- 安装WSL完整应用wsl.2.7.11.0.x64.msi
- 安装WSL内核更新wsl_update_x64.msi
- 完成后重启电脑
1.2 安装docker destop
运行【Docker Desktop Installer.exe】并安装,注意有一个WSL的选项,一定要选这个
安装完成后关闭自动更新(避免弹窗报错):
docker destop上方齿轮按钮(Settings)→ Software updates → 取消勾选所有选项
1.3 WSL2 离线环境进阶配置(可选)
配置 WSL2 使用固定内存(避免 Windows 内存暴涨)
在 Windows 用户目录创建 C:\Users<用户名>.wslconfig:
[wsl2]
memory=8GB # 根据你的机器调整
processors=4
swap=2GB
localhostForwarding=true
1.4 安装Windows Terminal(可选,解决界面不好看的问题)
解决win10自带powershell界面难看, 无法正常显示hermes界面和交互的问题
解压缩Microsoft.WindowsTerminal_1.24.11911.0_8wekyb3d8bbwe.msixbundle_Windows10_PreinstallKit.zip,运行系统自带的Powershell
Add-AppPackage ./Microsoft.UI.Xaml.2.8_8.2501.31001.0_x64__8wekyb3d8bbwe.appx #根据硬件选择x86 x64 arm arm64
Add-AppPackage ./311980e3610042a2bcbd9da24ad6680a.msixbundle
2 导入docker镜像
资源管理器进入部署包的docker-images目录,空白处右键->【在终端打开】
#导入新版镜像
docker load -i hermes-agent-v0.20-20260810.tar
#删除旧版镜像(如果有)
docker rmi -f nousresearch/hermes-agent:latest
#将0.20版的镜像标记为最新
docker tag nousresearch/hermes-agent:v0.20 nousresearch/hermes-agent:latest
#导入沙箱镜像
docker load -i hermes-sandbox-python312-20260810v2.tar
3首次配置向导
准备数据文件夹
创建hermes数据目录,比如D:\AI_Agent\hermes\hermes-data
进入首次配置
返回上级目录【D:\AI_Agent\hermes】,空白处右键->【在终端打开】运行如下命令hermes并进行初次配置,
Windows Powershell
docker run -it --rm `
-v ./hermes-data:/opt/data `
-v /var/run/docker.sock:/var/run/docker.sock `
nousresearch/hermes-agent:latest setup
Linux
docker run -it --rm \
-v ./hermes-data:/opt/data \
-v /var/run/docker.sock:/var/run/docker.sock\
nousresearch/hermes-agent:latest setup
模型配置
- 启动后hermes询问如何进行配置,使用上下方向键选择第2项
(○) Full setup — configure every provider, tool & option yourself (bring your own keys),回车 - hermes询问模型提供商,选择自定义
(○) custom (direct API),位置比较靠下,多按↓,选中后回车 - 输入你模型的API URL,回车,注意要有最后的
v1,比如我的是http://172.16.6.224:8001/v1 - 输入你的API KEY(如果启动模型的时候配置有,或者模型平台给出了APIKEY,没有则保持为空)
- 选择模型兼容模式,我们选第一个自动,输入1并回车
- 模型多的话,hermes会列出模型清单,输入你要使用的模型序号并回车
- hermes询问是否确认配置,输入y回车
API mode: auto-detect
Detected model: Qwen3.6-27B-TS
Use this model? [Y/n]: y
- hermes询问你的模型token长度,直接回车,自动检测
- 输入一个模型名称,hermes将在前端显示这个模型名称,我这里是
Qwen3.6-27B-TS
沙箱配置
上一步完成后进入沙箱配置环节,为了确保hermes运行命令和代码时不会损坏系统和我们自己的文件,需要给hermes配置一个沙箱
1. hermes询问终端后端采用哪种模式,我们选择第2个Docker
Select terminal backend:
↑↓ navigate ENTER/SPACE select ESC cancel
(○) Local - run directly on this machine (default)
→ (○) Docker - isolated container with configurable resources
(○) Modal - serverless cloud sandbox
(○) SSH - run on a remote machine
(○) Daytona - persistent cloud development environment
(○) Singularity/Apptainer - HPC-friendly container
(●) Keep current (local)
2. 是否允许沙箱访问外网,我这里选择是,输入y回车
配置消息推送
内网环境不需要,我们按esc退出
Select platforms to configure:
↑↓ navigate SPACE toggle ENTER confirm ESC cancel
→ [ ] 💬 Mattermost (not configured)
[ ] 📡 Signal (not configured)
[ ] 💬 Weixin / WeChat (not configured)
[ ] 💬 BlueBubbles (iMessage) (not configured)
[ ] 🐧 QQ Bot (not configured)
[ ] 💎 Yuanbao (not configured)
[ ] 🐝 Buzz (not configured)
[ ] 🐳 DingTalk (not configured)
[ ] 🎮 Discord (not configured)
[ ] 📧 Email (not configured)
[ ] 🪽 Feishu / Lark (not configured)
配置Tools
保持默认,后面有需要了再来改,直接esc
Tools for 🖥️ CLI
↑↓ navigate SPACE toggle ENTER confirm ESC cancel
→ [✓] 🔍 Web Search & Scraping (web_search, web_extract)
[✓] 🌐 Browser Automation (navigate, click, type, scroll)
[✓] 💻 Terminal & Processes (terminal, process)
[✓] 📁 File Operations (read, write, patch, search)
[✓] ⚡ Code Execution (execute_code)
[✓] 👁️ Vision / Image Analysis (vision_analyze)
[ ] 🎬 Video Analysis (video_analyze (requires video-capable model))
[✓] 🎨 Image Generation (image_generate)
[ ] 🎬 Video Generation (video_generate (text/image/reference))
[ ] 🐦 X (Twitter) Search (x_search (requires xAI OAuth or XAI_API_KEY))
[✓] 🔊 Text-to-Speech (text_to_speech)
[✓] 📚 Skills (list, view, manage)
[✓] 📋 Task Planning (todo)
[✓] 💾 Memory (persistent memory across sessions)
[ ] 🧩 Context Engine (runtime tools from the active context engine)
[✓] 🔎 Session Search (search past conversations)
[✓] ❓ Clarifying Questions (clarify)
[✓] 👥 Task Delegation (delegate_task)
[✓] ⏰ Cron Jobs (create/list/update/pause/resume/run, with optional attached skills)
[ ] 🏠 Home Assistant (smart home device control) [no API key]
[ ] 🎵 Spotify (playback, search, playlists, library)
[ ] 🤖 Yuanbao (group info, member queries, DM)
[✓] 🖱️ Computer Use (macOS/Windows/Linux) (background desktop control via cua-driver)
配置浏览器
让hermes能够访问网页,默认第一个,直接回车
Choose a provider:
↑↓ navigate ENTER/SPACE select ESC cancel
→ (●) Local Browser [★ recommended · free] — Headless Chromium, no API key needed
(○) Nous Subscription (Browser Use cloud) [subscription] — Managed Browser Use billed to your subscription ★ via No (○) Camofox [free · local] — Anti-detection browser (Firefox/Camoufox)
(○) Browser Use [paid] — Cloud browser with remote execution
(○) Browserbase [paid] — Cloud browser with stealth and proxies
(○) Firecrawl [paid] — Cloud browser with remote execution
(○) Skip — keep defaults / configure later
配置图像生成服务提供商
Choose a provider:
↑↓ navigate ENTER/SPACE select ESC cancel
(●) Nous Subscription [subscription] — Managed FAL image generation billed to your subscription ★ via Nous Portal ( (○) DeepInfra [paid] — FLUX, Qwen-Image, … — live catalog from api.deepinfra.com
(○) FAL.ai [paid] — Pick from flux-2-klein, flux-2-pro, gpt-image, nano-banana, etc. — text-to-image & image editing (○) Krea [paid] — Krea 2 foundation model — Medium ($0.03), Large ($0.06), Medium Turbo ($0.015). Style transfer, mo (○) Nous Portal (image) [subscription] — Reference-grounded image generation via Nous Portal (OpenRouter-backed)
(○) OpenAI [paid] — gpt-image-2 at low/medium/high quality tiers — text-to-image & image editing
(○) OpenAI (Codex auth) [free] — gpt-image-2 via ChatGPT/Codex OAuth — no API key required; supports text and image (○) OpenRouter (image) [paid] — Gemini Flash Image & more via OpenRouter; uses OPENROUTER_API_KEY
(○) xAI Grok Imagine (image) [paid] — grok-imagine-image - text-to-image & image editing; uses xAI Grok OAuth or XA → (○) Skip — keep defaults / configure later
配置tts提供商(文字转语音)
跳过,同上
Choose a provider:
↑↓ navigate ENTER/SPACE select ESC cancel
(●) Microsoft Edge TTS [★ recommended · free] — Good quality, no API key needed [active]
(○) Nous Subscription [subscription] — Managed OpenAI TTS billed to your subscription ★ via Nous Portal (login on s (○) OpenAI TTS [paid] — High quality voices
(○) xAI TTS — Grok voices — uses xAI Grok OAuth or XAI_API_KEY
(○) ElevenLabs [paid] — Most natural voices
(○) Mistral (Voxtral TTS) [paid] — Multilingual, native Opus
(○) Google Gemini TTS [preview] — 30 prebuilt voices, controllable via prompts
(○) KittenTTS [local · free] — Lightweight local ONNX TTS (~25MB), no API key
(○) Piper [local · free] — Local neural TTS, 44 languages (voices ~20-90MB)
(○) DeepInfra TTS [paid] — Chatterbox, Qwen3-TTS, … — live catalog from api.deepinfra.com
→ (○) Skip — keep defaults / configure later
配置搜索提供商
跳过,同上
Select Search Provider:
↑↓ navigate ENTER/SPACE select ESC cancel
(●) Nous Subscription [subscription] — Managed Firecrawl billed to your subscription ★ via Nous Portal (login on se (○) Firecrawl Self-Hosted [free · self-hosted] — Run your own Firecrawl instance (Docker)
(○) Brave Search (Free) [free] — Free-tier API key — 2k queries/mo, search only.
(○) DuckDuckGo (ddgs) [free · no key · search only] — Search via the ddgs Python package — no API key (pair with an(○) Exa [paid] — Semantic + neural web search with content extraction.
(○) Firecrawl [paid · optional gateway] — Full search + extract; supports direct API and Nous tool-gateway routing. (○) Parallel [paid] — Objective-tuned search + parallel page extraction.
(○) SearXNG [free · self-hosted] — Free, privacy-respecting metasearch. Point SEARXNG_URL at your instance.
(○) Tavily [paid] — Search + extract in one provider.
(○) xAI Web Search (Grok) [paid] — Agentic web search via Grok's web_search tool — uses xAI Grok OAuth or XAI_API_ → (○) Skip — keep defaults / configure later
配置向导结束
完成上述配置后,配置向导结束,docker自动关闭,命令行返回工作目录
配置hemers使用沙箱(重点!!!敲黑板!!!)
1. 修改hemers-data\config.yaml,找到terminal部分,增加如下内容:
terminal:
backend: docker
modal_mode: auto
cwd: .
timeout: 180
docker_image: hermes-sandbox-python312:20260731v1 #关键1指定沙箱镜像
network: "none" # 禁止网络访问
docker_mount_cwd_to_workspace: false # 将启动目录挂载到 /workspace
docker_forward_env: # 透传进容器的环境变量
- "GITHUB_TOKEN"
docker_volumes: # 关键2挂载主机目录
- D:\AI_Agent\hermes\hermes-data\home:/opt/data/home #允许hermes往这个目录写入,生成的word、PPT等都保存到这里
- D:\AI_Agent\hermes\hermes-data:/opt/data:ro # :ro 表示只读
# 资源限制
container_cpu: 0 # CPU 核数(0 = 不限)
container_memory: 5120 # 内存 / 磁盘大小,单位 MB(0 = 不限)
container_disk: 51200 # 磁盘大小,单位 MB(需要 overlay2 + XFS+pquota)
container_persistent: false # 关键3禁用在会话间持久化 /workspace 和 /root,windows下存在问题
注意(敲黑板!):
如果container_persistent设置为true,Hermes agent会自动把一个可写入的目录挂载到/workspace,但是用的是Linux路径,Windows 下使用Docker desktop会导致这个目录挂载有问题,你永远无法找到hermes创建的文件!因此需要按上述方法进行挂载,后面你可以告诉hermes——“请你记住,你创建的文件都保存到/opt/data/home,只有这个目录是可写入的!”。这样hermes产生的文件就会都保存在D:\AI_Agent\hermes\hermes-data\home
参考:配置 | Hermes Agent 中文社区
2. 禁用代理,否则hermes尝试联网运行沙箱,修改上述hemers-data\config.yaml,找到proxy部分,修改如下
proxy:
enabled: false
修复【Auxiliary title generation failed: Request timed out.】报错
这个报错不影响使用,是hermes默认配置下使用外网模型生成对话标题,然而我们无法访问外网导致的,解决办法:修改上述hemers-data\config.yaml,找到`auxiliary'部分并按照如下进行修改,如果没有直接增加如下内容:
auxiliary:
title_generation:
provider: custom #对应我们使用自定义模型
model: custom/Qwen3.6-27B-TS #【/】后面是模型名称,对应前面配置的模型名称
4运行使用(命令行模式)
- 运行hermes
docker run -it --rm \
-v ./hermes-data:/opt/data \
-v /var/run/docker.sock:/var/run/docker.sock \
nousresearch/hermes-agent:latest --tui # 【--tui】可加可不加,不加是CLI界面,加上是TUI界面,更好看,有菜单功能,交互性更好
docker run -it --rm `
-v ${PWD}/hermes-data:/opt/data `
-v /var/run/docker.sock:/var/run/docker.sock `
nousresearch/hermes-agent:latest --tui # 【--tui】可加可不加,不加是CLI界面,加上是TUI界面,更好看,有菜单功能,交互性更好
- 测试:
- 先在docker destop中删除已经运行的沙箱docker,注意不是删除镜像
- 等hermes启动完成后,输入【请检查沙箱中安装了哪些python包】,hermes将开始启动沙箱并运行命令,可以观察到docker desktop中启动了hermes-sandbox容器;命令执行完后,hermes会回复沙箱中的python包清单,检查是否有pandas python-docx python-pptx等,有的话说明正确
- 让hermes记住文件存放在哪里,输入【请你记住,所有使用沙箱生成的文件要保存到沙箱的/workspace目录下,这个目录对应你的/opt/data/home】并回车,hermes自动记住这个要求(进化)
- 可以开始愉快的与hermes对话了,可以让他生成word、docx,运行python进行数据处理,生成数据图表等~
- 退出:在hermes界面按下ctrl+c即可
5桌面端使用
启动Hermes gateway和dashboard服务
先ctrl+c退出前面打开的hermes终端,然后如下操作:
1. 创建docker-compose.yaml到hermes目录【我的是D:\AI_Agent\hermes\docker-compose.yaml】,内容如下:
version: "3.8"
services:
hermes-agent:
image: nousresearch/hermes-agent:latest
container_name: hermes
# 服务端常驻运行,除非手动停止否则自动重启
restart: unless-stopped
# 启动命令:运行 gateway 服务
command: ["gateway", "run"]
# 端口映射
ports:
- "8642:8642" # Gateway API 端口
- "9119:9119" # Dashboard 面板端口(仅在 HERMES_DASHBOARD=1 时生效)
# 数据卷挂载
volumes:
# Hermes 数据持久化目录(相对路径,会映射到 compose 文件所在目录)
- ./hermes-data:/opt/data
# Docker Socket 挂载:允许容器内调用宿主机的 Docker 服务
# 这是 Hermes Agent 管理其他容器所必需的
- /var/run/docker.sock:/var/run/docker.sock
# 环境变量配置
environment:
# ===== 仪表板配置 =====
# 启用 Web 仪表板
- HERMES_DASHBOARD=1
# 仪表板基础认证用户名
- HERMES_DASHBOARD_BASIC_AUTH_USERNAME=你的用户名
# 仪表板基础认证密码(生产环境建议改用 secrets 或外部配置)
- HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=你的密码
# 仪表板基础认证密钥(用于加密会话等)
- HERMES_DASHBOARD_BASIC_AUTH_SECRET=32位随机字符串
# ===== 语音配置 =====
# 禁用语音功能
- HERMES_VOICE_ENABLED=false
# 本地语音转文字命令(留空表示不使用)
- HERMES_LOCAL_STT_COMMAND=
# ===== 可选:API 密钥(取消注释以直接注入,或改用 .env 文件)=====
# - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
# - OPENAI_API_KEY=${OPENAI_API_KEY}
# - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
# 时区设置(可选,保持与宿主机一致)
- TZ=Asia/Shanghai
# 资源限制
deploy:
resources:
limits:
memory: 4G
cpus: "8.0"
# 保留资源(可选,确保容器有足够资源运行)
reservations:
memory: 1G
cpus: "1.0"
# 日志配置:防止日志文件无限增长
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
# 网络配置(可选:使用独立网络隔离)
# networks:
# - hermes-network
# 如需自定义网络,取消下方注释
# networks:
# hermes-network:
# driver: bridge
注意修改用户名、密码、密钥的配置, 密钥可以使用docker run --rm --entrypoint=openssl nousresearch/hermes-agent:latest rand -hex 32命令生成

2. 如果你的数据目录不是hermes-data,还要修改volumes部分,与实际目录名称对应,比如我的数据目录是【D:\AI_Agent\hermes\hermes-data】,这部分的配置就是:
volumes:
# Hermes 数据持久化目录(相对路径,会映射到 compose 文件所在目录)
- ./hermes-data:/opt/data
# Docker Socket 挂载:允许容器内调用宿主机的 Docker 服务
# 这是 Hermes Agent 管理其他容器所必需的
- /var/run/docker.sock:/var/run/docker.sock
3. 资源管理器进入hermes目录【D:\AI_Agent\hermes】,空白处右键->【在终端打开】运行如下命令,运行后hermes将在后台以服务的方式运行,注意如果弹出防火墙提示,需要允许;后续服务端将常驻运行,开机随docker desktop的启动自动运行,除非手动停止
docker compose up -d
hermes服务手动停止(部署无问题的话不需要)
资源管理器进入hermes目录【D:\AI_Agent\hermes】,空白处右键->【在终端打开】运行如下命令
docker compose down
启动并配置中文社区版桌面端
- 解压缩
Hermes.Agent.CN.Desktop_0.7.0_x64-windows-portable.zip,我是解压缩到了D:\AI_Agent\hermes - 运行里面的
Hermes Agent CN Desktop.exe - 稍等片刻,进入首次使用页面,选择【已经有自己的Hermes内核】右侧的【连接自己的内核】
- 进入下一个界面,选择
外部Hermes->远端服务器Hermes,输入服务器地址http://localhost:9119,下方出现登陆用户密码输入框,输入前面配置的用户名和密码,点击登录
- 下方出现
登录成功提示,点击保存并连接远程即可
- 点击左上方
工作台,出现外部Hermes Agent连接正常字样,说明配置成功,可以开始使用了!
补充
为了让hermes更好地使用离线沙箱,需要新建一个对话,告诉她请你记住,沙箱无外网,所有可用软件工具在/opt/hermes/dependencies.md中列出。这个文件我预置到了我的沙箱中,和她说一次即可,她会记住这个要求。
更多推荐



所有评论(0)