astrbot 中文文档 下载 App

Docker 部署:服务器生产环境的首选方案

云服务器上长期挂机器人,Docker 是官方文档着墨最多、坑最少的方式。以下命令默认已装 Docker,没装的先看 Docker 官方文档装好再来。

方式一:单容器运行

mkdir astrbot
cd astrbot
sudo docker run -itd -p 6185:6185 -p 6199:6199 \
  -v $PWD/data:/AstrBot/data \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  --name astrbot soulter/astrbot:latest

Windows 下去掉 sudo。两个端口的含义:6185 是管理面板,6199 是反向 WebSocket 服务端口,接消息平台时要用。

大陆拉不动镜像:把镜像名换成 m.daocloud.io/docker.io/soulter/astrbot:latest,其余不变(镜像加速由 DaoCloud 提供)。

Windows Docker Desktop 用 CMD 写法:

docker run -itd -p 6185:6185 -p 6199:6199 -e TZ=Asia/Shanghai -v "%cd%\data:/AstrBot/data" --name astrbot soulter/astrbot:latest

PowerShell 把 %cd% 换成 ${PWD}。TZ 填 IANA 时区格式,中国就是 Asia/Shanghai。WSL2 环境同步宿主机时间需要额外挂载 /etc/localtime 与 /etc/timezone,路径写 \\wsl.localhost\ 发行版名 开头。

看运行日志:sudo docker logs -f astrbot。

方式二:Docker Compose

先 clone 官方仓库,然后:

sudo docker compose up -d

compose.yml 里同样可以把镜像替换为 DaoCloud 加速地址。

两种变体编排文件也在仓库里:

云服务器端口放行

部署在哪朵云上,就去哪家控制台的安全组放行 6185 和 6199。宝塔用户在面板的安全页同步放行。这是新手最常漏的一步,表现为面板打不开、协议端连不上。

容器内重置密码

镜像内置了 CLI,忘记密码不用进配置文件:

sudo docker exec -it astrbot astrbot password
sudo docker restart astrbot

第一个 astrbot 是容器名,名字不对就用 sudo docker ps 查。带 --username 参数可同时改用户名。改完必须重启容器生效。

容器网络两个易错点