内网机/外网机各起一套栈,两台之间不开任何端口,文件只经光闸在 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 出盘。
63 lines
2.2 KiB
Plaintext
63 lines
2.2 KiB
Plaintext
# =============================================================================
|
||
# 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 * * * ?
|