Files
abot/docker-entrypoint.sh

103 lines
3.6 KiB
Bash
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.
#!/usr/bin/env bash
set -euo pipefail
mkdir -p /app/logs
# 首次启动时自动生成最小可运行配置:
# 1. 若用户已经通过挂载文件提供 config.yaml则完全尊重现有配置
# 2. 若未提供,则根据 .env / compose 环境变量生成一份安全模板;
# 3. 模板中的敏感值继续走环境变量占位,避免把真实密钥写进镜像层。
if [ ! -f /app/config.yaml ]; then
cat > /app/config.yaml <<EOF
environment: "\${ABOT_ENVIRONMENT:production}"
plugin_dir: "\${ABOT_PLUGIN_DIR:plugins}"
db_config:
pool_name: "\${ABOT_DB_POOL_NAME:wechat_boot_pool}"
pool_size: "\${ABOT_DB_POOL_SIZE:10}"
host: "\${ABOT_DB_HOST:127.0.0.1}"
port: "\${ABOT_DB_PORT:3306}"
prot: "\${ABOT_DB_PORT:3306}"
user: "\${ABOT_DB_USER:root}"
password: "\${ABOT_DB_PASSWORD}"
database: "\${ABOT_DB_NAME:message_archive}"
charset: "utf8mb4"
use_unicode: true
get_warnings: true
pool_reset_session: true
redis_config:
host: "\${ABOT_REDIS_HOST:127.0.0.1}"
port: "\${ABOT_REDIS_PORT:6379}"
password: "\${ABOT_REDIS_PASSWORD:}"
db: "\${ABOT_REDIS_DB:0}"
decode_responses: true
email_config:
smtp_server: "\${ABOT_EMAIL_SMTP_SERVER:smtp.163.com}"
smtp_port: "\${ABOT_EMAIL_SMTP_PORT:465}"
sender_email: "\${ABOT_EMAIL_SENDER:}"
sender_password: "\${ABOT_EMAIL_PASSWORD:}"
alert_recipient: "\${ABOT_EMAIL_ALERT_RECIPIENT:}"
glances:
host: "\${ABOT_GLANCES_HOST:127.0.0.1}"
port: "\${ABOT_GLANCES_PORT:61208}"
wx_config:
admin: [ "\${ABOT_WX_ADMIN:admin}" ]
wechat_ipad:
server_url: "\${WECHAT_SERVER_URL:http://host.docker.internal:8059/}"
server_ip: "\${WECHAT_SERVER_IP:host.docker.internal}"
server_port: "\${WECHAT_SERVER_PORT:8059}"
server_type: "\${WECHAT_SERVER_TYPE:legacy_855}"
# 864 风格 server 依赖固定 key这里一并写入自动生成的配置模板
# 1. 避免容器部署场景下还要手工进容器补 config.yaml
# 2. 855/859 保持可留空,不影响现有默认行为;
# 3. 真正的值仍由 `.env` / compose 环境变量注入,不会写死在镜像层。
server_key: "\${WECHAT_SERVER_KEY:}"
wxid: "\${WECHAT_WXID:}"
device_name: "\${WECHAT_DEVICE_NAME:}"
device_id: "\${WECHAT_DEVICE_ID:}"
state_file: "\${WECHAT_STATE_FILE:}"
legacy_config_path: "\${WECHAT_LEGACY_CONFIG_PATH:wechat_ipad/config.toml}"
EOF
fi
# Dashboard 单独使用 config.toml
# 1. 公开仓库里的默认账号和 webhook token 不适合作为最终线上值;
# 2. 这里允许通过环境变量在容器启动期覆盖默认配置,降低“改完 .env 还要再改一份 TOML”的成本
# 3. 若用户自己挂载了定制版 config.toml也仍然可以继续复用因为运行时还会再做环境变量兜底覆盖。
if [ ! -f /app/admin/dashboard/config.toml ]; then
cat > /app/admin/dashboard/config.toml <<EOF
[server]
host = "0.0.0.0"
port = ${DASHBOARD_PORT:-8888}
[auth]
username = "${ABOT_DASHBOARD_USERNAME:-admin}"
password = "${ABOT_DASHBOARD_PASSWORD:-ChangeThisPassword_2026!}"
session_timeout_minutes = 480
max_failed_attempts = 5
lock_seconds = 900
cookie_secure = false
cookie_samesite = "Lax"
[trendradar_webhook]
enabled = false
token = "${ABOT_TRENDRADAR_WEBHOOK_TOKEN:-please_change_this_token}"
default_group_ids = []
allow_payload_target_groups = false
send_timeout_seconds = 20
EOF
fi
# wechat_ipad 登录态现在默认落到 provider 自己目录下:
# 1. 静态连接配置已统一走 `.env` / `config.yaml`
# 2. 855 当前默认会写到 `wechat_ipad/providers/legacy_855/runtime_state.toml`
# 3. 这里只预创建 provider 根目录,真正状态文件由运行期按 provider 自动写入。
mkdir -p /app/wechat_ipad/providers
exec "$@"