当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇登录器更新不用愁!用Docker+GitHub自动化部署,小白也能玩转高可用更新系统

热度:
前面两篇我们讲了虚拟主机和自建服务器的更新方案,但仍有不少玩家抱怨:“配置太复杂”“服务器维护麻烦”。今天我们祭出“王炸组合”——Docker容器化部署 + GitHub自动化同步!无需买服务器、不用写代码,用免费工具实现“零维护”自动更新!无论你是技术小白还是老司机,这篇都能让你少走弯路!

一、为什么选择Docker+GitHub方案?

传统自建服务器的问题:
• 环境依赖:装Nginx、配SSL证书,一步错满盘皆输。

• 维护成本高:服务器宕机、系统升级,分分钟崩溃。

• 文件同步麻烦:手动上传更新包,容易漏传或出错。

Docker+GitHub方案优势:
• 开箱即用:Docker一键部署,环境隔离,永不冲突。

• 全自动同步:GitHub仓库作为中转站,代码提交即触发更新。

• 零成本运维:GitHub免费托管,Docker Hub镜像秒启动。

二、准备工作:三件套缺一不可

1. GitHub账号(免费注册)
2. Docker Desktop(官网下载,Windows/Mac均支持)
3. 传奇登录器源码(需包含update文件夹和配置文件)

💡 提示:如果不懂Docker,直接跳到第四步“傻瓜式操作”,照着截图一步步来!

三、进阶玩法:Docker容器化部署

第一步:创建GitHub仓库

1. 在GitHub上新建仓库,命名为legend-update。
2. 上传登录器的更新文件(如version.txt、update.zip),提交到仓库。

第二步:编写Dockerfile

在本地创建一个文件夹,放入以下文件:
1. Dockerfile(内容如下):
FROM nginx:alpine
COPY ./update /usr/share/nginx/html/update
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

2. nginx.conf(配置HTTPS和防盗链,参考下方代码块):
server {
listen 80;
server_name update.yourdomain.com; # 替换为你的域名
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name update.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_header Cache-Control "no-cache";
valid_referers none blocked update.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}
}


第三步:构建并运行Docker容器

1. 在Docker Desktop中,将上述文件所在的文件夹设为工作目录。
2. 右键点击Docker图标,选择“Build Image”,输入镜像名称legend-update-server。
3. 运行容器:
docker run -d -p 80:80 -p 443:443 --name legend-update legend-update-server


第四步:绑定域名并启用HTTPS

1. 到Cloudflare(免费版)添加域名解析,开启DNS解析到服务器IP。
2. 使用Certbot生成SSL证书(参考https://certbot.eff.org/)。

四、傻瓜式操作:GitHub Actions自动同步

第一步:配置GitHub Secrets

在仓库的Settings > Secrets中添加:
• DOCKERHUB_TOKEN:Docker Hub账号的Token(生成方式:登录Docker Hub → Account Settings → Security → New Access Token)。

• SERVER_IP:你的服务器公网IP。

第二步:编写GitHub Actions脚本

在仓库根目录创建.github/workflows/deploy.yml,内容如下:
name: Auto Update

on:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to Docker Hub
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: yourdockerhubusername/legend-update-server:latest
secrets: |
"DOCKERHUB_TOKEN=${{ secrets.DOCKERHUB_TOKEN }}"

- name: Trigger Server Update
run: |
ssh root@${{ secrets.SERVER_IP }} "docker pull yourdockerhubusername/legend-update-server:latest && docker stop legend-update && docker rm legend-update && docker run -d -p 80:80 -p 443:443 --name legend-update yourdockerhubusername/legend-update-server:latest"


第三步:提交代码触发自动更新

1. 将更新文件推送到GitHub的main分支。
2. GitHub Actions会自动:
• 构建Docker镜像 → 推送至Docker Hub → SSH连接到服务器 → 拉取新镜像并重启容器。

五、终极优化:低成本域名+防盗链

1. 免费域名推荐:
• Freenom(提供.tk/.ml等免费用顶级域名)。

• Namecheap(首年1美元的.com域名)。

2. 防盗链黑科技:
在Nginx配置中添加动态Token验证(仅限内网访问):
location /update/ {
if ($http_cookie !~* "token=abc123") {
return 403;
}
alias /usr/share/nginx/html/update/;
}

登录器配置中添加Cookie: token=abc123即可绕过限制。

六、常见问题急救包

Q1:GitHub Actions提示“权限不足”
• 检查SSH密钥是否添加到服务器~/.ssh/authorized_keys。

• 确认SERVER_IP的Secrets值正确(不含端口号)。

Q2:玩家更新时提示“证书错误”
• 用浏览器访问https://你的域名/update/,点击“高级”→“继续访问”临时解决。

• 正确配置Let’s Encrypt证书(参考https://certbot.eff.org/)。

Q3:如何回滚到旧版本?
• 在Docker Hub仓库中找到历史镜像标签,修改Actions脚本中的tags为旧版本号重新部署。
[顶部]