用docker compose的方式部署开放式的MS365 E5 RenewX到你的服务器

前言:

MS365 E5 RenewX想必大家都不陌生吧;

图片[1]-用docker compose的方式部署开放式的MS365 E5 RenewX到你的服务器

发布本教程的目的,是为了记录自己的搭建过程,同时在这里感谢源码的作者辛勤付出和开源,感兴趣的可以去仓库点亮Stars,连接会放在文末。

Microsoft 365 E5 Renew X是一款网页版的E5续订服务,其依赖网页浏览器呈现支持用户多端操作,完全将E5账户API调用托管在了服务器端因此用户无需电脑也可使用。

Microsoft 365 E5 Renew X 由来
Microsoft 365 E5 Renew X为Microsoft 365 E5 Web的升级版,相对于旧版其增强了管理功能且更容易部署,API调用内核继承于续订桌面版软件Microsoft 365 E5 Renew Plus。

主要功能
用户端
两种可选的调用权限:用户未登录作为守护程序调用(需要客户端密码)、程序以登录用户身份直接调用(需要账户密码)
API种类齐全:41/30个可选的Microsoft Graph REST API Beta中的API(未来可能会继续添加)
完全随机的API调用模式:从已选定的API序列中随机抽取一个或几个进行调用(个数和API随机)
完全随机的API调用时间间隔:随机区段1000s-2000s固定
完全随机的API内容(仅部分API支持):发送邮件的内容随机 Onedirve上传文件的内容随机
邮件通知服务:支持设置通知邮箱,调用异常会通过邮件通知无需反复登录查看
部署端
平台兼容性:使用Asp.Net Core 作为跨平台框架增适用于 Windows|Linux|MacOS x64|x86|ARM64|ARM
灵活部署:支持开放站点部署和私享部署,私享部署不再强制要求配置Https和OAuth
无需数据库:不需要后台数据库支持,前后台一体化程序
用户后台管理:可修改用户的E5账户数量,以及封删管理
系统状态监视:系统占用率一目了然,可控的站点注册通道更容易控制系统用户数量
自定义页面:支持自定义HTML静态页面,可设置支付宝、微信收款码
显示ICP备案:支持ICP备案文字显示,可在国内备案建站
无人值守 运行自动暂停:可自动暂停有错误率过高的账号API调用
无人值守 自动恢复运行:可定期自动恢复全部账号的API调用,防止因微软网络原因触发大量账号停止API调用进而导致的账号续期失败

搭建步骤

安装docker,可到官方安装最新的Docker。

使用 root 权限登录 Centos。确保 yum 包更新到最新。

sudo yum update
sudo yum update
sudo yum update

安装的yum工具集

yum install -y yum-utils
yum install -y yum-utils
yum install -y yum-utils

安装docker-ce的yum源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce

yum install docker-ce
yum install docker-ce
yum install docker-ce

在 CentOS 上安装 Docker,这里是官方安装说明

设置存储库 

yum-utils
yum-config-manager
yum-utils
yum-config-manager
yum-utils yum-config-manager
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker 引擎 

安装 Docker Engine、containerd 和 Docker Compose:

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动 Docker

sudo systemctl start docker
sudo systemctl start docker
sudo systemctl start docker

查看docker服务状态

systemctl status docker.service
systemctl status docker.service
systemctl status docker.service

开启自启动

systemctl enable docker.service
systemctl enable docker.service
systemctl enable docker.service

开启服务

systemctl start docker.service
systemctl start docker.service
systemctl start docker.service

配置Docker Compose环境:

安装compose v2

curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

将可执行权限应用于安装目标路径中的独立二进制文件

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

使用 测试和执行撰写命令

docker-compose
docker-compose
docker-compose

详细安装请看官方说明

部署Microsoft 365 E5 Renew X

我们先在root文件目录下创建一个目录为ms365e5renewx的文件夹,在文件夹下并创建docker-compose.yml文件,具体创建命令这里就不叙述了,一般的都懂。

还是附上命令吧,嘎嘎

mkdir ~/ms365e5renewx
cd ~/ms365e5renewx
touch docker-compose.yml
mkdir ~/ms365e5renewx
cd ~/ms365e5renewx
touch docker-compose.yml
mkdir ~/ms365e5renewx cd ~/ms365e5renewx touch docker-compose.yml

打开docker-compose.yml,按下面的示例写入(无需修改)

version: '3'
services:
nginx:
image: nginx:alpine
container_name: nginx
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:rw
- ./nginx/conf.d/:/etc/nginx/conf.d/:rw
- ./nginx/log/:/var/log/nginx/:rw
- ./nginx/cert/:/etc/nginx/cert/:rw
- ./nginx/html/:/usr/share/nginx/html/:rw
network_mode: host
e5renewx:
image: gladtbam/ms365_e5_renewx:latest
container_name: e5renewx
restart: always
volumes:
- ./e5renewx/Deploy/:/renewx/Deploy/:rw
- ./e5renewx/appdata/:/renewx/appdata/:rw
- ./e5renewx/static/:/renewx/wwwroot/static/:rw
ports:
- 1077:1077
version: '3'
services:
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:rw
      - ./nginx/conf.d/:/etc/nginx/conf.d/:rw
      - ./nginx/log/:/var/log/nginx/:rw
      - ./nginx/cert/:/etc/nginx/cert/:rw
      - ./nginx/html/:/usr/share/nginx/html/:rw
    network_mode: host
  e5renewx:
    image: gladtbam/ms365_e5_renewx:latest
    container_name: e5renewx
    restart: always
    volumes:
      - ./e5renewx/Deploy/:/renewx/Deploy/:rw
      - ./e5renewx/appdata/:/renewx/appdata/:rw
      - ./e5renewx/static/:/renewx/wwwroot/static/:rw
    ports:
      - 1077:1077
version: '3' services: nginx: image: nginx:alpine container_name: nginx restart: always volumes: - /etc/localtime:/etc/localtime:ro - ./nginx/nginx.conf:/etc/nginx/nginx.conf:rw - ./nginx/conf.d/:/etc/nginx/conf.d/:rw - ./nginx/log/:/var/log/nginx/:rw - ./nginx/cert/:/etc/nginx/cert/:rw - ./nginx/html/:/usr/share/nginx/html/:rw network_mode: host e5renewx: image: gladtbam/ms365_e5_renewx:latest container_name: e5renewx restart: always volumes: - ./e5renewx/Deploy/:/renewx/Deploy/:rw - ./e5renewx/appdata/:/renewx/appdata/:rw - ./e5renewx/static/:/renewx/wwwroot/static/:rw ports: - 1077:1077

示例中使用Nginx反代Renew X,实现强制https访问,比如避免暴露更多端口,以及可以和同一台服务器上的其他web服务共用80\443端口等,也可以不需要,自己用其他方法实现反代。

接下来我们在文件夹下面创建以下文件和文件夹,注意创建后要检查是否创建成功,否则会部署失败,提前创建的目录和文件归属是root用户,你懂的。

cd ~/ms365e5renewx
mkdir -p nginx/conf.d
touch e5renewx.conf
mkdir nginx/cert
mkdir -p e5renewx/Deploy
cd ~/ms365e5renewx
mkdir -p nginx/conf.d
touch e5renewx.conf
mkdir nginx/cert
mkdir -p e5renewx/Deploy
cd ~/ms365e5renewx mkdir -p nginx/conf.d touch e5renewx.conf mkdir nginx/cert mkdir -p e5renewx/Deploy

反向代理

以下为反向代理示例,根据你自己的更改

upstream e5renewx {
server localhost:1077;
}
server {
listen 80;
listen [::]:80;
server_name 你的域名如e5renewx.curious.host;
return 301 https://${server_name}$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name 你的域名如e5renewx.curious.host;
keepalive_timeout 1800;
client_max_body_size 100M;
sendfile on;
ssl_certificate /etc/nginx/cert/你的pem文件名;
ssl_certificate_key /etc/nginx/cert/对应的key文件名;
location /
{
proxy_pass https://e5renewx;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
upstream e5renewx {
    server localhost:1077;
}
server {
    listen 80;
    listen [::]:80;
    server_name 你的域名如e5renewx.curious.host;
    return 301 https://${server_name}$request_uri;
}
server {
    listen               443 ssl;
    listen               [::]:443 ssl;
    server_name          你的域名如e5renewx.curious.host;
    keepalive_timeout    1800;
    client_max_body_size 100M;
    sendfile             on;
    ssl_certificate      /etc/nginx/cert/你的pem文件名;
    ssl_certificate_key  /etc/nginx/cert/对应的key文件名;


    location /
    {
        proxy_pass https://e5renewx;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
upstream e5renewx { server localhost:1077; } server { listen 80; listen [::]:80; server_name 你的域名如e5renewx.curious.host; return 301 https://${server_name}$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name 你的域名如e5renewx.curious.host; keepalive_timeout 1800; client_max_body_size 100M; sendfile on; ssl_certificate /etc/nginx/cert/你的pem文件名; ssl_certificate_key /etc/nginx/cert/对应的key文件名; location / { proxy_pass https://e5renewx; 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_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }

注意,共享站要求全链路HTTPS,因此本示例中proxy_pass模块后必须对应包含https;//的地址。proxy_set_header为请求头传递,以便被代理的服务器获得用户真实IP,利于站点安全审计。

Renew X配置

首先在你在PC上到这里:https://sundayrx.lanzoui.com/aW09Lsss75g下载服务程序源文件。解压后找到Deploy文件夹下的Config.xml文件,初始内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<!--站点服务器基本配置-->
<Serivce>
<!--服务访问端口-->
<Port>1066</Port>
<!--管理员密码(管理员登录路由/Admin/Login) 重要:首次启动前必须更改-->
<LoginPassword>12345678</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></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>
<!--站点启动后默认公告(换行符请使用 &#x000D;&#x000A; 进行换行)-->
<Notice></Notice>
<!--站点运营者-->
<Master></Master>
<!--站点运营者推广链接-->
<MasterLink></MasterLink>
<!--站点新用户默认配额数-->
<DefaultQuota>1</DefaultQuota>
<!--站点自动特赦时间间隔 (单位:天 至少30天)-->
<AutoSpecialPardonInterval>30</AutoSpecialPardonInterval>
</System>
</ShareSite>
</Configuration>
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
  <!--站点服务器基本配置-->
  <Serivce>
    <!--服务访问端口-->
    <Port>1066</Port>
    <!--管理员密码(管理员登录路由/Admin/Login) 重要:首次启动前必须更改-->
    <LoginPassword>12345678</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></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>
      <!--站点启动后默认公告(换行符请使用 &#x000D;&#x000A; 进行换行)-->
      <Notice></Notice>
      <!--站点运营者-->
      <Master></Master>
      <!--站点运营者推广链接-->
      <MasterLink></MasterLink>
      <!--站点新用户默认配额数-->
      <DefaultQuota>1</DefaultQuota>
      <!--站点自动特赦时间间隔 (单位:天 至少30天)-->
      <AutoSpecialPardonInterval>30</AutoSpecialPardonInterval>
    </System>
  </ShareSite>
</Configuration>
<?xml version="1.0" encoding="utf-8" ?> <Configuration> <!--站点服务器基本配置--> <Serivce> <!--服务访问端口--> <Port>1066</Port> <!--管理员密码(管理员登录路由/Admin/Login) 重要:首次启动前必须更改--> <LoginPassword>12345678</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></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> <!--站点启动后默认公告(换行符请使用 &#x000D;&#x000A; 进行换行)--> <Notice></Notice> <!--站点运营者--> <Master></Master> <!--站点运营者推广链接--> <MasterLink></MasterLink> <!--站点新用户默认配额数--> <DefaultQuota>1</DefaultQuota> <!--站点自动特赦时间间隔 (单位:天 至少30天)--> <AutoSpecialPardonInterval>30</AutoSpecialPardonInterval> </System> </ShareSite> </Configuration>

其中管理员密码务必更改为仅你自己知道的强密码。

开放站点必须开启HTTPS:

Configuration.HTTPS.Enable设置为true,

Configuration.HTTPS.Certificate设置为我们上传到~/ms365e5renewx/e5renewx/Deploy/下的PFX文件的名称(包括后缀名),

Configuration.HTTPS.Password设置为PFX文件的密码。

SMTP部分:建议准备一个空闲的Outlook个人邮箱,将邮箱、密码依次填好,SMTP服务器地址填smtp.office365.com,端口无需改动。

开放站点若要支持某种第三方注册方式(微软账户或GitHub账户),则必须在Config.xml正确配置了相应的OAuth选项。

Github OAuth 获取方式

进入你的GitHub Profile

左侧栏底部Developer Settings

OAuth Apps -> New Oauth App

填写任意Application Name

Homepage URL 填写https://你的域名

Authorization callback URL 填写https://你的域名/signin-github

Register Application

Generate a new client secret

Client ID和Secret填入上述Config.xml相应位置

Microsoft OAuth 获取方式

进入你的Azure应用注册页面

新注册

受支持的账户类型->任何组织目录(任何 Azure AD 目录 – 多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox)

重定向 URI :选择平台->Web,填入https://你的域名/signin-microsoft

注册后进入应用

应用->概述中的“应用程序(客户端) ID”填入Config.xml相应ClientId

应用->证书和密码->新客户端密码,生成的密码记录的“值”填入Config.xml相应ClientSecret

其余自定义参数释义参考服务程序作者的说明:https://blog.csdn.net/qq_33212020/article/details/119747634

全部填写完成后将Config.xml上传至你的服务器~/ms365e5renewx/e5renewx/Deploy/目录下。【可选】将服务程序源文件中解压出的wwwroot文件夹,完整地上传至服务器~/ms365e5renewx/目录下,其中/wwwroot/static/Donate.html为站点捐助页面的静态网页,可由站长自行编写。

运行Renew X

在docker-compose.yml所在目录下执行命令:

docker compose up -d
docker compose up -d
docker compose up -d

首次运行要拉取镜像,可能较慢,如果网络实在不佳,请考虑使用Docker Hub的镜像源。

如果部署了反向代理,正常情况下,访问你的域名即可进入首页,管理员后台路径/Admin/Login,密码你自己知道。

待服务启动后,尝试登陆自己的站点测试。如果日后需要迁移服务器,只需完整打包~/ms365e5renewx即可保证站点数据的完整性。比如笔者经常因为打折而在各家云服务商之间反复横跳,每次切换时仅仅需要把目录带到新服务器上,一个命令就可以快速重建站点。站点数据不大的情况下,甚至可以托管在GitHub仓库里进行管理同步(需要hook解决文件权限问题),这部分内容有空笔者会补充在文章里。

下线站点时,在docker-compose.yml所在目录使用:

docker compose down
docker compose down
docker compose down

图片[2]-用docker compose的方式部署开放式的MS365 E5 RenewX到你的服务器

图片[3]-用docker compose的方式部署开放式的MS365 E5 RenewX到你的服务器

添加应用和如何续订,网上和官方有很多教程,就不在这里叙述,本文只是记录搭建部署方法,为其他玩家提供了一点经验就好了。部署站点时参考了官方教程、Skyler的部署文档和Gladtbam的部署文档,一并感谢。

为了感谢作者及网友,本站部署的MS365 E5 Renew X也开放给大家注册续订,这里卖个关子,隐藏以下:

注:本站也提供作者服务程序源文件高速下载

-------束,-------

感谢您的来访,获取更多精彩文章请收藏本站。

用docker compose的方式部署开放式的MS365 E5 RenewX到你的服务器-卡卡时光记录
用docker compose的方式部署开放式的MS365 E5 RenewX到你的服务器
此内容为免费资源,请登录后查看
K0
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
If you get tired, learn to rest, not to quit.
如果你累了,学会休息,而不是放弃
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像从今以后0