install.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/env bash
  2. # 一次性安装(可重复执行):创建专用用户 agentsvc、目录与权限、systemd 服务、agent-claude 命令。
  3. # 用法:sudo deploy/install.sh
  4. set -euo pipefail
  5. cd "$(dirname "$0")/.."
  6. ROOT=/srv/agent-server
  7. SVC=agentsvc
  8. [ "$(id -u)" = 0 ] || { echo "请用 sudo 运行" >&2; exit 1; }
  9. if ! id "$SVC" &>/dev/null; then
  10. useradd --system --home-dir "$ROOT/home" --no-create-home --shell /usr/sbin/nologin "$SVC"
  11. echo "已创建用户 $SVC"
  12. fi
  13. # 程序与共享资源:root 所有、服务只读(Agent 无法篡改自身代码、Python 环境和技能)
  14. install -d -o root -g root -m 0755 "$ROOT" "$ROOT/app" "$ROOT/runtime" "$ROOT/skills"
  15. chown -R root:root "$ROOT/app" "$ROOT/runtime" "$ROOT/skills"
  16. chmod -R a+rX "$ROOT/runtime" "$ROOT/skills"
  17. # 服务数据:只有 agentsvc 可访问(含 CLI 登录态、数据库、会话工作区)
  18. for d in home data managed-skills workspaces logs; do
  19. install -d -o "$SVC" -g "$SVC" -m 0700 "$ROOT/$d"
  20. chown -R "$SVC:$SVC" "$ROOT/$d"
  21. done
  22. # 资料库:agentsvc 组可读写,管理员加入该组后可以直接往里放资料
  23. install -d -o "$SVC" -g "$SVC" -m 2770 "$ROOT/knowledge"
  24. chown -R "$SVC:$SVC" "$ROOT/knowledge"
  25. chmod -R g+rwX "$ROOT/knowledge"
  26. if [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != root ]; then
  27. usermod -aG "$SVC" "$SUDO_USER"
  28. echo "已把 $SUDO_USER 加入 $SVC 组(重新登录后生效,用于往资料库放文件)"
  29. fi
  30. install -m 0644 deploy/agent-server.service /etc/systemd/system/agent-server.service
  31. install -m 0755 deploy/agent-claude /usr/local/bin/agent-claude
  32. install -m 0755 deploy/agent-codex /usr/local/bin/agent-codex
  33. systemctl daemon-reload
  34. systemctl enable agent-server >/dev/null
  35. echo "安装完成。下一步:deploy/deploy.sh 部署程序,然后执行 agent-claude 并输入 /login 登录。"