Traggo 0.8.3 配置参数详解

Traggo 0.8.3 全部 7 个 TRAGGO_* 配置项逐项详解:五级配置来源与优先级实测验证、默认值、非法值报错实录、裸机与 Compose 生产配置模板。

TraggoTraggo时间追踪2026/10/25

Traggo 0.8.3 配置参数详解

目标:逐项讲透 Traggo 0.8.3 的全部配置项、配置来源与优先级,并给出经实测验证的优先级实验与生产配置模板。本文基于 Traggo 0.8.3 真实环境实测(启动日志、debug 加载行、端口监听逐一验证)。

一、环境信息

  • 软件版本:Traggo v0.8.3(commit 6321119c3c2d55f04e2e4967f6492aabd6067b76)
  • 操作系统:Ubuntu 22.04.5 LTS,x86_64
  • 安装形态:官方预编译二进制 /opt/traggo/traggo(配置结论同样适用于编排化部署形态,该形态下通过环境变量注入)
  • 默认监听:3030;默认库:data/traggo.db(SQLite)

二、前置条件

已按本专栏《Ubuntu 22.04 安装 Traggo 0.8.3 指南》或《Traggo 0.8.3 Docker Compose 部署指南》完成部署;本文示例命令均可在已部署环境上独立执行。

三、参数查看与修改方式

3.1 配置模型:只有 7 个环境变量式配置项

Traggo 没有命令行参数、没有 YAML/TOML 配置文件,全部配置就是 7 个 TRAGGO_* 键(源码 config/config.go 实查,默认值见下表)。配置格式为 KEY=VALUE,与 .env 文件格式一致。

3.2 配置来源与优先级(已实测)

Traggo 按以下顺序查找配置,首个出现的值生效(官方文档原话:Properties will never be overridden):

优先级来源说明
1(最高)操作系统环境变量含 systemd 单元的 Environment=
2.env.local与二进制同目录
3.env与二进制同目录
4$HOME/.config/traggo/server.ini运行用户的 home 下
5(最低)/etc/traggo/server.ini全局配置

3.3 优先级实测验证

在装有 /etc/traggo/server.ini(含 TRAGGO_PORT=3030)的机器上逐级叠加配置,观察启动日志中的监听端口:

# 环境变量优先于 ini 文件:设置为 3040
TRAGGO_PORT=3040 ./traggo
# INF Start listening port=3040

# 二进制同目录放 .env(TRAGGO_PORT=3050),不带环境变量启动
./traggo
# INF Start listening port=3050

# 再放 .env.local(TRAGGO_PORT=3060),.env.local 盖过 .env
./traggo
# INF Start listening port=3060

# 环境变量 TRAGGO_PORT=3070 盖过 .env.local
TRAGGO_PORT=3070 ./traggo
# INF Start listening port=3070

# 删掉 .env/.env.local,放 $HOME/.config/traggo/server.ini(TRAGGO_PORT=3080)
./traggo
# INF Start listening port=3080

debug 日志可直接看到实际加载了哪些文件(TRAGGO_LOG_LEVEL=debug 实测):

DBG Loading file /root/.config/traggo/server.ini
DBG Loading file /etc/traggo/server.ini
INF Start listening port=3080

💡 说明:注意「按属性首个生效」而非「按文件整体生效」——.env.local 里没写的键仍会从 .env、home ini、/etc/traggo/server.ini 补齐。

3.4 修改方式对照

  • 裸机 systemd 部署:改 /etc/traggo/server.ini 后 systemctl restart traggo;或在单元文件中加 Environment=TRAGGO_xxx=...(优先级更高)。
  • 编排化部署:修改编排文件中的 environment: 后重建服务生效(见本专栏 Compose 部署篇)。

四、参数总览

配置项默认值类型必填说明
TRAGGO_PORT3030int否HTTP 监听端口
TRAGGO_DEFAULT_USER_NAMEadminstring否首次建库的默认用户名
TRAGGO_DEFAULT_USER_PASSadminstring否首次建库的默认用户密码
TRAGGO_PASS_STRENGTH10int否bcrypt 密码强度
TRAGGO_LOG_LEVELinfoenum否日志级别
TRAGGO_DATABASE_DIALECTsqlite3enum否数据库方言
TRAGGO_DATABASE_CONNECTIONdata/traggo.dbstring否数据库连接串

五、核心参数分类详解

5.1 网络:TRAGGO_PORT

  • 含义:HTTP 服务器监听端口,监听地址固定为全部接口(*:3030,ss -ltnp 实测),无单独的 bind-address 配置项;需要只监听本机时,用前置反向代理或防火墙实现。
  • 实测:TRAGGO_PORT=3040 启动后日志 INF Start listening port=3040。
  • 注意:编排化部署场景改它要同步修改端口映射的右侧。

5.2 初始账号:TRAGGO_DEFAULT_USER_NAME / TRAGGO_DEFAULT_USER_PASS

  • 含义:当数据库中没有任何用户时,启动自动创建该默认账号(日志出现 INF Creating default user.);库里已有用户后,这两项完全被忽略。
  • 默认值 admin/admin 极不安全,首次部署务必改掉,本文示例统一为 admin / q1w2e3r4。
  • 已有实例改密码:Web UI 内修改,或 GraphQL updateUser(见《Traggo 0.8.3 API 使用详解》)。

5.3 密码强度:TRAGGO_PASS_STRENGTH

  • 含义:bcrypt 哈希 cost 因子(默认 10),新建/修改用户密码时生效;提高它让暴力破解更难,但登录与建用户更慢。
  • 建议:个人/小团队保持 10;对安全敏感的公网实例可调到 12,调整后先用 time 实测登录延迟可接受再上线。
  • 注意:只影响之后写入的密码哈希,已有密码不自动重哈希。

5.4 日志:TRAGGO_LOG_LEVEL

  • 取值(实测确认):debug / info / warn / error / fatal / panic。
  • debug 会额外输出配置加载明细(DBG Loading file ...)、DBG Logger initialized 等,排障配置不生效时最有用;生产保持 info。
  • 实测 debug 启动片段:
DBG Logger initialized
INF Traggo buildDate=2026-03-01T10:30:56Z buildMode=prod commit=6321119c3c2d55f04e2e4967f6492aabd6067b76 version=0.8.3
DBG Loading file /opt/traggo/.env.local
DBG Loading file /opt/traggo/.env

5.5 数据库方言:TRAGGO_DATABASE_DIALECT

  • 官方文档声明仅支持 sqlite3(默认值)。
  • 源码佐证(database/database.go 实查):二进制中编译进了 gorm 的 sqlite3、mysql、postgres 三种方言;但官方未文档化也未在 Release 中提供相应支持承诺,生产环境请只使用 sqlite3。
  • 实测非法/未文档化值的行为:把连接串指向不存在路径时启动直接致命退出,例如 TRAGGO_DATABASE_DIALECT=mysql 且无可用 MySQL 时:
FTL Failed to connect to the database error="default addr for network '/etc/traggo' unknown"

5.6 数据库连接串:TRAGGO_DATABASE_CONNECTION

  • sqlite3 方言下就是数据库文件路径,默认 data/traggo.db——注意这是相对进程工作目录的相对路径:
    • 直接双击/前台 ./traggo 启动时,工作目录就是当前目录,会在那里生成 data/traggo.db;
    • systemd 部署务必写成绝对路径(如 /var/lib/traggo/traggo.db),或在单元里固定 WorkingDirectory;
    • 编排化部署形态下应用工作目录为 /opt/traggo,默认即 /opt/traggo/data/traggo.db,将该目录持久化即可。
  • 父目录不存在时启动报 Failed to connect to the database(致命退出),先建目录再启动。
  • 备份就是复制该文件(建议停服或使用 sqlite3 .backup 在线备份)。

六、生产配置模板

6.1 裸机 systemd(个人/小团队,单机)

/etc/traggo/server.ini:

TRAGGO_PORT=3030
TRAGGO_DEFAULT_USER_NAME=admin
TRAGGO_DEFAULT_USER_PASS=q1w2e3r4
TRAGGO_PASS_STRENGTH=10
TRAGGO_LOG_LEVEL=info
TRAGGO_DATABASE_DIALECT=sqlite3
TRAGGO_DATABASE_CONNECTION=/var/lib/traggo/traggo.db

配套:chmod 640 + chown root:traggo;systemd 单元 User=traggo、WorkingDirectory=/opt/traggo(完整单元见《Ubuntu 22.04 安装 Traggo 0.8.3 指南》4.5 节)。资源占用极低(实测常驻内存约 3.9MB),512MB 内存的小 VPS 即可流畅运行。

6.2 systemd 环境变量注入模板(适合同一台机器多实例并存)

若同机要跑多个 Traggo 实例(如测试/正式分离),不改全局 ini,直接在各自的 systemd 单元里用 Environment= 注入(优先级最高,且互不影响):

[Service]
User=traggo
WorkingDirectory=/opt/traggo
Environment=TRAGGO_PORT=3031
Environment=TRAGGO_DATABASE_CONNECTION=/var/lib/traggo-test/traggo.db
Environment=TRAGGO_DEFAULT_USER_NAME=admin
Environment=TRAGGO_DEFAULT_USER_PASS=q1w2e3r4
ExecStart=/opt/traggo/traggo

注意每行只写一个 Environment=;数据目录要事先建好并授权给运行账号。

公网暴露时建议前置 Nginx/Caddy 做 TLS 终止(官方文档提供 Reverse Proxy 指引),Traggo 本身不内建 TLS 配置项。

七、常见问题

Q1:改 /etc/traggo/server.ini 后没生效?

A:按 3.2 的优先级排查更高来源:环境变量(systemd Environment=、shell export)、二进制同目录 .env.local/.env、home ini。用 TRAGGO_LOG_LEVEL=debug 看 Loading file 行最直接。

Q2:为什么改了端口后 ss 里还是 3030?

A:同上——存在更高优先级来源把端口又盖回去了;或者你修改后忘了重启服务(systemctl restart traggo)。

Q3:TRAGGO_DATABASE_CONNECTION 用相对路径为什么数据「丢了」?

A:不是丢了,是换工作目录启动后生成了第二个 data/traggo.db。全局搜索 find / -name traggo.db 就能找到旧库。生产一律用绝对路径。

Q4:能配 HTTPS 或访问路径前缀吗?

A:0.8.3 没有内建 TLS、没有 base-path 配置项。HTTPS 交给前置反向代理;子路径挂载不被官方支持,建议用独立子域名。

八、参考链接