公网部署强调可访问性与抗攻击能力,需配置弹性公网ip、安全组限端口、discord ip白名单及cni网络策略;内网部署聚焦隔离性,采用host网络、域名白名单、禁用外联http及rbac角色限制;混合环境通过双网卡、自定义容器网络、iptables分流及tls指纹验证实现精准流量管控。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您需要在不同网络环境下部署Hermes Agent,公网与内网环境对安全性、可达性及通信路径的要求存在显著差异。以下是针对两种典型网络场景的独立部署策略:
一、公网环境下的部署策略
公网部署强调对外服务的可访问性与抗攻击能力,需确保Hermes Agent能稳定响应来自Telegram、Discord等外部平台的请求,同时防止未授权探测和恶意流量注入。该策略依赖云服务器边界防护与容器级网络策略协同生效。
1、选择支持弹性公网IP与安全组配置的云平台(如腾讯云Lighthouse),地域优先选中国香港或新加坡,以保障与Discord等海外服务的低延迟连通性。
2、创建服务器时,在安全组中仅开放必要端口:HTTPS(443)、Webhook监听端口(如8080),并禁止SSH端口暴露于0.0.0.0/0。
3、启动容器时通过环境变量限定入站来源:docker run -e ALLOWED_IPS="185.199.108.0/22,162.159.128.0/21" -e ALLOWED_PORTS="443,8080" hermes-agent,其中IP段为Discord官方Webhook出口地址范围。
4、启用CNI网络策略插件(如Calico),在environments/hermes_swe_env/default.yaml中将policy.enabled设为true,并绑定NetworkPolicy资源限制Pod仅接收匹配标签的入站连接。
二、内网环境下的部署策略
内网部署聚焦于隔离性与可控性,适用于企业私有云或本地数据中心,要求Hermes Agent不对外暴露任何服务端口,所有交互必须经由可信内部网关或消息代理中转。该策略依赖主机网络模式、白名单出站控制与本地身份鉴权机制。
1、禁用容器桥接网络,改用host网络模式运行:docker run --network host -e NETWORK_MODE="host" hermes-agent,避免NAT层引入不可控转发路径。
2、在tools/skills_guard.py中激活域名白名单机制,将allowed_domains列表设为仅包含企业内部服务地址,例如["hermes-gateway.internal", "llm-proxy.corp.local"]。
3、关闭所有HTTP(S)外联能力,在启动参数中加入--disable-outbound-http=true,强制所有工具调用转向本地Unix Socket或gRPC通道。
4、配置RBAC角色限制:通过tools/skills_guard.py定义“internal-only”角色,禁止该角色执行curl、wget、requests等任意外部网络请求函数,仅允许调用本地文件系统或数据库驱动模块。
三、混合网络环境下的双栈部署策略
当需同时满足内网业务集成与有限公网交互(如仅向指定Telegram Bot API发送消息)时,应实施网络平面分离。该策略通过物理接口绑定、路由表分发与协议级分流实现流量精准导向,避免策略冲突。
1、为服务器配置双网卡:eth0接入内网交换机(10.10.0.0/16),eth1接入DMZ区域(172.16.0.0/12),并在内核启用IP forwarding与策略路由。
2、修改Docker daemon.json,为Hermes Agent容器指定自定义网络:使用cni_plugin: "bridge"并绑定到eth1对应子网,同时在ipam.subnet中设置为172.16.10.0/24。
3、在容器内配置iptables规则,强制所有目标为Telegram API(api.telegram.org)的流量从eth1发出,其余全部拒绝:iptables -A OUTPUT -d api.telegram.org -o eth1 -j ACCEPT && iptables -A OUTPUT -o eth1 -j DROP。
4、启用出站域名签名验证,在tools/skills_guard.py中为telegram_api条目添加证书指纹比对逻辑,仅当TLS握手返回预置SHA256指纹时才放行连接。











