包含 docker-compose.yml(实例 2 用 profile 门控)、.env.example 配置模板、 以及基于实测数据的部署说明。 实测确认的关键点: - 镜像仅 134MB 不含游戏文件,约 80-100GB 服务端由 SteamCMD 运行时拉取 - 镜像声明 4 个端口,BEACONPORT=15000 官方 wiki 未提及,host 网络下多实例会冲突 - entry.sh 会自动重写 Rcon.cfg 端口,但 sed 只匹配字面量 21114, 首启后再改 RCONPORT 会静默失败 - entry.sh 每次启动无条件跑 app_update,故共享游戏文件方案有并发写入风险(未验证) - 发现两个未见于文档的环境变量:SERVER_NAME、MULTIHOME - RANDOM 环境变量在本镜像中无效(bash 内置特殊变量覆盖不了),已记录为已知问题 凭据一律使用占位符,.gitignore 挡住 .env / Rcon.cfg / License.cfg 等含密文件。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
81 lines
4.2 KiB
Bash
81 lines
4.2 KiB
Bash
# ─────────────────────────────────────────────────────────────
|
|
# Squad 服务端部署配置模板
|
|
#
|
|
# 用法: cp .env.example .env 然后填入真实值
|
|
# 注意: .env 已被 .gitignore 挡住,不要强制提交。
|
|
# 本仓库是 public 仓库,任何真实凭据提交后即视为泄露。
|
|
# ─────────────────────────────────────────────────────────────
|
|
|
|
# ── 镜像来源 ────────────────────────────────────────────────
|
|
# 目标机所在网络无法访问 Docker Hub,必须走私有注册表。
|
|
# 该镜像与 Docker Hub 上游 digest 一致:
|
|
# sha256:8cba47f53df586c2767525a9f062c2996b36f9a34a1d771a35f67a1713c46893
|
|
SQUAD_IMAGE=squaddocker.azurecr.cn/squad-server:v1
|
|
|
|
# ACR 需要先登录才能拉取(凭据不写在这里,见 README §5):
|
|
# docker login squaddocker.azurecr.cn -u <用户名> --password-stdin
|
|
|
|
# ── 数据存放路径 ───────────────────────────────────────────
|
|
# 游戏本体约 80-100GB,建议指向独立数据盘挂载点,不要放 OS 盘。
|
|
# 目录 owner 必须是 uid 1000(镜像内以 steam 用户运行):
|
|
# sudo mkdir -p /srv/squad/inst1 && sudo chown -R 1000:1000 /srv/squad
|
|
SQUAD_DATA_ROOT=/srv/squad
|
|
|
|
# ── 实例 1 ─────────────────────────────────────────────────
|
|
# 端口取镜像默认值(Squad 官方标准端口)。
|
|
# 游戏端口与查询端口各占 N 和 N+1 两个,所以多实例间隔至少 10,不能只差 1。
|
|
# BEACONPORT 容易被漏掉 —— 官方 wiki 没提,但 host 网络下会冲突。
|
|
INST1_NAME=squad1
|
|
INST1_PORT=7787
|
|
INST1_QUERYPORT=27165
|
|
INST1_BEACONPORT=15000
|
|
INST1_RCONPORT=21114
|
|
INST1_MAXPLAYERS=50
|
|
INST1_TICKRATE=50
|
|
|
|
# 服务器名。entry.sh 会把它写入 Server.cfg 的 ServerName。
|
|
# 该变量未见于镜像文档,是从 entry.sh 源码中确认的。
|
|
INST1_SERVER_NAME=My Squad Server
|
|
|
|
# 容器内存上限。宿主机无 swap 时必须设,否则 OOM 会拖垮整机。
|
|
# 单实例机器(7.7GB 内存)建议 6g;16GB 机器跑双实例建议各 7g。
|
|
INST1_MEM_LIMIT=6g
|
|
|
|
# 可选:绑定指定网卡 IP。留空 / 0.0.0.0 / 127.0.0.1 时被忽略。
|
|
# 多实例若各有独立 IP,可用它替代纯靠端口错开。
|
|
# INST1_MULTIHOME=
|
|
|
|
# 可选:创意工坊 Mod。格式是 bash 数组字面量,注意括号:
|
|
# INST1_MODS=(1959152751 2016356569)
|
|
|
|
# ── 实例 2(默认不启动)────────────────────────────────────
|
|
# 启用前请确认硬件满足 README §2.2:2 个物理核 + 16GB 内存 + 160GB 磁盘。
|
|
# 启用方式: docker compose --profile instance2 up -d
|
|
INST2_NAME=squad2
|
|
INST2_PORT=7797
|
|
INST2_QUERYPORT=27175
|
|
INST2_BEACONPORT=15010
|
|
INST2_RCONPORT=21124
|
|
INST2_MAXPLAYERS=50
|
|
INST2_TICKRATE=50
|
|
INST2_SERVER_NAME=My Squad Server 2
|
|
INST2_MEM_LIMIT=6g
|
|
# INST2_MULTIHOME=
|
|
# INST2_MODS=()
|
|
|
|
# ── 可选:测试版分支(需 Offworld 提供的分支名与密码)─────────
|
|
# STEAM_BETA_BRANCH=
|
|
# STEAM_BETA_PASSWORD=
|
|
|
|
# ─────────────────────────────────────────────────────────────
|
|
# 不要在此设置的项
|
|
# ─────────────────────────────────────────────────────────────
|
|
#
|
|
# RCON 密码:镜像没有 RCONPASSWORD 环境变量。entry.sh 只会重写
|
|
# Rcon.cfg 里的端口,不管密码。密码必须在服务器上直接改
|
|
# ServerConfig/Rcon.cfg,详见 README §6.4。
|
|
#
|
|
# RANDOM:此镜像中该变量无效。RANDOM 是 bash 内置特殊变量,
|
|
# 环境变量覆盖不了它,entry.sh 读到的永远是随机整数。
|
|
# 地图轮换请改用 MapRotation.cfg。详见 README §10。
|