Lichess¶
Lichess.org 是一个完全开源、免费、无广告的在线国际象棋服务器。其后端 Lila 使用 Scala 3、Play Framework、Akka Streams 构建,依赖 MongoDB 存储海量棋局,使用 Elasticsearch 进行搜索,并与部署在独立服务器集群上的 Stockfish 引擎交互。
Lichess 是一个复杂的分布式系统。在单台(尤其是资源有限的)校园服务器上完整部署 Lichess 是不现实的。对于资源有限的服务器,将 Stockfish 或 Lc0 设置为网络引擎服务,然后在本地使用 ChessX 或 Scid 等 GUI 连接进行分析,是最为可行且资源友好的方案。
Lichess Bot¶
准备工作¶
环境配置¶
# Development
pip install -r requirements.txt
# Deployment: https://github.com/lichess-bot-devs/lichess-bot/wiki/How-to-use-the-Docker-image
docker pull lichessbotdevs/lichess-bot 大概1G
docker run -d -v /root/lichess-bot:/lichess-bot/config --name myBot --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 lichessbotdevs/lichess-bot
上面这条命令解读:
-v /root/lichess-bot:/lichess-bot/config:将/root/lichess-bot挂载到容器的/lichess-bot/config
Warning
可能发生“配置文件路径错误 -> 引擎意外终止 -> 容器刚启动就停止”,请仔细阅读配置文件里engine下的dir路径。
--log-driver=json-file --log-opt max-size=10m --log-opt max-file=3:限制日志文件大小,避免日志无限制增长占满磁盘空间。
Note
日志驱动程序选项--log-driver和--log-opt必须在镜像名称lichessbotdevs/lichess-bot之前指定,即由docker run命令本身解析,而不是传递给容器内部作为执行命令的一部分。
创建bot¶
- Lichess官网创建新账户,然后一盘对局也不要下!!
- 从Lichess设置获取API Key。
- 执行命令:
curl -d '' https://lichess.org/api/bot/account/upgrade -H "Authorization: Bearer <yourTokenHere>",预期返回{"ok":true}。 - 登录账户检查是否已有
bot头衔。
引擎准备¶
最好选择在部署机器上编译的引擎,或者是官网的通用版本,以避免因系统库版本不兼容导致引擎无法启动的问题。注意:上传文件后需要加权限。
Note
我用XFTP传的引擎文件,是用Ubuntu24.04编译的stockfish可执行文件,加权限后仍然报错:chess.engine.EngineTerminatedError: engine process died unexpectedly (exit code: 1)。开始时猜测是缺少.nnue文件,结果补传上去之后还报同样错。最终找到问题:服务器是Ubuntu22.04,不兼容我在WSL上手动编译的stockfish版本。在官网下载对应的x64通用版本后成功解决问题。
项目配置¶
配置文件编写参考config.yml。自定义配置参考:Extra-customizations。
项目内(容器外)需要自己准备的文件:
engines/<engine_name>:引擎文件engines/books/book1.bin:预定义开局库,可参考stockfish-booksengines/syzygy/3-4-5-syzygy:残局库,可参考syzygy1/tb