离线 / 内网部署:没有外网也能完整跑起来

雅卡团队 · 2026-10-20T14:00

内网 / 政务 / 金融等场景常常不允许出网。这套系统标准版本身就是离线可用的: 不依赖母版、不联网也能完整跑起来(高级版的授权校验才需要连母版)。

一、在联网机器上拉包并导出镜像

发版包从分发桶直接拉(公共读,不用登录、不用先下载到本地):

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 全量。