中文 | English
使用 Docker 运行 富途 OpenD 或 moomoo OpenD,并通过自动化流程检查上游版本更新。
本项目不是富途或 moomoo 官方项目。使用本项目造成的任何问题由使用者自行承担。
以下示例使用富途镜像。login_pwd_md5 是登录密码的 32 位 MD5 十六进制字符串;不要把真实账号或密码提交到代码仓库。
docker run 使用主机目录绑定挂载,把 OpenD 的设备登录状态保存到当前目录。这样容器重启后通常不需要再次输入手机验证码,也不需要重复完成设备验证。
docker run -d \
--name opend \
--restart unless-stopped \
-p 11111:11111 \
-v ./futu-opend-state:/root/.com.futunn.FutuOpenD/F3CNN \
ghcr.io/chasenlab/futu-opend:latest \
/docker-entrypoint.sh \
-login_account=<account number> \
-login_pwd_md5=<md5 string> \
-api_port=11111 \
-api_ip=0.0.0.0 \
-telnet_port=22222 \
-lang=chs使用 moomoo 镜像时,将镜像替换为 ghcr.io/chasenlab/moomoo-opend:latest,并将 -lang=chs 改为 -lang=en。
更多启动参数请查看命令行 OpenD 文档。
编辑 docker-compose.yml 后启动:
docker compose up -dCompose 配置使用配置文件的绑定挂载和 Docker 命名卷保存 OpenD 状态。命名卷由 Docker 管理,不会在当前目录创建状态目录,例如:
services:
opend:
image: ghcr.io/chasenlab/futu-opend:latest
restart: unless-stopped
ports:
- "11111:11111"
volumes:
- ./example.xml:/opend/FutuOpenD.xml:ro
- futu-opend-state:/root/.com.futunn.FutuOpenD/F3CNN
volumes:
futu-opend-state:如果使用 moomoo 镜像,请挂载对应的 OpenD.xml,并使用 moomoo 专用状态目录 /root/.com.moomoo.OpenD/F3CNN。
首次登录或设备锁开启时,OpenD 可能要求输入手机验证码。验证码通过后,OpenD 会在状态目录中保存设备登录状态。容器重启时必须保留这个目录,否则可能再次触发验证码流程。
富途镜像使用以下目录:
/root/.com.futunn.FutuOpenD/F3CNN
使用 docker run 时,可以使用宿主机目录绑定挂载它:
-v ./futu-opend-state:/root/.com.futunn.FutuOpenD/F3CNN使用 Docker Compose 时,请使用命名卷:
volumes:
- futu-opend-state:/root/.com.futunn.FutuOpenD/F3CNNmoomoo 镜像使用不同的状态目录:
/root/.com.moomoo.OpenD/F3CNN
请为 moomoo 单独使用对应的命名卷或宿主机目录,避免与富途状态目录混用。
注意:
- 只挂载
/opend/FutuOpenD.xml不能保存验证码状态。 - 不要把状态目录提交到 Git 或公开分享,其中可能包含设备登录信息。
- 设备锁、账号、密码或登录环境发生变化时,仍可能需要重新验证。
- 删除命名卷、PVC 或宿主机状态目录后,下一次登录可能再次要求验证码。
OpenD 启动后,可以通过 Telnet 运维端口发送操作命令。官方操作命令说明见中文文档和英文文档。
docker exec -it opend bash
telnet 127.0.0.1 22222
input_phone_verify_code -code=<verification code>如果容器没有安装 bash,可以使用:
docker exec -it opend sh-
富途:将
example.xml挂载为/opend/FutuOpenD.xml。 -
moomoo:将配置文件挂载为
/opend/OpenD.xml,并按镜像要求设置启动参数。 -
使用
login_pwd_md5时,可以执行md5计算密码摘要:md5 -s '<your password>'
建议通过 Secret、环境变量或部署平台的密钥管理功能提供账号和密码,不要把真实凭据写入 XML、Compose 文件或命令历史。
已发布镜像支持 linux/amd64 和 linux/arm64。富途当前只提供 x86-64 OpenD 二进制文件,因此 ARM64 镜像通过 QEMU 用户态模拟运行,性能可能低于 AMD64。
git clone https://github.com/chasenlab/futu-opend.git
cd futu-opend构建富途多架构镜像:
docker buildx build \
--platform linux/amd64,linux/arm64 \
--build-arg BRAND=Futu \
--build-arg DOMAIN=futunn.com \
--build-arg BIN_NAME=FutuOpenD \
-t futu-opend \
-f Dockerfile .构建 moomoo 多架构镜像:
docker buildx build \
--platform linux/amd64,linux/arm64 \
--build-arg BRAND=moomoo \
--build-arg DOMAIN=futustatic.com \
-t moomoo-opend \
-f Dockerfile .本地运行时使用单一架构和 --load:
docker buildx build --platform linux/arm64 --load \
--build-arg BRAND=Futu \
--build-arg DOMAIN=futunn.com \
--build-arg BIN_NAME=FutuOpenD \
-t futu-opend:arm64 .pip install -r requirements.txt
python main.py --addr <futu-opend-ip>在中国大陆网络环境中,可以使用 PyPI 镜像:
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/