前面两篇我们讲了虚拟主机和自建服务器的更新方案,但仍有不少玩家抱怨:“配置太复杂”“服务器维护麻烦”。今天我们祭出“王炸组合”——Docker容器化部署+GitHub自动化同步!无需买服务器、不用写代码,用免费工具实现“零维护”自动更新!无论你是技术小白还是老司机,这篇都能让你少走弯路!
一、为什么选择Docker+GitHub方案?
传统自建服务器的问题:
•环境依赖:装Nginx、配SSL证书,一步错满盘皆输。
•维护成本高:服务器宕机、系统升级,分分钟崩溃。
•文件同步麻烦:手动上传更新包,容易漏传或出错。
Docker+GitHub方案优势:
•开箱即用:Docker一键部署,环境隔离,永不冲突。
•全自动同步:GitHub仓库作为中转站,代码提交即触发更新。
•零成本运维:GitHub免费托管,DockerHub镜像秒启动。
二、准备工作:三件套缺一不可
1.GitHub账号(免费注册)
2.DockerDesktop(官网下载,Windows/Mac均支持)
3.传奇登录器源码(需包含update文件夹和配置文件)
💡提示:如果不懂Docker,直接跳到第四步“傻瓜式操作”,照着截图一步步来!
三、进阶玩法:Docker容器化部署
第一步:创建GitHub仓库
1.在GitHub上新建仓库,命名为legend-update。
2.上传登录器的更新文件(如version.txt、update.zip),提交到仓库。
第二步:编写Dockerfile
在本地创建一个文件夹,放入以下文件:
1.Dockerfile(内容如下):
FROMnginx:alpine
COPY./update/usr/share/nginx/html/update
COPY./nginx.conf/etc/nginx/conf.d/default.conf
EXPOSE80
2.nginx.conf(配置HTTPS和防盗链,参考下方代码块):
server{
listen80;
server_nameupdate.yourdomain.com;#替换为你的域名
return301https://$host$request_uri;
}
server{
listen443ssl;
server_nameupdate.yourdomain.com;
ssl_certificate/etc/letsencrypt/live/update.yourdomain.com/fullchain.pem;
ssl_certificate_key/etc/letsencrypt/live/update.yourdomain.com/privkey.pem;
location/update/{
alias/usr/share/nginx/html/update/;
add_headerCache-Control"no-cache";
valid_referersnoneblockedupdate.yourdomain.com;
if($invalid_referer){
return403;
}
}
}
第三步:构建并运行Docker容器
1.在DockerDesktop中,将上述文件所在的文件夹设为工作目录。
2.右键点击Docker图标,选择“BuildImage”,输入镜像名称legend-update-server。
3.运行容器:
dockerrun-d-p80:80-p443:443--namelegend-updatelegend-update-server
第四步:绑定域名并启用HTTPS
1.到Cloudflare(免费版)添加域名解析,开启DNS解析到服务器IP。
2.使用Certbot生成SSL证书(参考https://certbot.eff.org/)。
四、傻瓜式操作:GitHubActions自动同步
第一步:配置GitHubSecrets
在仓库的Settings>Secrets中添加:
•DOCKERHUB_TOKEN:DockerHub账号的Token(生成方式:登录DockerHub→AccountSettings→Security→NewAccessToken)。
•SERVER_IP:你的服务器公网IP。
第二步:编写GitHubActions脚本
在仓库根目录创建.github/workflows/deploy.yml,内容如下:
name:AutoUpdate
on:
push:
branches:[main]
jobs:
deploy:
runs-on:ubuntu-latest
steps:
-name:DeploytoDockerHub
uses:docker/build-push-action@v4
with:
context:.
push:true
tags:yourdockerhubusername/legend-update-server:latest
secrets:|
"DOCKERHUB_TOKEN=${{secrets.DOCKERHUB_TOKEN}}"
-name:TriggerServerUpdate
run:|
sshroot@${{secrets.SERVER_IP}}"dockerpullyourdockerhubusername/legend-update-server:latest&&dockerstoplegend-update&&dockerrmlegend-update&&dockerrun-d-p80:80-p443:443--namelegend-updateyourdockerhubusername/legend-update-server:latest"
第三步:提交代码触发自动更新
1.将更新文件推送到GitHub的main分支。
2.GitHubActions会自动:
•构建Docker镜像→推送至DockerHub→SSH连接到服务器→拉取新镜像并重启容器。
五、终极优化:低成本域名+防盗链
1.免费域名推荐:
•Freenom(提供.tk/.ml等免费用顶级域名)。
•Namecheap(首年1美元的.com域名)。
2.防盗链黑科技:
在Nginx配置中添加动态Token验证(仅限内网访问):
location/update/{
if($http_cookie!~*"token=abc123"){
return403;
}
alias/usr/share/nginx/html/update/;
}
登录器配置中添加Cookie:token=abc123即可绕过限制。
六、常见问题急救包
Q1:GitHubActions提示“权限不足”
•检查SSH密钥是否添加到服务器~/.ssh/authorized_keys。
•确认SERVER_IP的Secrets值正确(不含端口号)。
Q2:玩家更新时提示“证书错误”
•用浏览器访问https://你的域名/update/,点击“高级”→“继续访问”临时解决。
•正确配置Let’sEncrypt证书(参考https://certbot.eff.org/)。
Q3:如何回滚到旧版本?
•在DockerHub仓库中找到历史镜像标签,修改Actions脚本中的tags为旧版本号重新部署。
一、为什么选择Docker+GitHub方案?
传统自建服务器的问题:
•环境依赖:装Nginx、配SSL证书,一步错满盘皆输。
•维护成本高:服务器宕机、系统升级,分分钟崩溃。
•文件同步麻烦:手动上传更新包,容易漏传或出错。
Docker+GitHub方案优势:
•开箱即用:Docker一键部署,环境隔离,永不冲突。
•全自动同步:GitHub仓库作为中转站,代码提交即触发更新。
•零成本运维:GitHub免费托管,DockerHub镜像秒启动。
二、准备工作:三件套缺一不可
1.GitHub账号(免费注册)
2.DockerDesktop(官网下载,Windows/Mac均支持)
3.传奇登录器源码(需包含update文件夹和配置文件)
💡提示:如果不懂Docker,直接跳到第四步“傻瓜式操作”,照着截图一步步来!
三、进阶玩法:Docker容器化部署
第一步:创建GitHub仓库
1.在GitHub上新建仓库,命名为legend-update。
2.上传登录器的更新文件(如version.txt、update.zip),提交到仓库。
第二步:编写Dockerfile
在本地创建一个文件夹,放入以下文件:
1.Dockerfile(内容如下):
FROMnginx:alpine
COPY./update/usr/share/nginx/html/update
COPY./nginx.conf/etc/nginx/conf.d/default.conf
EXPOSE80
2.nginx.conf(配置HTTPS和防盗链,参考下方代码块):
server{
listen80;
server_nameupdate.yourdomain.com;#替换为你的域名
return301https://$host$request_uri;
}
server{
listen443ssl;
server_nameupdate.yourdomain.com;
ssl_certificate/etc/letsencrypt/live/update.yourdomain.com/fullchain.pem;
ssl_certificate_key/etc/letsencrypt/live/update.yourdomain.com/privkey.pem;
location/update/{
alias/usr/share/nginx/html/update/;
add_headerCache-Control"no-cache";
valid_referersnoneblockedupdate.yourdomain.com;
if($invalid_referer){
return403;
}
}
}
第三步:构建并运行Docker容器
1.在DockerDesktop中,将上述文件所在的文件夹设为工作目录。
2.右键点击Docker图标,选择“BuildImage”,输入镜像名称legend-update-server。
3.运行容器:
dockerrun-d-p80:80-p443:443--namelegend-updatelegend-update-server
第四步:绑定域名并启用HTTPS
1.到Cloudflare(免费版)添加域名解析,开启DNS解析到服务器IP。
2.使用Certbot生成SSL证书(参考https://certbot.eff.org/)。
四、傻瓜式操作:GitHubActions自动同步
第一步:配置GitHubSecrets
在仓库的Settings>Secrets中添加:
•DOCKERHUB_TOKEN:DockerHub账号的Token(生成方式:登录DockerHub→AccountSettings→Security→NewAccessToken)。
•SERVER_IP:你的服务器公网IP。
第二步:编写GitHubActions脚本
在仓库根目录创建.github/workflows/deploy.yml,内容如下:
name:AutoUpdate
on:
push:
branches:[main]
jobs:
deploy:
runs-on:ubuntu-latest
steps:
-name:DeploytoDockerHub
uses:docker/build-push-action@v4
with:
context:.
push:true
tags:yourdockerhubusername/legend-update-server:latest
secrets:|
"DOCKERHUB_TOKEN=${{secrets.DOCKERHUB_TOKEN}}"
-name:TriggerServerUpdate
run:|
sshroot@${{secrets.SERVER_IP}}"dockerpullyourdockerhubusername/legend-update-server:latest&&dockerstoplegend-update&&dockerrmlegend-update&&dockerrun-d-p80:80-p443:443--namelegend-updateyourdockerhubusername/legend-update-server:latest"
第三步:提交代码触发自动更新
1.将更新文件推送到GitHub的main分支。
2.GitHubActions会自动:
•构建Docker镜像→推送至DockerHub→SSH连接到服务器→拉取新镜像并重启容器。
五、终极优化:低成本域名+防盗链
1.免费域名推荐:
•Freenom(提供.tk/.ml等免费用顶级域名)。
•Namecheap(首年1美元的.com域名)。
2.防盗链黑科技:
在Nginx配置中添加动态Token验证(仅限内网访问):
location/update/{
if($http_cookie!~*"token=abc123"){
return403;
}
alias/usr/share/nginx/html/update/;
}
登录器配置中添加Cookie:token=abc123即可绕过限制。
六、常见问题急救包
Q1:GitHubActions提示“权限不足”
•检查SSH密钥是否添加到服务器~/.ssh/authorized_keys。
•确认SERVER_IP的Secrets值正确(不含端口号)。
Q2:玩家更新时提示“证书错误”
•用浏览器访问https://你的域名/update/,点击“高级”→“继续访问”临时解决。
•正确配置Let’sEncrypt证书(参考https://certbot.eff.org/)。
Q3:如何回滚到旧版本?
•在DockerHub仓库中找到历史镜像标签,修改Actions脚本中的tags为旧版本号重新部署。

