包含以下核心内容: 1. 完整的Docker容器化部署方案,支持多架构amd64/arm64 2. 自研Web管理面板,包含登录认证、实例管理、权限控制 3. 微信实例容器镜像,内置中文字体与输入法修复 4. 飞牛OS应用打包适配 5. 完整的文档与运维指南
61 lines
2.8 KiB
Bash
61 lines
2.8 KiB
Bash
#!/usr/bin/with-contenv bash
|
||
# linuxserver 启动钩子(/custom-cont-init.d,root 身份,每次启动、在各服务起来之前执行)。
|
||
#
|
||
# 目的:给每个实例一个【唯一且持久】的设备身份,避免所有实例共用镜像里烤死的同一个 machine-id。
|
||
#
|
||
# 背景(P0):Debian/基础镜像把 machine-id 固化在镜像层里,于是全世界每个 wechat-on-cloud
|
||
# 实例的 /etc/machine-id 都相同。machine-id 是 Linux 上最接近"设备指纹"的标识,微信会读它做
|
||
# 风控;成千上万个账号共用同一个 machine-id = 典型"设备农场"特征 → 被腾讯批量判风险 → 登录即
|
||
# 被强制退出、反复循环。
|
||
#
|
||
# 解法:
|
||
# 1) 在数据卷(/config,随实例持久)里存一个本实例专属的随机 machine-id;
|
||
# 2) 每次启动把它写回 /etc/machine-id 与 /var/lib/dbus/machine-id。
|
||
# 这样:实例之间互不相同(破掉设备农场特征),且重启 / 升级 / 重建容器都保持不变("设备老在变"
|
||
# 同样可疑)。仅在卷里尚无该文件时才生成,故老实例首启会拿到一个新的唯一 id(之后恒定)。
|
||
set -e
|
||
|
||
ID_FILE=/config/.woc-machine-id
|
||
|
||
# 生成 32 位小写十六进制(systemd machine-id 格式):优先用内核 uuid 源,去掉连字符。
|
||
if [ ! -s "$ID_FILE" ]; then
|
||
if [ -r /proc/sys/kernel/random/uuid ]; then
|
||
tr -d '-' < /proc/sys/kernel/random/uuid | tr 'A-F' 'a-f' > "$ID_FILE"
|
||
else
|
||
head -c16 /dev/urandom | od -An -tx1 | tr -d ' \n' > "$ID_FILE"
|
||
fi
|
||
fi
|
||
|
||
MID="$(tr -dc 'a-f0-9' < "$ID_FILE" | head -c 32)"
|
||
# 兜底:若文件内容异常(长度不足 32),重新生成
|
||
if [ "${#MID}" -ne 32 ]; then
|
||
MID="$(tr -d '-' < /proc/sys/kernel/random/uuid | tr 'A-F' 'a-f' | head -c 32)"
|
||
printf '%s\n' "$MID" > "$ID_FILE"
|
||
fi
|
||
|
||
printf '%s\n' "$MID" > /etc/machine-id 2>/dev/null || true
|
||
mkdir -p /var/lib/dbus
|
||
printf '%s\n' "$MID" > /var/lib/dbus/machine-id 2>/dev/null || true
|
||
|
||
# 抹掉最明显的容器标记(微信可能据此判定非真实桌面)。/.dockerenv 由 docker 注入,删掉无副作用。
|
||
rm -f /.dockerenv 2>/dev/null || true
|
||
|
||
# 设备伪装:把 /etc/os-release 改成 deepin(微信官方支持的发行版;Deepin 本就基于 Debian,
|
||
# 与本镜像的 Debian 用户态一致,不自相矛盾)。面板按 WOC_SPOOF_OS 控制(默认开,=0 关)。
|
||
# /etc/os-release 是指向 /usr/lib/os-release 的软链,重定向会写穿到目标,故直接写它即可。
|
||
if [ "${WOC_SPOOF_OS:-1}" = "1" ]; then
|
||
cat > /etc/os-release <<'OSEOF'
|
||
PRETTY_NAME="deepin 23"
|
||
NAME="deepin"
|
||
VERSION_ID="23"
|
||
VERSION="23"
|
||
VERSION_CODENAME=beige
|
||
ID=deepin
|
||
ID_LIKE=debian
|
||
HOME_URL="https://www.deepin.org/"
|
||
BUG_REPORT_URL="https://bbs.deepin.org/"
|
||
OSEOF
|
||
fi
|
||
|
||
echo "[woc-identity] machine-id 已设为本实例专属(持久化于数据卷);os 伪装=${WOC_SPOOF_OS:-1}"
|