Microsoft 365 E5 自动续订 | Docker 自建

引言 Docker_Microsoft365_E5_Renew_X 即通过此程序 定时调用 Microsoft 相关产品 API 来保持开发者活跃, 以便 达成 续期 Microsoft 开发者计划 (E5) 的目的 据说绑定 GitHub 账号即可达成自动续期, 但不清楚,未确认有效性 参考: hongyonghan/Docker_Microsoft365_E5_Renew_X: Docker版本的E5调用API续订服务:Microsoft 365 E5 Renew X 教程:用docker compose的方式部署可共享的MS365 E5 RenewX到你的服务器 - 哔哩哔哩

docker-compose.yml

docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "2.1"

services:
ms365-e5-renew-x:
image: hanhongyong/ms365-e5-renew-x:latest
container_name: ms365-e5-renew-x
environment:
- TZ=Asia/Shanghai
volumes:
- ./ms365-e5-renew-x/Deploy:/app/Deploy
- ./ms365-e5-renew-x/appdata:/app/appdata
ports:
- 1066:1066
restart: always
privileged: true
user: root
./ms365-e5-renew-x/Deploy/Config.xml
Config.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<!--站点服务器基本配置-->
<Serivce>
<!--服务访问端口-->
<Port>1066</Port>
<!--管理员密码(管理员登录路由/Admin/Login) 重要:首次启动前必须更改-->
<LoginPassword>123456</LoginPassword>
<!--是否启用内核多线程支持-->
<CoreMultiThread>true</CoreMultiThread>
<!--网站备案号(选填)-->
<ICP></ICP>
<!--备案管理查询机构跳转链接(选填)-->
<ICPLink>https://beian.miit.gov.cn</ICPLink>
</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>smtp.163.com</Host>
</SMTP>
<!--第三方OAuth登录支持(至少启用以下一种OAuth否则其他用户无法注册)-->
<OAuth>
<!--微软登录授权-->
<Microsoft>
<!--是否启用该OAuth-->
<Enable>false</Enable>
<!--应用程序Id-->
<ClientId></ClientId>
<!--应用程序访问机密-->
<ClientSecret></ClientSecret>
</Microsoft>
<!--GitHub登录授权-->
<Github>
<!--是否启用该OAuth-->
<Enable>false</Enable>
<!--应用程序Id-->
<ClientId></ClientId>
<!--应用程序访问机密-->
<ClientSecret></ClientSecret>
</Github>
</OAuth>
<!--站点系统设置-->
<System>
<!--站点启动后默认是否允许用户注册 建议为false-->
<AllowRegister>false</AllowRegister>
<!--站点启动后默认公告(换行符请使用 &#x000D;&#x000A; 进行换行)-->
<Notice></Notice>
<!--站点运营者-->
<Master></Master>
<!--站点运营者推广链接-->
<MasterLink></MasterLink>
<!--站点新用户默认配额数-->
<DefaultQuota>1</DefaultQuota>
<!--站点自动特赦时间间隔 (单位:天 至少30天)-->
<AutoSpecialPardonInterval>30</AutoSpecialPardonInterval>
</System>
</ShareSite>
</Configuration>
1
docker-compose up -d
补充, 其实不需要, 直接修改宿主机上 Config.xml 即可, 目测大多数配置重启才生效
1
2
3
4
5
6
docker exec -it ms365-e5-renew-x /bin/bash

cd Deploy

# 修改密码: 将 123456 修改为你想修改的密码
vim Config.xml
访问
https://ms-e5.moeci.com
nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
server
{
listen 80;
listen 443 ssl http2;
server_name ms-e5.moeci.com;
root /www/wwwroot/ms-e5.moeci.com;

# proxy to 1066
location ~ / {
proxy_pass http://localhost:1066;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
# cache
add_header Cache-Control no-cache;
expires 12h;
# websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header Front-End-Https on;
}
}

测试

参考: Microsoft 365 E5 Renew Plus 续订程序 | EdNovas 的小站 E5 调用API续订服务:Microsoft 365 E5 Renew X_SundayRX的博客-CSDN博客_e5续订 注意: 最终使用 桌面版 自动配置 API 权限失败, 而采用手动配置API权限 先去 Azure 注册应用 https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade 复制好 应用程序(客户端) ID 为了方便,下面下载桌面版, 一键配置 API 权限 https://blog.csdn.net/qq_33212020/article/details/114482595 Q:登录调用 未启用公共客户端-无键盘(设备代码流) 自动配置应用程序API权限 失败, 下面手动配置 创建一个新的E5子账户(可选步骤) 登入E5管理员账户进入管理员界面,创建一个新的子账户,使用这个子账户登录程序调用API。
为什么建议这样做:Microsoft 365 E5 Renew Plus中的部分API包含了写操作,例如Onedrive的API,这些API在随机模式下会生成大量垃圾邮件和文件(虽然单独为此设立了一个文件夹),部分人可能会对此行为非常介意,而且程序频繁的读写可能会对您正常使用账户造成影响,因此不建议使用管理员账户登录。

关闭E5账户登录双重验证

https://account.activedirectory.windowsazure.com/UserManagement/MultifactorVerification.aspx 发现默认就是禁用状态 注意: 测试发现,尽管 全局管理员 双重验证处于 已禁用状态, 但仍然提示 双重验证失败, 创建一个 子账号 来调用API 即可。

GitHub Oauth

Oauth应用注册
    前往此处 单击Developer Settings OAuth Apps -> New Oauth App Application Name随意 Homepage URL 填写https://xxx.xxx.xxx(xxx改你自己) Authorization callback URL 填写https://xxx.xxx.xxx/signin-github(xxx改你自己) 单击Generate a new client secret 记下client id和secret 在Config.json相应位置填入
注意: 下图路径有误, 应为 ./ms365-e5-renew-x/Deploy/Config.xml

注意

经过测试发现, 虽然 保存了 appdata ,但实际上再次利用此数据恢复会出错,不知道原因,
测试:开启共享以及https后, 再 down 掉容器, 此时 宿主机 Deploy 与 appdata 均保存好的, 然后, 再 up,结果最终 502, 但删除 appdata 后再 up 即可成功
E5SubBot 参考: iyear/E5SubBot: 🤖 A Simple Telebot for E5 Renewal

docker-compose.yml

docker-compose.yml
1

Q&A 补充 参考 感谢帮助! iyear/E5SubBot: 🤖 A Simple Telebot for E5 Renewal hongyonghan/Docker_Microsoft365_E5_Renew_X: Docker版本的E5调用API续订服务:Microsoft 365 E5 Renew X E5 Renew Plus 官方网站 Home - Microsoft 365 admin center Office 365 管理员中心 管理E5子账户 设置自定义域