Files
senmesh-zc/deploy/offline/.env.iw
KodouWZF 4eb67e246e feat(交付): 客户侧两台服务器离线部署包
内网机/外网机各起一套栈,两台之间不开任何端口,文件只经光闸在
gate/out 与对端 gate/in 之间单向摆渡。一份 compose + 一份 config +
一份 nginx 模板,全部差异收在 .env 里。

- docker-compose.yml:5 服务只发布前端端口;app 容器 IP 锁死并由
  compose 注入 -Dcode.snowflake.workid.<IP>=<WORK_ID>,绕开兜底 99
  超雪花 5 位上限导致启动即崩的问题
- .env.iw / .env.ow:出厂配置与随机口令已填好,仅 MESHSAFE_SECRET
  故意留占位(以 MeshSafe 侧白名单为准);按 maintainer 决定原样入库
- install.sh iw|ow:按角色建 .env -> 自检 -> sha256 校验 tar -> 架构
  核对 -> docker load 后校验 tag -> 建目录/属主/SELinux 标签 -> 起栈
  并逐个等健康。修掉 pipefail 下 `grep | head -1` 静默中断、架构字段
  误读 manifest.json(实际在 Config blob)、die() 未定义先被调用
- export-images.sh:就地刷新 images/*.tar、sql、.env 的 tag 与
  SHA256SUMS,再打 dist 交付盘;tar 与 SHA256SUMS 由 .gitignore 排除
- sql/01+02:从 backend/db 的 PG 全量与初始数据覆盖拷贝。三个
  upgrade-*.sql 的 PG 段(x_upload_config、x_file_security)已在
  init-table-postgres-full.sql 内,空库跑 01->02 即完整现状
- smoke_test.py:18 条断言的现场验收,凭证全部走环境变量
- 部署说明.md:拓扑、交付清单、出厂口令表、iw/ow 差异、验收清单、
  13 条已知坑

镜像 tar 不进 git,装机包由 export-images.sh 出盘。
2026-11-02 20:40:16 +08:00

63 lines
2.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# s-file 交付配置 —— 内网机(拷到内网服务器后 mv 成 .env)
#
# 装机后必须立刻改的两处:admin 登录口令、新用户初始密码 USER_DEFAULT_PASSWORD
# 下面的库/MQ 口令是出厂默认值,客户内网可用,但交付单要写清并建议现场轮换
# =============================================================================
# ---------- 本机角色 ----------
SFILE_ROLE=iw
SFILE_TRANSFER_LOCATION=1
SFILE_SITE_ROOT=/usr/share/nginx/inside
# ---------- 镜像(images/ 里的 tar docker load 后就是这些 tag) ----------
APP_IMAGE=sfile-app:1.0.0
WEB_IMAGE=sfile-web:1.0.0
PG_IMAGE=postgres:18
REDIS_IMAGE=redis:8
MQ_IMAGE=rabbitmq:3.13-management-alpine
PG_DATA_DIR=/var/lib/postgresql
# ---------- 对外访问:只暴露前端 ----------
WEB_HOST=0.0.0.0
WEB_PORT=80
# ---------- 口令与密钥 ----------
POSTGRES_DB=s_file
POSTGRES_USER=sfile
POSTGRES_PASSWORD=Sfile-iw-Pg-N1tOz1MxgdaS
MQ_USER=sfile
MQ_PASSWORD=Sfile-iw-Mq-UTqVSnCDZ0LB
JWT_SECRET=86a6b015f3292eb3fdab298d3eced941da4276d47e24e924b82ab8adee397d70
USER_DEFAULT_PASSWORD=Sfile-iw-Usr-FBLS-0fA
# ---------- 发号器与容器网段(与外网机各用一段,同机并跑时才需要错开) ----------
APP_SUBNET=172.30.88.0/24
APP_GATEWAY=172.30.88.1
APP_NODE_IP=172.30.88.10
APP_WORK_ID=1
# ---------- 主机数据目录 ----------
SFILE_DATA_ROOT=/data/sfile
GATE_SEND_DIR=/data/sfile/gate/out
GATE_RECV_DIR=/data/sfile/gate/in
# ---------- MeshSafe 文件安全检测 ----------
# 凭证必须与 MeshSafe 侧 MESHSAFE_API_CLIENTS 白名单一致,现场按 MeshSafe 交付单核对
MESHSAFE_ENABLED=true
MESHSAFE_BASE_URL=http://host.docker.internal:44380
MESHSAFE_CLIENT_ID=sfile-iw
MESHSAFE_SECRET=CHANGE_ME_meshsafe_secret
MESHSAFE_CHANNEL=sfile-iw
# 等保从严建议 false:检测服务不可用时阻断而不是放行
MESHSAFE_FAIL_OPEN=true
MESHSAFE_TIMEOUT_SECONDS=120
MESHSAFE_POLL_TIMEOUT_MINUTES=60
MESHSAFE_POLL_CRON=0/10 * * * * ?
# ---------- 资源与运行时 ----------
TZ=Asia/Shanghai
APP_JAVA_OPTS=-Xms1g -Xmx3g -Dfile.encoding=UTF-8
REDIS_MAXMEMORY=512mb
FILE_TRANSFER_MONITOR_CRON=0 */1 * * * ?