#!/bin/sh # ────────────────────────────────────────────────────────────── # ProbeDeck 探针容器入口 # • 用环境变量生成/更新 config.conf(面板下发的配置会写回同一文件, # 所以必须放在可持久化的 volume 上) # • 不写 AUTO_UPDATE 字段 → 容器内自更新默认关闭 # (容器升级 = 重新拉镜像,不该由进程自己替换二进制) # • 日志直接走 stdout/stderr,docker logs 即可查看 # ────────────────────────────────────────────────────────────── set -eu CONFIG_DIR="${CF_PROBE_CONFIG_DIR:-/etc/cf-probe}" CONFIG_FILE="${CONFIG_DIR}/config.conf" : "${SERVER_ID:?请设置 SERVER_ID 环境变量(面板里的服务器 ID)}" : "${SECRET:?请设置 SECRET 环境变量(面板里的服务器密钥)}" : "${WORKER_URL:?请设置 WORKER_URL 环境变量(面板上报地址,例如 https://example.com/update)}" mkdir -p "${CONFIG_DIR}" # ── 生成配置(KV 格式,与 install.sh 写盘格式一致)──────────────── # 已存在的文件保留(面板远程下发的节点/间隔等改动都在里面), # 仅当三项必填缺失时才初始化——避免重建容器丢失面板侧配置。 if [ ! -s "${CONFIG_FILE}" ]; then cat > "${CONFIG_FILE}" </dev/null; then sed -i "s|^${key}=.*|${key}=\"${value}\"|" "${CONFIG_FILE}" else printf '%s="%s"\n' "${key}" "${value}" >> "${CONFIG_FILE}" fi } update_field SERVER_ID "${SERVER_ID}" update_field SECRET "${SECRET}" update_field WORKER_URL "${WORKER_URL}" # 容器内禁用自更新:删掉历史遗留的 AUTO_UPDATE 字段 if grep -q '^AUTO_UPDATE=' "${CONFIG_FILE}" 2>/dev/null; then sed -i '/^AUTO_UPDATE=/d' "${CONFIG_FILE}" fi DEBUG_FLAG="-debug=0" if [ "${DEBUG:-0}" = "1" ]; then DEBUG_FLAG="-debug=1" fi echo "[entrypoint] 使用配置文件 ${CONFIG_FILE}(SERVER_ID=${SERVER_ID})" exec /app/cf-probe run -config "${CONFIG_FILE}" ${DEBUG_FLAG}