RenewX 全面部署教程:基于 Docker 的 MS365 E5/E3 订阅自动续期系统搭建指南(含 Config.xml 配置、Entra 应用创建、API 权限设置与保活模式讲解)
准备工作
一个E3/E5全局管理员账号
项目地址: https://github.com/Gladtbam/ms365_e5_renewx
参考博客: https://blog.csdn.net/qq_33212020/article/details/119747634
一台Linux系统的云服务,推荐使用Debian12,Ubuntu22/24
配置最低要求:1核,1G RAM,5G 存储,有Docker环境
Config.xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<!--站点服务器基本配置-->
<Serivce>
<!--服务访问端口-->
<Port>1066</Port>
<!--管理员密码(管理员登录路由/Admin/Login) 重要:首次启动前必须更改-->
<LoginPassword>123456789010</LoginPassword>
<!--是否启用内核多线程支持-->
<CoreMultiThread>true</CoreMultiThread>
<!--网站备案(选填)-->
<ICP>
<!--备案显示文本-->
<Text></Text>
<!--备案管理查询机构跳转链接-->
<Link>https://beian.miit.gov.cn</Link>
</ICP>
<!--Bootstrap CDN 若要更改请务必使用bootstrap@5.1.3版本(选填)-->
<CDN>
<!--Bootstrap CSS文件CDN bootstrap.min.css-->
<CSS>https://cdn.staticfile.org/bootstrap/5.1.3/css/bootstrap.min.css</CSS>
<!--Bootstrap JS文件CDN bootstrap.bundle.min.js-->
<JS>https://cdn.staticfile.org/bootstrap/5.1.3/js/bootstrap.bundle.min.js</JS>
</CDN>
</Serivce>
<!--站点Kestrel服务器HTTPS配置 (只支持IIS证书类型 即PFX格式的证书)-->
<HTTPS>
<!--Kestrel是否启用HTTPS(SSL加密传输)-->
<Enable>false</Enable>
<!--SSL证书文件名 (需要将PFX格式的SSL证书放置于该配置文件的同级目录Deploy文件夹下) 如e5.sundayrx.net.pfx-->
<!--不填则默认使用Dev localhost 本地证书-->
<Certificate></Certificate>
<!--SSL证书密钥(PFX证书的访问密钥)-->
<Password></Password>
</HTTPS>
<!--共享站点配置,不共享可无视以下内容 (若要共享站点 请自备以下所需的配置信息 且配置中HTTPS必须启用)-->
<ShareSite>
<!--是否启用站点共享-->
<Enable>false</Enable>
<!--SMTP邮件发送支持-->
<SMTP>
<!--发件邮箱-->
<Email></Email>
<!--邮箱密钥-->
<Password></Password>
<!--SMTP服务器地址-->
<Host></Host>
<!--SMTP服务器端口-->
<Port>587</Port>
<!--SMTP服务器是否使用SSL传输-->
<EnableSSL>true</EnableSSL>
</SMTP>
<!--第三方OAuth登录支持(至少启用以下一种OAuth否则其他用户无法注册)-->
<OAuth>
<!--微软登录授权-->
<Microsoft>
<!--是否启用该OAuth-->
<Enable>true</Enable>
<!--应用程序Id-->
<ClientId></ClientId>
<!--应用程序访问机密-->
<ClientSecret></ClientSecret>
</Microsoft>
<!--GitHub登录授权-->
<Github>
<!--是否启用该OAuth-->
<Enable>true</Enable>
<!--应用程序Id-->
<ClientId></ClientId>
<!--应用程序访问机密-->
<ClientSecret></ClientSecret>
</Github>
</OAuth>
<!--站点系统设置-->
<System>
<!--站点启动后默认是否允许用户注册 建议为false-->
<AllowRegister>false</AllowRegister>
<!--站点启动后默认公告(换行符请使用 
 进行换行)-->
<Notice></Notice>
<!--站点运营者-->
<Master></Master>
<!--站点运营者推广链接-->
<MasterLink></MasterLink>
<!--站点新用户默认配额数-->
<DefaultQuota>1</DefaultQuota>
<!--站点自动特赦时间间隔 (单位:天 至少30天)-->
<AutoSpecialPardonInterval>30</AutoSpecialPardonInterval>
</System>
</ShareSite>
</Configuration>
部署RenewX
修改压缩包中的 Config.xml 配置文件
一定要修改初始密码,修改为12位以上字母大小写+数字的强密码

准备目录与文件
# 准备目录
mkdir -p /www/wwwroot/RenewX/Deploy
mkdir -p /www/wwwroot/RenewX/appdata
# 把修改好的 Config.xml 放到:
/www/wwwroot/RenewX/Deploy/Config.xml
拉取镜像
docker pull gladtbam/ms365_e5_renewx:latest
# 或者备用
# docker pull ghcr.io/gladtbam/ms365_e5_renewx:latest
使用Docker部署
# 使用 docker run -d 部署,并把数据存到 /www/wwwroot/RenewX
docker run -d \
-p 1066:1066 \
-v /www/wwwroot/RenewX/Deploy:/renewx/Deploy \
-v /www/wwwroot/RenewX/appdata:/renewx/appdata \
--name RenewX \
--restart=unless-stopped \
gladtbam/ms365_e5_renewx:latest
访问
http://你的服务器IP:1066
创建用户
访问 M365 admin center https://admin.cloud.microsoft
创建一个新用户,最好不要用全局管理员,这个新用户只用来保活
设置基本信息,并设置强密码

选择地址与许可证

保持默认,无管理员权限

检查内容,完成

Entra创建应用
访问Entra https://entra.microsoft.com ,用刚刚创建的账号登录
注册应用程序

保存 客户端ID

添加平台,选择 移动和桌面应用程序

选择 microsoftonline

在当前页面找到 允许公共客户端流,修改为 是

设置应用API权限
访问 http://你的服务器IP:1066
点击添加运行账号

这里就是添加账号的地方,需要仔细说明一下
MS365 E5账号:就是刚刚创建的alive的账号
应用程序(客户端)ID:就是 Entra-应用注册-MS365_RenewX-概述中的
应用程序(客户端) ID第三项,账号密码/客户端机密:如果是登录调用填的是E5账号密码;如果是非登录调用则是客户端机密,获得这个客户端机密,需要在应用中创建一个客户端密码
这个选项,选中为登陆调用,未选中未非登录调用
下面的两组权限,就是不同的调用方法分别所需要的权限,不论你用哪种调用方法,建议把两组权限都配上,这样也方便切换
推荐使用登录调用的方法,但是我这里会把两种方法都介绍一下

登陆调用
选中 API权限,添加,选择Graph

选择 委托的权限,登录调用选择这个;把权限名称复制上去搜索,不要有多余符号与空格;然后选中对应的权限;不要急着点添加,我们可以一次添加多个权限,如果你点了添加,还要重复选择上图的步骤

权限名称一定要对应,名称不符合是一定不是,重复添加,直到这三行的权限添加完毕
再点下面的添加权限

添加后大概是这样的,这里点不了授权,因为这个账户没有权限
需要切换到admin账户授权

然后切换到admin用户,打开MS365_RenewX

代表组织授予权限

非登录调用
这里的非登录调用的权限要去admin管理员账户添加,在普通账户添加是不行的
还是选择Graph

选择 应用程序权限

跟上面一样,按这个往里加

添加完大概这样

代表同意

切换到alive用户

保存好这两个值,因为这个值你下次就无法查看了,只出现一次

配置调用RenewX
登录调用
第一行是alive账户
第二行是应用的 应用程序(客户端)ID
登录调用,最后一行填写E5账户,alive账户的密码
非登录调用,最后一行填写应用的客户端密码的值,不是机密ID

配置完成后
然后就会按照一定的时间间隔进行调用
不要看到 正在运行,就不管了,看 下次调用时间,到时间看看能否正常调用
一般第一次调用可能会出现部分无法调用,可能是Entra没完全同步,或者是配置有问题
但是只有有 成功 的项,说明问题不大

过一会儿再看,现在就一切正常了,最好每周看两次,确定持续运行,过了一会儿,第二次调用,错误就少了一些

并且在Entra中也看到成功调用了

更多推荐
所有评论(0)