网上有太多胡说八道的了,没啥用,还是要自己看文档摸索
我并不喜欢使用127.0.0.1这样的ip去访问,还是希望作为一个正常的网站来用,所以使用了traefik进行反代,这里的坑略多,不过还是都解决了。
我的服务器是ubuntu,所有的操作不要在root用下进行。创建的本地目录 /data/openclaw 需要给与权限 chown 1000:1000 -R /data/openclaw
docker-compose.yml文件内容如下
services:
openclaw:
image: alpine/openclaw:latest
container_name: openclaw
user: "1000:1000"
volumes:
# 记得先创建本地目录,比如我的
- /data/openclaw:/home/node/.openclaw
- /data/openclaw/workspace:/home/node/.openclaw/workspace
environment:
- HOME=/home/node
- TERM=xterm-256color
- NODE_ENV=production
# 建议创建 .env 文件设置: OPENCLAW_GATEWAY_TOKEN=your-secure-token
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN:-}
- TZ=${OPENCLAW_TZ:-UTC}
# 跳过首次初始化检查(仅高级用户使用)
# - OPENCLAW_SKIP_SETUP=1
restart: unless-stopped
# 默认启动 gateway(首次需要初始化,见下方说明)
command: openclaw gateway run --allow-unconfigured
healthcheck:
test:
[
"CMD",
"node",
"-e",
"fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
]
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
# 这是我的traefik工作的网络,需要修改为你自己的
networks:
- work-net
labels:
- "traefik.enable=true"
- "traefik.http.routers.openclaw.rule=Host(`openclaw.yourdomain.com`)"
- "traefik.http.routers.openclaw.entrypoints=websecure"
- "traefik.http.routers.openclaw.tls.certresolver=cloudflare"
- "traefik.http.services.openclaw.loadbalancer.server.port=18789"
networks:
work-net:
external: true
复制文件到/data/openclaw路径下,然后新建一个.env文件,内容是
OPENCLAW_GATEWAY_TOKEN=YOUR-TOKEN
OPENCLAW_TZ=Aisa/Shanghai
注意Token里最好不要有特殊字符,英文大小写+数字即可
执行 docker compose up -d
这样就可以通过 https://openclaw.yourdomain.com 进行访问了
现在你还需要进行一些设置,否则无法进入聊天网页,注意,以下的命令都必须在/data/openclaw下执行
# 初始化操作
sudo docker compose exec openclaw openclaw onboard
这里跟着网上来就行,没什么不同的,下面的比较重要
# 配置允许非本机访问
sudo docker compose exec openclaw openclaw config set gateway.bind lan
sudo docker compose exec openclaw openclaw config set gateway.auth.token YOUR_TOKEN
# 配置允许访问的网址头
sudo docker compose exec openclaw openclaw config set gateway.controlUi.allowedOrigins '["https://openclaw.yourdomain.com", "http://localhost:18789", "http://127.0.0.1:18789"]'
# 配置受信代理,此处你应该查询你的traefik所处的网络的ip,并替换下面的172.19
sudo docker compose exec openclaw openclaw config set gateway.trustedProxies '["127.0.0.1", "::1", "172.19.0.0/16"]'
# 查看正在访问的设备,此时你应该打开了https://openclaw.yourdomain.com
sudo docker compose exec openclaw openclaw devices list
# 允许某个设备进行访问,注意,以后如果要配置Telegram,也是同样的方法进行允许
# 注意替换最后的ID为你的
sudo docker compose exec openclaw openclaw devices approve e6bb662a-xxxx-xxxx-xxxx-262764723c88
# 重启龙虾
sudo docker compose restart
到这里,你应该可以直接通过网址 https://openclaw.yourdomain.com 访问龙虾了。
