From 04c652c3ff5084f22f1a5e94a5479e11a3fe7df7 Mon Sep 17 00:00:00 2001 From: gwsun <13051433+sun-wenwenguo@user.noreply.gitee.com> Date: Thu, 26 Mar 2026 06:31:22 +0000 Subject: [PATCH] =?UTF-8?q?add=20start.txt.=20=E6=B7=BB=E5=8A=A0=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E4=B8=80=E9=94=AE=E5=90=AF=E5=8A=A8=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E5=8F=8A=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gwsun <13051433+sun-wenwenguo@user.noreply.gitee.com> --- start.txt | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 start.txt diff --git a/start.txt b/start.txt new file mode 100644 index 0000000..d1e3dd4 --- /dev/null +++ b/start.txt @@ -0,0 +1,166 @@ +cat > "$HOME/opencloudos-openclaw.sh" <<"EOF" +#!/bin/bash +set -e + +CONTAINER_NAME="openclaw-xfce" +IMAGE_NAME="opencloudos/opencloudos9-openclaw" +VNC_PORT="5901" +GATEWAY_PORT="18789" +NEED_ONBOARD="false" +echo "==============================" +echo "OpenClaw 一键启动脚本" +echo "==============================" + +echo "🔍 检查 Docker 环境..." + +# 1. 检查 docker 是否存在 +if ! command -v docker >/dev/null 2>&1; then + echo "📥 未检测到 Docker,尝试安装..." + + if [ "$(id -u)" -ne 0 ]; then + echo "❌ 当前用户无权限安装 Docker" + echo "👉 请使用 sudo 重新执行:" + echo " sudo $0" + exit 1 + fi + + if command -v dnf >/dev/null 2>&1; then + dnf install -y docker + elif command -v yum >/dev/null 2>&1; then + yum install -y docker + else + echo "❌ 未找到 yum/dnf,无法自动安装 Docker" + exit 1 + fi +fi + +# 2. 检查 docker 服务 +if ! systemctl is-active --quiet docker; then + echo "🚀 Docker 未运行,尝试启动..." + + if [ "$(id -u)" -ne 0 ]; then + echo "❌ 当前用户无权限启动 Docker" + echo "👉 请使用 sudo 重新执行:" + echo " sudo $0" + exit 1 + fi + + systemctl start docker +else + echo "✅ Docker 服务已运行" +fi + +# 3. 设置开机自启 +if ! systemctl is-enabled --quiet docker; then + echo "⚙️ 设置 Docker 开机自启..." + + if [ "$(id -u)" -ne 0 ]; then + echo "❌ 当前用户无权限设置开机自启" + echo "👉 请使用 sudo 重新执行:" + echo " sudo $0" + exit 1 + fi + + systemctl enable docker +else + echo "✅ Docker 开机自启已启用" +fi + +# 4. 最终权限检查(关键) +if ! docker info >/dev/null 2>&1; then + echo "❌ 当前用户无法访问 Docker" + echo "👉 请使用 sudo 执行脚本:" + echo " sudo $0" + exit 1 +fi +echo "✅ Docker 环境检查通过" +# 如果镜像不存在就自动拉取 +if ! docker image inspect "${IMAGE_NAME}" >/dev/null 2>&1; then + echo "📥 镜像不存在,开始拉取: ${IMAGE_NAME}" + docker pull "${IMAGE_NAME}" +fi + +if docker ps -a --format '{{.Names}}' | grep -qx "${CONTAINER_NAME}"; then + echo "📦 检测到已有容器" + + if [ "$(docker inspect -f '{{.State.Running}}' "${CONTAINER_NAME}")" != "true" ]; then + echo "🚀 启动容器..." + docker start "${CONTAINER_NAME}" >/dev/null + else + echo "✅ 容器已在运行" + fi +else + echo "🚀 创建新容器..." + docker run -d \ + --name "${CONTAINER_NAME}" \ + --privileged \ + --security-opt seccomp=unconfined \ + -p ${VNC_PORT}:${VNC_PORT} \ + -p ${GATEWAY_PORT}:${GATEWAY_PORT} \ + "${IMAGE_NAME}" >/dev/null + + NEED_ONBOARD="true" +fi + +echo "⏳ 等待容器启动..." +sleep 5 + +echo "🔍 检查环境..." +docker exec "${CONTAINER_NAME}" /bin/bash -c ' +whoami || true +id || true +node --version || true +npm --version || true +openclaw --version || true +openclaw plugins list || true +' + +if [ "${NEED_ONBOARD}" = "true" ]; then + echo + echo "⚙️ 首次启动,开始 onboard(现在进入交互,完成后脚本会继续)" + echo + docker exec -it "${CONTAINER_NAME}" /bin/bash -c "openclaw onboard --install-daemon" || true +else + echo + echo "⏭️ 检测到容器已存在,跳过 onboard" +fi + + +# 先判断 gateway 进程是否已经存在(避免重复启动) +if docker exec "${CONTAINER_NAME}" /bin/bash -c "ps -aux | grep '[o]penclaw-gateway'" >/dev/null 2>&1; then + echo "✅ gateway 已在运行(检测到 openclaw-gateway 进程)" +else + echo "🚀 启动 gateway..." + docker exec -d "${CONTAINER_NAME}" \ + /bin/bash -c "nohup openclaw gateway --port ${GATEWAY_PORT} > /tmp/gateway.log 2>&1 &" +fi + +echo "⏳ 等待 gateway 启动..." +sleep 5 + +echo "🔍 检查 gateway 状态..." + +if docker exec "${CONTAINER_NAME}" /bin/bash -c "ps -aux | grep '[o]penclaw-gateway'" >/dev/null 2>&1; then + echo "✅ gateway 进程正在运行" + + echo "👉 宿主机端口映射:" + docker port "${CONTAINER_NAME}" | grep "${GATEWAY_PORT}" || true + + +else + echo "❌ gateway 未启动" + + echo "👉 容器内进程:" + docker exec "${CONTAINER_NAME}" /bin/bash -c "ps -aux | grep openclaw | grep -v grep || true" + + echo "👉 容器内日志:" + docker exec "${CONTAINER_NAME}" /bin/bash -c "cat /tmp/gateway.log || true" + + exit 1 +fi +echo +echo "🎉 启动完成!" +echo "👉 VNC: 127.0.0.1:${VNC_PORT}" +echo "👉 打开: http://127.0.0.1:${GATEWAY_PORT}" +EOF +chmod +x "$HOME/opencloudos-openclaw.sh" && sudo bash "$HOME/opencloudos-openclaw.sh" \ No newline at end of file -- Gitee