ZCode 连接 SSH 远程(linux-x64)时,需要在线从 CDN 拉取 manifest 与组件包(server-bundle / node-runtime 等),再部署到远程主机。
本项目解决离线环境 的环境中,ZCode 无法连CDN拉取,ssh连接远程服务器进行开发的问题。
本仓库做两件事:
- 有网侧:从官方 CDN 把指定版本资源镜像到本地
offline/目录 - 离线侧:用本地 HTTP 服务(或 Docker)MOCK 线上 CDN 路径,让客户端通过环境变量
ZCODE_REMOTE_ASSET_CDN_BASE_URL走内网/本机地址完成下载
支持多版本资源并存,按客户端请求的版本路径自动响应。日常使用下载 Releases 的二进制或 Docker 镜像包即可,无需安装 Go。
| 目录 | 用途 |
|---|---|
online/ |
有网环境:从公网 CDN 拉取 / 更新资源到 offline/ |
offline/ |
离线环境:本地 HTTP 服务 MOCK 线上 CDN(多版本自动响应) |
正常使用请从 GitHub Releases 下载对应平台二进制,或 Linux 的 zcode-cdn-mock_docker_image_*.tar.gz 镜像包(约 2MB)。
下载 download-offline-assets_<os>_<arch>[.exe],放到仓库旁(与 offline/ 同级的 online/ 工作方式:工具会写入 ../offline)。在含 offline 目录的上一级结构中执行更直观:把二进制放进 online/ 再运行。
# Windows 示例(amd64)
.\download-offline-assets_windows_amd64.exe -list
.\download-offline-assets_windows_amd64.exe -version 3.4.2
.\download-offline-assets_windows_amd64.exe -version 3.5.0 -force# Linux 示例
chmod +x download-offline-assets_linux_amd64
./download-offline-assets_linux_amd64 -list
./download-offline-assets_linux_amd64 -version 3.4.2资源写入 offline/zcode/electron/releases/...。
先准备好已拉取的 offline/ 资源目录,再任选其一:
从 Release 下载 zcode-cdn-mock_<os>_<arch>[.exe],放到 offline/ 目录下执行:
# Windows
cd offline
.\zcode-cdn-mock_windows_amd64.exe# Linux
cd offline
chmod +x zcode-cdn-mock_linux_amd64
./zcode-cdn-mock_linux_amd64默认:http://127.0.0.1:8765
CDN 根:http://127.0.0.1:8765/zcode/electron/releases
PORT=9000 BIND=0.0.0.0 ./zcode-cdn-mock_linux_amd64Docker 只用于离线侧的本地 CDN HTTP 服务。有网侧 download-offline-assets_* 不需要 Docker。
Release 已提供打好的镜像包(约 2MB):zcode-cdn-mock_docker_image_linux_amd64.tar.gz / …_arm64.tar.gz。
从 Releases 下载对应架构的:
zcode-cdn-mock_docker_image_linux_amd64.tar.gz,或zcode-cdn-mock_docker_image_linux_arm64.tar.gz
与已拉取的 offline/ 资源(至少含 zcode/)一起拷到离线机。
# 以 amd64 为例
docker load -i zcode-cdn-mock_docker_image_linux_amd64.tar.gz
# 数据目录:已拉取的 offline 资源(目录内需有 zcode/)
DATA_DIR=/path/to/offline
docker run -d --restart unless-stopped \
--name zcode-cdn-mock \
-p 8765:80 \
-v "${DATA_DIR}:/data:ro" \
-e CDN_ROOT=/data -e PORT=80 -e BIND=0.0.0.0 \
zcode-cdn-mock:local停止 / 删除容器:
docker stop zcode-cdn-mock
docker rm zcode-cdn-mock默认:http://127.0.0.1:8765,CDN 根:http://127.0.0.1:8765/zcode/electron/releases。
开发或定制时可克隆仓库后本地构建(与 CI 相同,官方 golang 基础镜像):
git clone https://github.com/coloraven/zcode_remote_offline.git
cd zcode_remote_offline/offline
docker build --platform linux/amd64 -t zcode-cdn-mock:local .
docker save zcode-cdn-mock:local | gzip > zcode-cdn-mock_docker_image_linux_amd64.tar.gz[System.Environment]::SetEnvironmentVariable(
'ZCODE_REMOTE_ASSET_CDN_BASE_URL',
'http://127.0.0.1:8765/zcode/electron/releases',
'User'
)export ZCODE_REMOTE_ASSET_CDN_BASE_URL='http://127.0.0.1:8765/zcode/electron/releases'echo "export ZCODE_REMOTE_ASSET_CDN_BASE_URL='http://127.0.0.1:8765/zcode/electron/releases'" >> ~/.bashrc若 CDN 跑在另一台机器,把地址改成例如 http://192.168.x.x:8765/zcode/electron/releases。
然后完全退出并重启 ZCode,再进行 SSH 远程连接。
改代码时可用源码调试,日常使用不需要:
cd online; go run . -version 3.4.2
cd offline; go run .详见 offline/README.md、online/README.md。
| 产物 | 说明 |
|---|---|
download-offline-assets_<os>_<arch>[.exe] |
有网拉取工具 |
zcode-cdn-mock_<os>_<arch>[.exe] |
离线 CDN 服务二进制 |
zcode-cdn-mock_docker_image_linux_amd64.tar.gz |
Linux amd64 Docker 镜像包(约 2MB) |
zcode-cdn-mock_docker_image_linux_arm64.tar.gz |
Linux arm64 Docker 镜像包(约 2MB) |
SHA256SUMS.txt |
校验 |
平台:二进制为 linux / windows × amd64 / arm64;Docker 镜像包仅 linux amd64 / arm64。