CDN统一更新发布

当前地址:https://cdn.vvwww88.cc/index.php;首次部署包和日常更新包使用同一个上传入口,服务器会自动识别。

统一上传入口

上传首次部署包或日常更新包

支持 cdn-master.tar.gz 和 cdn-release-YYYYMMDD-vX.Y.Z.tar.gz,服务器会按包名及包内结构自动识别和校验。

拖入一个首次部署包或日常更新包,或点击选择
尚未选择文件

上传限制:单文件 1 GB;服务器配置值 1024M / 1025M。页面访问仍应由宝塔、反向代理或防火墙限制。

首次部署

主控首次安装

等待上传

上传本地“首次部署”入口生成的包后,复制下方整行命令到新主控服务器执行。

日常更新

当前完整发布

已就绪 2026-10-19 v1.0.80(发布序号 80)

发布时间:2026-10-19T04:05:08.2091137+08:00;更新器协议:1

一、主控服务器执行

(set -e; for tool in curl openssl jq sha256sum bash mktemp flock sync tar systemctl uname stat find cp readlink tee; do command -v "$tool" >/dev/null 2>&1 || { echo "缺少更新工具: $tool" >&2; exit 1; }; done; tmp="$(mktemp -d)"; trap 'rm -rf "$tmp"' EXIT; base='https://cdn.vvwww88.cc/index.php'; release_id='00000000000000000080-v1.0.80'; public_key="${CDN_UPDATE_PUBLIC_KEY:-/etc/cdn-update/public.pem}"; download_base="$base?release=$release_id&f="; for f in release.json release.json.sig update-master.sh cdn-master.tar.gz update-node.sh node-source.tar.gz; do curl -fsSL -o "$tmp/$f" -- "$download_base$f"; done; openssl dgst -sha256 -verify "$public_key" -signature "$tmp/release.json.sig" "$tmp/release.json"; jq -e --arg release_id "$release_id" '.release_id == $release_id' "$tmp/release.json" >/dev/null; test "$(sha256sum "$tmp/update-master.sh" | awk '{print $1}')" = "$(jq -er '.artifacts.master_updater.sha256' "$tmp/release.json")"; test "$(sha256sum "$tmp/cdn-master.tar.gz" | awk '{print $1}')" = "$(jq -er '.artifacts.master_package.sha256' "$tmp/release.json")"; test "$(sha256sum "$tmp/update-node.sh" | awk '{print $1}')" = "$(jq -er '.artifacts.node_updater.sha256' "$tmp/release.json")"; test "$(sha256sum "$tmp/node-source.tar.gz" | awk '{print $1}')" = "$(jq -er '.artifacts.node_package.sha256' "$tmp/release.json")"; bash "$tmp/update-master.sh" --release_manifest "$tmp/release.json" --release_signature "$tmp/release.json.sig" --package_file "$tmp/cdn-master.tar.gz" --node_updater_file "$tmp/update-node.sh" --node_package_file "$tmp/node-source.tar.gz" --public_key "$public_key"; )

二、边缘节点灰度执行

(set -e; for tool in curl openssl jq sha256sum bash mktemp flock sync tar systemctl uname stat find cp readlink tee; do command -v "$tool" >/dev/null 2>&1 || { echo "缺少更新工具: $tool" >&2; exit 1; }; done; tmp="$(mktemp -d)"; trap 'rm -rf "$tmp"' EXIT; base='https://cdn.vvwww88.cc/index.php'; release_id='00000000000000000080-v1.0.80'; public_key="${CDN_UPDATE_PUBLIC_KEY:-/etc/cdn-update/public.pem}"; download_base="$base?release=$release_id&f="; for f in release.json release.json.sig update-node.sh node-source.tar.gz; do curl -fsSL -o "$tmp/$f" -- "$download_base$f"; done; openssl dgst -sha256 -verify "$public_key" -signature "$tmp/release.json.sig" "$tmp/release.json"; jq -e --arg release_id "$release_id" '.release_id == $release_id' "$tmp/release.json" >/dev/null; test "$(sha256sum "$tmp/update-node.sh" | awk '{print $1}')" = "$(jq -er '.artifacts.node_updater.sha256' "$tmp/release.json")"; test "$(sha256sum "$tmp/node-source.tar.gz" | awk '{print $1}')" = "$(jq -er '.artifacts.node_package.sha256' "$tmp/release.json")"; bash "$tmp/update-node.sh" --release_manifest "$tmp/release.json" --release_signature "$tmp/release.json.sig" --package_file "$tmp/node-source.tar.gz" --public_key "$public_key"; )

当前发布文件状态

文件状态大小SHA256
release.json 已就绪 1.31 KB cf042d93d8205459746b2325765d8167f4dbae789e4c26803bbbdddaf983c399
release.json.sig 已就绪 384 B 1c56d584df9cf512da023200d9a2fecfdd2303ed38839f0ecb0344181a3bb642
cdn-master.tar.gz 已就绪 60.93 MB 265c73d912f07a1f99882cca62f3a949023c95a1cad304a690c46f1f40fde342
node-source.tar.gz 已就绪 4.07 MB 3ec8a1965dd44d3df7c167b0b314b4150a019592eadfeac91382d54d7a7467b6
update-master.sh 已就绪 201.58 KB 53a39c0c634196d301a6b56950dfc57b60094b768e6bf88beca29802b9407637
update-node.sh 已就绪 88.29 KB e3c2df6ac95f73a199412aa6258e1095b6fde06ef005ad1e11b58517bb4f4146

操作顺序

  1. 首次安装运行 首次部署.bat;日常更新运行 打包更新文件.bat。
  2. 把生成的单个压缩包拖到统一上传区,确认页面识别出的包类型。
  3. 首次安装复制首次安装命令;日常更新先执行主控命令。
  4. 日常更新确认主控版本后,再选择一个节点灰度更新并分批处理其余节点。