离线 / 内网部署:没有外网也能完整跑起来
内网 / 政务 / 金融等场景常常不允许出网。这套系统标准版本身就是离线可用的: 不依赖母版、不联网也能完整跑起来(高级版的授权校验才需要连母版)。
一、在联网机器上拉包并导出镜像
发版包从分发桶直接拉(公共读,不用登录、不用先下载到本地):
curl -fsSLO https://yaka-dist.tos-cn-beijing.volces.com/releases/latest/yaka-instance.tar.gz
curl -fsSLO https://yaka-dist.tos-cn-beijing.volces.com/releases/latest/yaka-instance.tar.gz.sha256
sha256sum -c yaka-instance.tar.gz.sha256
四个容器里,yaka-ext 用自己的镜像,其余三个用公共镜像;它的运行时底座是
debian:bookworm-slim,也要一起导出 —— 少了它,内网构建会卡在拉基础镜像这一步:
docker pull postgres:15-alpine
docker pull calciumion/new-api:v1.0.0-rc.45
docker pull nginx:1.27-alpine
docker pull debian:bookworm-slim
docker save -o images.tar \
postgres:15-alpine \
calciumion/new-api:v1.0.0-rc.45 \
nginx:1.27-alpine \
debian:bookworm-slim
把 images.tar 与 yaka-instance.tar.gz 一起拷进内网(U 盘 / 内网文件服务器均可)。
二、在内网机器上导入并安装
mkdir -p /opt/yaka && cd /opt/yaka
tar -xzf yaka-instance.tar.gz && cd yaka-instance-*
mv ../images.tar images/ # install.sh 优先用包内 images/*.tar,不联网
sudo bash install.sh
install.sh 会优先使用包内 images/*.tar,没有才尝试本地构建;
离线环境请确保镜像已导入,否则会卡在「准备镜像」这一步。
三、确认彻底不需要外网
.env里DEPLOY_EDITION=standard、BOOT_GRANT_REQUIRED=0;MASTER_URL留空 —— 标准版不会去连母版;- 对象存储(
TOS_*)留空时,上传的文件落本地磁盘,不依赖云; - 邮件(SMTP)不配也能用,只是不发注册验证码 / 通知邮件。
四、内网时间与证书
- 内网机器务必配 NTP 对时。时间漂移会让令牌、支付回调签名、对账日期一起出错。
- 没有公网域名就用内网自签证书,或直接 HTTP(只在内网访问时)。 自签证书要在客户端导入根证书,否则浏览器会拦。
踩坑清单
| 现象 | 原因与处置 |
|---|---|
| 卡在「准备镜像」,日志提示拉取失败 | 镜像没 docker load 进来,或 tag 与 compose 里写的不一致(docker images 核对)。 |
| 容器内解析不了域名 | 内网 DNS 缺记录。改宿主机 /etc/docker/daemon.json 的 dns 指向内网 DNS。 |
| 时间漂移导致登录频繁失效 | 配 NTP;容器与宿主机共用内核时钟,宿主机对了容器就对。 |
| 导出镜像体积过大 | 导出前先 docker system prune 清无用层;只导出这 4 个镜像,不要 save 全量。 |

