mirror of
https://git.fightbot.fun/hxuanyu/BingPaper.git
synced 2026-02-15 05:59:32 +08:00
4.8 KiB
4.8 KiB
配置指南
BingPaper 支持通过配置文件(YAML)和环境变量进行配置。
配置文件
程序启动时默认会查找当前目录下的 config.yaml 或 data/config.yaml。如果不存在,会自动在 data/config.yaml 创建一份带有默认值的配置文件。
你可以通过命令行参数 -config 或 -c 指定配置文件路径:
./BingPaper -c my_config.yaml
完整配置说明
以下是 config.example.yaml 的详细说明:
server (服务配置)
port: 服务监听端口,默认8080。base_url: 服务的基础 URL,用于生成某些绝对路径,默认为空。
log (日志配置)
level: 业务日志级别,可选debug,info,warn,error,默认info。filename: 业务日志输出文件路径,默认data/logs/app.log。db_filename: 数据库日志输出文件路径,默认data/logs/db.log。max_size: 日志文件切割大小 (MB),默认100。max_backups: 保留旧日志文件个数,默认3。max_age: 保留旧日志文件天数,默认7。compress: 是否压缩旧日志文件,默认true。log_console: 是否同时输出到控制台,默认true。show_db_log: 是否在控制台输出数据库日志(SQL),默认false。db_log_level: 数据库日志级别,可选debug,info,warn,error,silent。debug/info会记录所有 SQL。默认info。
api (API 模式)
mode: API 行为模式。local: (默认) 接口直接返回图片的二进制流,适合图片存储对外部不可见的情况。redirect: 接口返回 302 重定向到图片的PublicURL,适合配合 S3 或 WebDAV 的公共访问。
cron (定时任务)
enabled: 是否启用定时抓取,默认true。daily_spec: Cron 表达式,定义每日抓取时间。默认"0 10 * * *"(每日上午 10:00)。
retention (数据保留)
days: 图片及元数据保留天数。超过此天数的数据可能会被清理任务处理(需配合 API 触发或未来功能),默认30。
db (数据库配置)
type: 数据库类型,可选sqlite,mysql,postgres。默认sqlite。dsn: 数据库连接字符串。- SQLite:
data/bing_paper.db(默认) - MySQL 示例:
user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local - Postgres 示例:
host=localhost user=user password=pass dbname=db port=5432 sslmode=disable TimeZone=Asia/Shanghai
- SQLite:
注意: BingPaper 支持数据库配置的热更新。如果你在程序运行时修改了 db.type 或 db.dsn,程序会自动尝试将当前数据库中的所有数据(图片记录、变体信息、Token)迁移到新的数据库中。
- 在迁移开始前,程序会清空目标数据库中的相关表以防止数据冲突。
- 迁移过程在事务中执行,确保数据一致性。
- 迁移完成后,程序将无缝切换到新的数据库连接。
storage (存储配置)
type: 存储类型,可选local,s3,webdav。默认local。- local (本地存储):
root: 图片存储根目录,默认data/picture。
- s3 (对象存储):
endpoint: S3 端点(如s3.amazonaws.com或 MinIO 地址)。region: 区域(如us-east-1)。bucket: 桶名称。access_key: 访问密钥 ID。secret_key: 私有访问密钥。public_url_prefix: 公网访问前缀,若为空则由 SDK 自动尝试生成。force_path_style: 是否强制使用路径样式(MinIO 等通常需要设为true)。
- webdav (WebDAV 存储):
url: WebDAV 服务器地址。username: 用户名。password: 密码。public_url_prefix: 公网访问前缀。
admin (管理配置)
password_bcrypt: 管理员密码的 Bcrypt 哈希值。默认密码为admin123,对应哈希$2a$10$fYHPeWHmwObephJvtlyH1O8DIgaLk5TINbi9BOezo2M8cSjmJchka。- 强烈建议修改此项。
token (认证配置)
default_ttl: 管理后台登录 Token 的默认有效期,默认168h(7天)。
feature (功能开关)
write_daily_files: 是否在每日目录下写入原始文件(不仅是数据库记录),默认true。
web (静态资源)
path: 自定义管理后台前端文件的存放路径,默认web。若指定路径不存在,将尝试使用内置的嵌入页面。
环境变量配置
所有的配置项都可以通过环境变量进行覆盖。环境变量前缀为 BINGPAPER_,层级之间使用下划线 _ 分隔。
常用示例:
BINGPAPER_SERVER_PORT=9090BINGPAPER_DB_TYPE=mysqlBINGPAPER_DB_DSN="user:pass@tcp(127.0.0.1:3306)/bingpaper"BINGPAPER_STORAGE_TYPE=s3BINGPAPER_STORAGE_S3_BUCKET=my-imagesBINGPAPER_ADMIN_PASSWORD_BCRYPT="$2a$10$..."