跳到主要内容

Docker 版部署教程

MSRPilot Docker 版(镜像 demonr/msrpilot-cn)面向 Linux 服务器、VPS 和 NAS,无需安装 Node.js 和桌面环境,通过内置的 Web 管理台在浏览器中完成账号管理、脚本配置、运行控制和日志查看,界面与 Windows 版一致。

Windows 桌面版的使用说明见 MSRPilot 使用指南。

两个版本的区别​

Windows 桌面版Docker 版
运行环境Windows 10/11 + Node.js 24+任意支持 Docker 的 Linux / NAS
操作方式桌面程序浏览器访问 Web 管理台
定时运行软件内设置(任务计划程序)内置 cron 调度器(CRON_SCHEDULES)
授权24 小时试用 + 授权码24 小时试用 + 授权码
数据位置程序目录(config.json、accounts.json、sessions/)Docker 卷或宿主机目录(config/、sessions/、diagnostics/)

安全提示

账号密码、TOTP 密钥、授权码和 .env 文件都属于敏感数据。.env 已默认权限 600,请勿提交到公开平台;反馈问题时不要粘贴完整日志凭据。

开始前准备​

  • 一台可 24 小时运行的 Linux 服务器 / VPS / NAS;
  • 已安装 Docker 和 Docker Compose v2(未安装时,一键安装脚本可自动安装 Docker);
  • 可正常登录 Microsoft Rewards 的账号;
  • 国内网络直连即可,脚本默认使用国内搜索源,无需配置代理。

方式一:一键安装(推荐)​

SSH 登录服务器,执行:

bash <(curl -fsSL https://gh-proxy.com/https://raw.githubusercontent.com/DemonRR/msrpilot-cn/master/install.sh)

脚本运行后还需从 GitHub 下载 compose.yaml 和 .env 模板,直连失败会自动通过加速通道重试;加速节点不可用时可用 MSRPILOT_GH_PROXY=<加速前缀> 换一个前缀,或用 MSRPILOT_COMPOSE_URL / MSRPILOT_ENV_URL 直接指定完整下载链接。

脚本会自动完成:环境检查(可自动安装 Docker)→ 下载配置模板 → 交互式向导 → 拉取镜像 → 启动容器。

安装向导​

  1. 选择安装方式:快速安装(推荐,其余全部默认)或自定义安装(定时 / 端口 / 通知 / 授权码逐步配置);
  2. 填写微软账号:两种方式都可留空,装完在管理台“账号管理”里添加;自定义安装支持账号 + TOTP 密钥,密码可留空走 token 登录;
  3. Web 管理台:设置端口(默认 3010)、是否仅本机访问;API_TOKEN 建议自动生成;
  4. 授权码:可留空先用 24 小时免费试用,稍后在 .env 中补填;
  5. PushPlus 通知:可选,任务完成后推送运行摘要到微信;
  6. 确认配置摘要后开始安装,完成后终端会显示管理台地址和 API_TOKEN。

安装向导输出示例(快速安装,填入一个账号):

欢迎使用 MSRPilot CN(Docker 版)安装向导

请选择安装方式:
1) 快速安装(推荐 · 默认配置 · 只需填一次账号)
2) 自定义安装(定时 / 端口 / 通知 / 授权码逐步配置)
3) 退出
请选择 [1]: 1
安装目录(存放配置与数据) [/root/msrpilot-cn]: /root/msrpilot-cn
微软账号邮箱(可留空,装完在管理台「账号管理」添加) []: you@example.com
该账号密码(可留空): ********

──────────────────────── 配置确认 ────────────────────────
安装方式 : 快速安装(其余全部使用默认配置)
安装目录 : /root/msrpilot-cn
时区 : Asia/Shanghai
运行时间表 : 30 7 * * *;30 15 * * *
启动即跑一次 : false
微软账号数量 : 1
账号 1 : you@example.com (密码已设置)
Web 管理台 : true
访问地址 : http://192.168.1.10:3010/
API_TOKEN : 8f14e45fceea167a5a36dedd4bea2543344d0a5b4f7d15e12fa4b1c2d3e5f607
授权码 : (空,使用 24 小时试用)
PushPlus 通知 : 未启用
──────────────────────────────────────────────────────────

确认无误,开始安装? [y]: y

安装完成时的输出示例:

[ OK ] 已下载 compose.yaml
[ OK ] 已下载 .env 模板(.env.example)
[ OK ] 配置就绪: compose.yaml + .env(权限 600)
[INFO] 拉取镜像 demonr/msrpilot-cn:latest(可能需要几分钟;国内网络慢可配置镜像加速)...
[INFO] 启动容器 ...
NAME STATUS PORTS
msrpilot-cn Up 3 seconds 0.0.0.0:3010->3010/tcp
[ OK ] 安装信息已保存: /root/msrpilot-cn/install-info.txt

[ OK ] MSRPilot CN 安装完成!

下一步:
1. 浏览器打开管理台 → 输入 API_TOKEN
2. 回到「数据概览」点「启动」,或等待定时自动运行

管理台: http://192.168.1.10:3010/
信息已存档: /root/msrpilot-cn/install-info.txt

安装信息(管理台地址、API_TOKEN、常用命令)会自动保存到安装目录下的 install-info.txt,默认安装目录为 ~/msrpilot-cn。

方式二:手动安装​

不想使用一键脚本时,可手动准备两个文件:

  1. 下载 compose.yaml 和 env.example 放入同一目录;
  2. env.example 复制重命名为 .env,至少填写:
# Web 管理台访问令牌(必填,务必使用强随机值)
API_TOKEN=强随机64位hex
# 授权码(留空 = 24 小时免费试用)
LICENSE_KEY=
# ── 账号(只透传前 2 个,更多账号在管理台「账号管理」添加)──
ACCOUNT_1_EMAIL=xxx@outlook.com
ACCOUNT_1_PASSWORD=xxxx
# ACCOUNT_1_TOTP_SECRET=开启2FA时填写

生成强随机 API_TOKEN:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# 没有 node 时可用: openssl rand -hex 32
  1. 按需修改 compose.yaml 中的关键项:
变量默认值说明
CRON_SCHEDULES'0 7 * * *;0 19 * * *'运行时间表,多个用英文分号分隔
RUN_ON_START'true'启动容器后是否立即跑一次任务
TZ'Asia/Shanghai'时区,影响 cron 触发时间
API_MODE注释状态设为 'true' 开启 Web 管理台,并同时放开 ports: 3010 映射
LICENSE_KEY空授权码,也可只在 .env 中填写
  1. 启动:
docker compose up -d
docker compose logs -f

日志中应看到授权检查信息(首次为“24 小时免费体验已开始”)和 cron 调度器启动信息。

Web 管理台​

API_MODE=true 且开放 3010 端口后,浏览器打开:

http://服务器IP:3010/

首次打开会要求输入 API_TOKEN,令牌只保存在浏览器本地。

Web 管理台令牌输入

管理台与 Windows 版界面一致,常用页面:

页面用途
数据概览查看账号总积分、本次收益、运行状态,点击“启动/停止”控制任务
账号管理添加、导入、启停账号(保存到 config/accounts.json,优先级高于 .env)
脚本配置任务开关、搜索行为、日志过滤、PushPlus 等通知配置,保存后下次运行生效
运行日志实时查看运行日志
授权状态查看当前授权/试用状态与机器码

管理台数据概览

管理台账号管理

管理台脚本配置

务必设置强随机 API_TOKEN

管理台可以控制任务运行并读取账号状态。使用弱令牌或空令牌时容器会拒绝启动;任何能访问该端口的人拿到令牌即可控制你的容器。不需要外网访问时,可在 compose.yaml 中把端口绑定改为 127.0.0.1:3010:3010 仅本机访问。

授权​

Docker 版与 Windows 版使用同一套授权体系。授权码遵循一机一码:激活时绑定当前设备的机器码,一个授权码供一台设备使用。

场景操作
首次体验无需配置,首次启动自动开始 24 小时免费试用
正式激活在 .env 中填写 LICENSE_KEY=你的授权码,重启容器自动激活
查看状态执行下方命令,或打开管理台“授权状态”页
docker exec msrpilot-cn node /usr/src/microsoft-rewards-script/scripts/docker/license_check.js status

机器码说明(一机一码)​

  • 物理机 / 常规 VPS(KVM):机器码取自宿主机硬件指纹(主板 UUID / 整机序列号),写在主板 SMBIOS 里——重装系统、删除数据卷、重建容器、修改 compose.yaml 都不会改变机器码,也没有手动指定的入口(防止轮换机器码刷试用)。
  • 无硬件标识的环境(部分容器平台 / 虚拟机):按“config 卷持久化缓存 → 主机名指纹”的顺序取值;保持数据卷不删除,机器码就保持稳定。也可以用 LICENSE_MACHINE_CODE 手动固定。
  • 试用(24 小时)以服务器记录为准:删缓存、改本地文件、重建容器都无法重置;同一 IP 7 天内新建试用超过上限会被拒绝。
  • 换机器 / 机器码变化导致授权失效时,在管理后台或客户端使用换绑功能把授权迁移到新机器码(每个授权码自带换绑次数)。

管理台授权状态

PushPlus 任务完成通知​

Docker 版的 PushPlus 只在全部账号运行结束后推送一条运行摘要(新增积分、余额、失败情况),不推送过程日志。到 pushplus.plus 用微信登录即可获取 token。

配置位置任选其一:

  • 一键安装向导中直接填写;
  • .env / compose.yaml 中设置 CONFIG_PUSHPLUS_ENABLED: 'true' 和 CONFIG_PUSHPLUS_TOKEN;
  • Web 管理台“脚本配置”中的 PushPlus 设置。

升级与数据​

数据默认存放在命名卷 msrpilot_config / msrpilot_sessions / msrpilot_diagnostics(一键安装默认方式),升级镜像、重启容器都不会丢失。Linux 用户如需在宿主机直接管理文件,可按 compose.yaml 注释切换为 bind mount(./config、./sessions、./diagnostics)。

方式一:重新运行安装脚本​

bash <(curl -fsSL https://gh-proxy.com/https://raw.githubusercontent.com/DemonRR/msrpilot-cn/master/install.sh)

检测到已有安装时会进入升级模式:拉取新镜像并重建容器,.env、config.json、accounts.json 全部保留。

方式二:手动升级​

cd ~/msrpilot-cn # 进入 compose.yaml 所在目录
docker compose pull
docker compose up -d

升级完成的输出示例:

[INFO] 拉取新镜像 ...
[INFO] 重建容器 ...
NAME STATUS PORTS
msrpilot-cn Up 10 seconds 0.0.0.0:3010->3010/tcp
[ OK ] 升级完成。管理台: http://192.168.1.10:3010/

常见问题​

镜像拉取失败 / 速度极慢​

配置 Docker Hub 镜像加速后重试(已完成的下载会续传):

sudo tee /etc/docker/daemon.json <<'CFG'
{ "registry-mirrors": ["https://docker.1panel.live", "https://docker.m.daocloud.io"] }
CFG
sudo systemctl restart docker

提示“授权服务器响应签名校验失败”​

授权服务器未部署签名密钥,或客户端连到了非官方服务器。确认 LICENSE_SERVER_URL(默认 https://msrm.xwx.ooo)指向官方地址;自建授权服务器的用户需按服务端说明部署 keys/license_signing.pem。

提示“该网络环境试用次数已达上限”​

同一 IP 7 天内新建试用超过服务端上限。正式使用请设置 LICENSE_KEY 激活。

提示“无法连接授权服务器”​

已激活的机器断网时不允许运行(有效期以服务端为准),恢复网络后重试即可。

管理台打开显示 401 / JSON​

容器设置了 API_TOKEN,数据接口需要令牌。确认访问的是根路径 /,页面会自动弹出令牌输入框;输入 .env 中的 API_TOKEN 即可。

安装时没有添加账号,任务会运行吗​

安装向导允许账号留空。没有账号时,定时触发不会产生有效运行;在管理台“账号管理”里添加账号并保存后,等下一次定时触发或在“数据概览”点击“启动”即可。

容器启动后没有立即跑任务​

检查 RUN_ON_START 是否为 'false'(默认只按 cron 时间运行)。需要启动即跑一次时设为 'true',或在管理台“数据概览”点击“启动”。

修改配置后不生效​

  • .env / compose.yaml 修改后执行 docker compose up -d 重建容器;
  • 管理台“脚本配置”中修改的行为配置保存后下次运行即生效,无需重启容器。

激活时提示“授权码已绑定其他设备”​

该授权码已绑定其他机器(一机一码)。在授权管理后台解绑 / 换绑后重新激活;或使用管理台内的自助换绑(有次数限制)。

获取支持​

  • 软件内:打开 Web 管理台或 Windows 版中的“在线留言”发起会话。
  • 购买或续期:访问授权商城。
  • Windows 版使用问题:参见 MSRPilot 使用指南。