CDN统一更新发布
当前地址:https://cdn.vvwww88.cc/index.php;首次部署包和日常更新包使用同一个上传入口,服务器会自动识别。
首次部署
等待上传
主控首次安装
上传本地“首次部署”入口生成的包后,复制下方整行命令到新主控服务器执行。
当前完整发布
已就绪 2026-08-18 v1.0.64(发布序号 64)
发布时间:2026-08-18T22:03:14.7547215+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='00000000000000000064-v1.0.64'; 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='00000000000000000064-v1.0.64'; 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.32 KB | e050598a5e3847cd2a2082b07d8270ada59d736481388050eae5c8c57c8711f2 |
| release.json.sig | 已就绪 | 384 B | 9c67adbcb9ce6a3d71fbea0ce7f1bd33b6e1776cd350b58f334c8f35e70a77fd |
| cdn-master.tar.gz | 已就绪 | 60.7 MB | 3de17649037f685290b051ec804239e4d04715cc7a23e09ec1bf4092de5907bb |
| node-source.tar.gz | 已就绪 | 4.06 MB | 47ac0d5fe8c6c74679128d9ef88a024c9a34c0ff77cb58557c63b6f136852e80 |
| update-master.sh | 已就绪 | 198.97 KB | dc8cbde01d8330f7a74e72f521428da3a85755fd7387c5606b8132845e454b64 |
| update-node.sh | 已就绪 | 88.29 KB | e3c2df6ac95f73a199412aa6258e1095b6fde06ef005ad1e11b58517bb4f4146 |
操作顺序
- 首次安装运行
首次部署.bat;日常更新运行打包更新文件.bat。 - 把生成的单个压缩包拖到统一上传区,确认页面识别出的包类型。
- 首次安装复制首次安装命令;日常更新先执行主控命令。
- 日常更新确认主控版本后,再选择一个节点灰度更新并分批处理其余节点。