首先感谢清风小道君,应为主要的东西是人家写的,只是我更换了webui,换成了ekkoye8888/hermes-web-ui,这是github上的项目hermes-web-ui/README_zh.md at main · EKKOLearnAI/hermes-web-ui · GitHub

目录结构说明
/vol2/1000/Docker/hermes/
**── docker-compose.yml
**── init.sh
**── data/ # Hermes 数据存储
** **── workspace/ # 工作空间目录
**── hermes/ # Agent 源码
**── webui_data/ # WebUI 配置数据
init.sh 脚本:
#!/bin/bash
set -e
# 设置根目录
ROOT_DIR="/vol2/1000/Docker/hermes"
DEST="$ROOT_DIR/hermes"
DATA="$ROOT_DIR/data"
IMAGE="nousresearch/hermes-agent:latest"
# 创建必要的目录
mkdir -p "$DATA"
mkdir -p "$DEST"
mkdir -p "$ROOT_DIR/webui_data"
mkdir -p "$DATA/workspace"
echo "Fixing permissions to UID 1000..."
sudo chown -R 1000:1000 "$DATA"
sudo chmod -R 755 "$DATA"
if [ -f "$DEST/pyproject.toml" ]; then
echo "Source already exists at $DEST"
else
echo "Copying agent source from $IMAGE ..."
docker run --rm \
--user 0:0 \
--entrypoint sh \
-v "$DEST:/dest" \
"$IMAGE" \
-c 'cd /opt/hermes && tar \
--exclude=.venv \
--exclude=.playwright \
--exclude=node_modules \
--exclude=package.json \
--exclude=package-lock.json \
--exclude=__pycache__ \
--exclude=hermes_agent.egg-info \
--exclude=.git \
--exclude=tests \
--exclude=docs \
--exclude=website \
-cf - . | (cd /dest && tar xf -)'
echo "Done. Source copied to $DEST"
fi
sudo chown -R 1000:1000 "$DEST"
sudo chmod -R 755 "$DEST"
sudo chown -R 1000:1000 "$ROOT_DIR/webui_data"
sudo chmod -R 755 "$ROOT_DIR/webui_data"
sudo chown -R 1000:1000 "$DATA/workspace"
sudo chmod -R 755 "$DATA/workspace"
echo ""
echo "Ready. Run: docker compose up -d"
再次感谢清风小道君提供这个脚本。
yaml编辑
version: '3.8'
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
command: gateway run
user: "1000:1000"
ports:
- "8642:8642"
volumes:
- ./hermes/data:/opt/data
environment:
- TZ=Asia/Shanghai
- PATH=/opt/hermes/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
networks:
- hermes-net
dashboard:
image: nousresearch/hermes-agent:latest
container_name: hermes-dashboard
restart: unless-stopped
command: dashboard --host 0.0.0.0 --insecure
user: "1000:1000"
ports:
- "9119:9119"
volumes:
- ./hermes/data:/opt/data
environment:
- GATEWAY_HEALTH_URL=http://hermes:8642
- TZ=Asia/Shanghai
networks:
- hermes-net
depends_on:
- hermes
webui:
image: ekkoye8888/hermes-web-ui:latest
container_name: hermes-webui
restart: unless-stopped
ports:
- "6060:6060"
volumes:
- ./hermes/data:/home/hermeswebui/.hermes
- ./hermes/hermes:/home/hermeswebui/.hermes/hermes-agent
- ./hermes/data/workspace:/workspace
- ./hermes/webui_data:/home/hermeswebui/.hermes-web-ui
environment:
- HERMES_HOME=/home/hermeswebui/.hermes
- HERMES_WEB_UI_HOME=/home/hermeswebui/.hermes-web-ui
- PORT=6060
- BIND_HOST=0.0.0.0
- TZ=Asia/Shanghai
- WANTED_UID=1000
- WANTED_GID=1000
- WORKSPACE_BASE=/workspace
networks:
- hermes-net
depends_on:
- hermes
networks:
hermes-net:
driver: bridge
这个docker-compose是我用千问同时分析清风小道君和github两篇文章ai出来的,非常感谢大佬们,我只是为大家提供了一点点的便捷。

