GlobaLeaks 5.0.99 配置参数详解

GlobaLeaks 5.0.99 配置参数全解:/etc/globaleaks/globaleaks.conf 在 5.0.99 的真实状态、进程环境层与数据库层分工、节点/通知/网络/渠道参数清单、七类核心项逐项说明、gl-admin 与 SIGUSR1 热生效实测、三类生产模板与排障(2026-10-26)。

GlobaLeaksGlobaLeaks匿名举报Debian 12合规审计2026/10/26

GlobaLeaks 5.0.99 配置参数详解

目标:梳理 GlobaLeaks 5.0.99 的配置分层、参数清单、修改入口与生效验证方法,覆盖站点身份、匿名与网络、加密托管、举报生命周期、通知、反滥用阈值、磁盘与日志七类关键项,并给出三类生产场景的配置模板。文中命令与回显来自 Debian 12 上的 5.0.99 实机(2026-10-26)。

一、环境信息

  • 操作系统:Debian 12(bookworm),x86_64
  • 软件版本:GlobaLeaks 5.0.99,数据库版本 68
  • 服务单元:globaleaks.service(systemd)
  • 数据目录:/var/globaleaks,数据库 /var/globaleaks/globaleaks.db
  • 进程级配置:/usr/share/globaleaks/default(默认值)、/etc/default/globaleaks(覆盖值)
  • 管理入口:https://<服务器地址>:8443/admin
  • 命令行工具:/usr/bin/gl-admin(版本随包 5.0.99)
  • 实测时间:2026-10-26

⚠️ 注意:本篇实测确认 5.0.99 不存在 /etc/globaleaks/globaleaks.conf。历史版本或第三方教程中出现的该路径在 5.0.99 上无效,业务配置全部存放在数据库中。第二章给出证据与替代入口。

二、前置条件

配置修改依赖以下前提:

  • 服务处于 active 状态,且能以 globaleaks 用户访问数据目录:
systemctl is-active globaleaks
runuser -u globaleaks -- /usr/bin/gl-admin getvar -w /var/globaleaks version
active
5.0.99
  • 已完成首次初始化(wizard_done=true),否则节点参数尚未生成;
  • 管理员账号可登录(本文演示 admin / q1w2e3r4);
  • 修改前先备份数据库:
mkdir -p /var/globaleaks/backups
/usr/bin/gl-admin backup -w /var/globaleaks /var/globaleaks/backups/pre-config-change.tar.gz
Creating an archive backup of the globaleaks setup. . .
Success: The archived backup was created at: /var/globaleaks/backups/pre-config-change.tar.gz
ls -lh /var/globaleaks/backups/
-rw-r--r-- 1 root root 142K Oct 26 01:36 pre-config-change.tar.gz

💡 说明:gl-admin backup 内部会调用 systemctl stop/start globaleaks 保证 SQLite 一致性,因此必须由 root 执行(以服务用户执行会因无权限操作 systemd 报 Failed to stop globaleaks.service: Access denied)。备份文件包含数据库与密钥,应按敏感数据管理。

三、参数查看与修改方式

3.1 配置文件现状(实测)

先确认目标路径是否存在:

ls -l /etc/globaleaks
ls: cannot access '/etc/globaleaks': No such file or directory

查包内实际落盘的配置类文件:

dpkg -L globaleaks | grep -E '^/etc|default'
/etc
/etc/apparmor.d
/etc/apparmor.d/usr.bin.globaleaks
/etc/default
/etc/default/globaleaks
/usr/share/globaleaks/client/data/profiles/default.json
/usr/share/globaleaks/client/data/questionnaires/default.json
/usr/share/globaleaks/default

结论:5.0.99 的配置分为两层——

层位置内容修改方式
进程环境层/usr/share/globaleaks/default + /etc/default/globaleaks监听地址、数据目录、AppArmor 开关、运行用户编辑文件 + systemctl restart globaleaks
业务配置层SQLite /var/globaleaks/globaleaks.db站点、用户、加密、通知、保留策略、阈值等 100+ 项管理后台 / REST API / gl-admin setvar

3.2 进程环境层参数

cat /usr/share/globaleaks/default
# USERNAME = [user_name]
# permits to configure the user privileges of the globaleaks process
USERNAME=globaleaks

# APPARMOR_SANDBOXING = [0/1]
# permits to enable apparmor sandboxing
APPARMOR_SANDBOXING=1

# LISTENING_IP = [ip]
# permits to configure an ip on which the platform will listen
LISTENING_IP=::

# WORKING_DIR
# must be configured with the daemon working directory
WORKING_DIR=/var/globaleaks/

逐项说明:

  • USERNAME:服务运行账户,systemd 单元固定为 globaleaks,一般不改;
  • APPARMOR_SANDBOXING:1 启用 AppArmor 强制沙箱,0 关闭;生产保持 1;
  • LISTENING_IP:监听地址,:: 为 IPv6/IPv4 双栈;只监听内网可改为具体地址;
  • WORKING_DIR:数据目录,必须与 systemd ReadWritePaths 和实际挂载一致。

覆盖值写 /etc/default/globaleaks(实测内容):

cat /etc/default/globaleaks
# This is a configuration file for the globaleaks service;
# it allows you to perform common modifications to the behavior
# of the globaleaks daemon.
#
# Default settings can be found at: /usr/share/globaleaks/default
APPARMOR_SANDBOXING=0

⚠️ 注意:本次实测宿主未启用 AppArmor,故设置 APPARMOR_SANDBOXING=0 才能启动;生产服务器应安装 AppArmor 并保持默认 1。此项只影响进程沙箱,与业务参数无关。

3.3 数据库层参数的三种入口

入口一:管理后台。以管理员登录 https://<地址>:8443/admin,进入 Advanced Settings,可修改站点名称、语言、HTTPS、Tor、SMTP、保留策略、阈值等;保存后由平台写入数据库并刷新缓存。

入口二:REST API。管理员会话下调用 /api/admin/node、/api/admin/notification、/api/admin/network 等资源,GET 读取、PUT 更新。例:

# 管理员会话读取节点配置(验收辅助脚本,调用平台 API)
python3 /root/admin_check.py
login -> OK role: admin id: 1d5d33523b18a04c215fd7314243baf07f149ab47fe8478329391131fe22a3f1
GET /api/admin/node -> 200 version: 5.0.99 name: GlobaLeaks Demo

入口三:gl-admin 命令行。适合脚本化修改与排障,直接读写数据库:

# 读取
runuser -u globaleaks -- /usr/bin/gl-admin getvar -w /var/globaleaks unread_reminder_time
7
# 写入
runuser -u globaleaks -- /usr/bin/gl-admin setvar -w /var/globaleaks unread_reminder_time 10
Success! unread_reminder_time set to '10'
# 回读确认
runuser -u globaleaks -- /usr/bin/gl-admin getvar -w /var/globaleaks unread_reminder_time
10

💡 说明:setvar 的取值类型由输入推断——true/false 转布尔,纯数字转整数,其余按字符串。字符串值不要额外加引号。

3.4 修改后的生效机制(实测)

setvar 只改数据库,运行中的进程仍持有旧缓存。需向主进程发送 SIGUSR1 刷新配置缓存:

runuser -u globaleaks -- /usr/bin/gl-admin setvar -w /var/globaleaks unread_reminder_time 10
systemctl kill -s SIGUSR1 globaleaks
Success! unread_reminder_time set to '10'

刷新后通过管理 API 回读,确认运行进程已采用新值:

after set 10 -> unread_reminder_time: 10 log_level: ERROR escrow: True

验证完成后恢复原值并再次刷新:

runuser -u globaleaks -- /usr/bin/gl-admin setvar -w /var/globaleaks unread_reminder_time 7
systemctl kill -s SIGUSR1 globaleaks

⚠️ 注意:systemctl reload globaleaks 不会触发此缓存刷新;必须使用 SIGUSR1。管理后台保存配置时平台会自行刷新,无需手工操作。

四、参数总览

4.1 节点级参数(/api/admin/node,91 项)

按用途分组列出关键项(值为实测当前值):

分组参数实测值说明
身份nameGlobaLeaks Demo站点名称
身份descriptionSecure reporting platform based on GlobaLeaks free and open-source whistleblowing software.站点简介
身份default_languageen默认语言
身份languages_enabled1 项已启用语言数
身份languages_supported81 项平台支持语言数
身份rootdomain / subdomain / hostname空对外域名与子域
身份homepage/首页路径
加密encryptiontrue举报数据加密
加密encryption_possibletrue是否具备加密条件
加密escrowtrue托管密钥启用
加密password_change_period365口令更换周期(天)
加密two_factorfalse全局双因素
加密receipt_salteFacBkrB/B3ugsLYe1LnJw==接收码派生盐
提交maximum_filesize30单文件上限(MB)
提交disable_submissionsfalse停止接收举报
提交adminonlyfalse仅管理员可访问
行为unread_reminder_time7未读提醒间隔(天)
行为allow_indexingtrue允许搜索引擎索引
行为enable_signupfalse开放自助注册
行为modedefault运行模式
日志log_levelERROR日志级别
日志log_accesses_of_internal_userstrue记录内部用户访问
网络acmefalseACME 自动签发
网络https_possibletrue是否具备 HTTPS 条件
版本version / version_db5.0.99 / 68软件与库版本
版本latest_version5.0.99官方最新版
状态wizard_donetrue初始化完成

关键差异:name、description、default_language 属于对外可见的品牌项,改后立即影响举报页;encryption、escrow 一旦开启,密钥与既有举报绑定,不能随意关闭,否则已加密数据将无法解密。

4.2 通知参数(/api/admin/notification)

实测关键值:

参数实测值说明
smtp_servermail.globaleaks.orgSMTP 主机
smtp_port587提交端口
smtp_securityTLS传输安全模式
smtp_authenticationtrue是否认证
smtp_usernameglobaleaks认证用户
smtp_passwordglobaleaks认证口令(示例值)
smtp_source_emailnotifications@globaleaks.org发件地址
tip_expiration_threshold72到期前提醒小时数
enable_admin_notification_emailstrue管理员邮件通知
enable_analyst_notification_emailstrue分析员邮件通知
enable_custodian_notification_emailstrue保管人邮件通知
enable_receiver_notification_emailstrue受理人邮件通知

⚠️ 注意:上表 SMTP 为平台默认示例值,直接沿用会向外部主机投递测试邮件。生产必须替换为组织自己的邮件中继,并先用后台的「发送测试邮件」验证。

4.3 网络参数(/api/admin/network)

参数实测值说明
https_admintrue管理员入口强制 HTTPS
https_analysttrue分析员入口强制 HTTPS
https_custodiantrue保管人入口强制 HTTPS
https_receivertrue受理人入口强制 HTTPS
https_whistleblowertrue举报入口强制 HTTPS
reachable_via_webtrue是否允许公网 Web 访问
anonymize_outgoing_connectionsfalse出站连接是否强制走 Tor
hostname空对外主机名
ip_filter_admin / ip_filter_admin_enable空 / false管理员来源网段过滤
ip_filter_analyst / ip_filter_analyst_enable空 / false分析员来源网段过滤
ip_filter_custodian / ip_filter_custodian_enable空 / false保管人来源网段过滤
ip_filter_receiver / ip_filter_receiver_enable空 / false受理人来源网段过滤
onionserviceg3hk4xho2xlb5nnstt2wexxin32k3pnbbgcetf4e6wiyc4vv2cq6hlid.onion自动生成的 v3 地址

4.4 举报渠道参数(/api/admin/contexts)

参数实测值说明
tip_timetolive90举报保留天数
tip_reminder0到期提醒提前天数
select_all_receiverstrue默认投递给全部受理人
allow_recipients_selectionfalse是否允许举报人选择受理人
maximum_selectable_receivers00 表示不限制
questionnaire_iddefault绑定问卷
order0渠道展示顺序
hiddenfalse是否隐藏渠道

五、核心参数分类详解

5.1 站点身份与语言

涉及项:name、description、default_language、languages_enabled、languages_supported、rootdomain、subdomain、hostname、homepage、footer、presentation。

配置要点:

  • name 是举报页与管理后台的标题,建议写组织全称 + 渠道用途;
  • default_language 决定首次访问语言,实测为 en;中文站点应改为 zh 并在 languages_enabled 中加入 zh,否则界面仍以英文展示;
  • languages_supported 为只读能力清单(81 项),不能通过它启用语言;
  • rootdomain/subdomain 用于多站点虚拟主机,单一站点保持为空即可;
  • hostname 为空时平台按请求 Host 生成链接,邮件模板中的绝对链接会随访问地址变化,生产建议固定为对外域名。

修改示例(后台 Advanced Settings → 站点信息)后,公开接口立即返回新名称,无需重启进程。

5.2 匿名与网络

涉及项:https_admin、https_analyst、https_custodian、https_receiver、https_whistleblower、reachable_via_web、anonymize_outgoing_connections、onionservice、ip_filter_*、acme。

配置逻辑:

  • 五个 https_* 开关分别控制各角色入口是否强制 HTTPS。默认全为 true;关闭举报入口的 HTTPS 会同时削弱匿名性,不建议。
  • reachable_via_web=true 表示允许公网 Web 访问;纯 Tor 部署应改为 false,只保留 onion 入口。
  • anonymize_outgoing_connections 控制平台出站流量(如 SMTP、更新检查)是否经 Tor;开启会增加延迟,且部分内网 SMTP 不可达。
  • onionservice 为自动生成的 v3 地址,实测为 <32 字符>.onion;更换数据目录会重新生成。
  • ip_filter_* 用于限定各角色来源网段,默认关闭;启用前确认不会误伤 Tor 出口。
  • acme 开启后由平台自动申请证书,要求 80/443 可达且域名解析正确。

💡 技术拓展:HTTPS 证书有三种常见来源——自签、企业 CA、ACME 自动签发。自签零成本但浏览器告警;企业 CA 适合内网统一信任;ACME 适合公网域名。GlobaLeaks 三者都支持,acme=true 仅对公网可达场景有效。

5.3 加密与密钥托管

涉及项:encryption、encryption_possible、escrow、password_change_period、two_factor、receipt_salt。

  • encryption=true 表示举报内容与附件以加密形式落库,密钥由用户口令派生;关闭后新数据不再加密,但既有密文不会自动解密。
  • escrow=true 表示启用托管密钥,允许在合规授权下恢复账户密钥;关闭则管理员也无法恢复丢失口令的用户密钥。
  • password_change_period=365 为强制改密周期,生产合规场景建议 90–180 天。
  • two_factor 为全局 2FA 开关,开启后对管理员与受理人生效。
  • receipt_salt 用于派生举报人接收码,属于敏感值,泄露会削弱接收码强度;不要在任何文档或工单中公开。

⚠️ 注意:关闭 escrow 或删除托管密钥后,若用户遗忘口令,其可解密的举报将永久无法恢复。变更前务必导出并离线保存托管密钥。

5.4 举报生命周期与保留策略

涉及项:渠道级 tip_timetolive、tip_reminder,通知级 tip_expiration_threshold,节点级 unread_reminder_time、maximum_filesize。

实测默认值:tip_timetolive=90(天)、tip_reminder=0、tip_expiration_threshold=72(小时)、unread_reminder_time=7(天)、maximum_filesize=30(MB)。

修改保留期的操作路径:管理后台 → 渠道(Context)→ 高级选项 → 保留天数。修改后新提交的举报按新值计算到期时间,已存在的举报保持原到期日。

验证:提交一条举报后回读:

tips -> 200 [{"id": "bafb6af0-1da7-475c-91a9-6aec41c9e054", "creation_date": "2026-10-26T00:40:59.619294Z", "expiration_date": "2027-01-24T23:59:59Z", "status": "new", ...}]

创建时间 2026-10-26 与到期 2027-01-24 相差 90 天,与 tip_timetolive=90 一致。

⚠️ 注意:保留期不是「越短越安全」的简单选择题。过短会导致调查未完成数据已被清理;合规场景应让法务确认期限后再改,并同步调整 tip_expiration_threshold 的提醒提前量。

5.5 通知与 SMTP

涉及项见 4.2。配置顺序建议:

  1. 填 smtp_server、smtp_port、smtp_security(TLS/SSL/plain);
  2. 若中继需认证,设 smtp_authentication=true 并填用户名口令;
  3. 设 smtp_source_email 为可投递的发件地址;
  4. 在后台触发测试邮件,确认收件箱收到;
  5. 再按角色开启四类通知开关。

常见错误:smtp_security=TLS 却连 465 端口(应使用 SSL);发件地址域与中继认证域不一致被拒;开启 anonymize_outgoing_connections 后内网 SMTP 不可达。

5.6 反滥用阈值

实测默认阈值(/api/admin/node 中全部 threshold_* 项,共 23 项):

参数默认值含义
threshold_reports_per_hour_per_ip10单 IP 每小时举报数
threshold_reports_per_hour_per_tenant10单租户每小时举报数
threshold_reports_per_hour_per_tenant_per_ip5单租户单 IP 每小时举报数
threshold_reports_per_hour_per_system1000全系统每小时举报数
threshold_logins_per_minute_per_ip20单 IP 每分钟登录尝试
threshold_logins_per_minute_per_tenant20单租户每分钟登录尝试
threshold_logins_per_minute_per_tenant_per_ip1单租户单 IP 每分钟登录
threshold_logins_per_minute_per_system1000全系统每分钟登录尝试
threshold_operations_per_second_per_report1单举报每秒操作数
threshold_operations_per_minute_per_report20单举报每分钟操作数
threshold_operations_per_hour_per_report30单举报每小时操作数
threshold_attachments_per_hour_per_report30单举报每小时附件数
threshold_signups_per_minute_per_ip1单 IP 每分钟注册数
threshold_signups_per_hour_per_ip3单 IP 每小时注册数
threshold_signups_per_hour_per_system20全系统每小时注册数
threshold_support_per_hour_per_ip10单 IP 每小时支持请求数
threshold_support_per_hour_per_tenant10单租户每小时支持请求数
threshold_support_per_hour_per_tenant_per_ip5单租户单 IP 每小时支持请求数
threshold_support_per_hour_per_system1000全系统每小时支持请求数
threshold_free_disk_percentage_high3磁盘剩余百分比告警下限
threshold_free_disk_percentage_low10磁盘剩余百分比预警线
threshold_free_disk_megabytes_high200磁盘剩余容量告警下限(MB)
threshold_free_disk_megabytes_low1000磁盘剩余容量预警线(MB)

调整原则:阈值的作用是挡住自动化灌水,同时不能误伤正常举报人。单 IP 限制对 Tor 出口尤其敏感——同一出口可能承载大量用户,媒体场景应适当放宽 per_ip 项,或依赖 PoW 令牌而非压低阈值。

5.7 磁盘、日志与运维开关

  • log_level:实测 ERROR。排障时临时改 INFO/DEBUG,完成后必须改回,否则日志会记录过多请求细节。
  • log_accesses_of_internal_users:默认 true,记录管理员/受理人的访问行为,用于审计;关闭会削弱合规留痕。
  • allow_indexing:默认 true,允许搜索引擎索引举报页。高匿名场景应改为 false,避免入口被搜索引擎收录。
  • adminonly:设为 true 后仅管理员可访问,用于维护窗口。
  • disable_submissions:设为 true 后停止接收新举报,但既有举报仍可处理。
  • mode:运行模式,默认 default,非特殊集成场景不要改。

5.8 多租户与合规展示

  • enable_signup:默认 false。仅 SaaS 场景开启自助注册;企业内网应保持关闭。
  • enable_privacy_policy、custom_privacy_badge_text、footer_privacy_policy、footer_whistleblowing_policy:用于在举报页展示隐私政策与举报政策,GDPR 场景建议启用并填写链接/文本。
  • enable_scoring_system:默认 false,开启后按问卷评分分流优先级。
  • disable_privacy_badge:默认 false,控制举报页的隐私徽标展示。

六、生产配置模板

6.1 场景 A:媒体线索收集(高匿名,仅 Tor 入口)

适用:4 核 / 8GB 内存 / 100GB SSD,举报量中等,威胁模型包含「服务器被定位」。

参数建议值理由
reachable_via_webfalse只保留 onion 入口
https_whistleblowertrue管理/受理入口仍走 HTTPS
anonymize_outgoing_connectionstrue出站也隐藏源地址
allow_indexingfalse入口不被搜索引擎收录
log_levelWARNING减少请求细节落盘
log_accesses_of_internal_userstrue保留内部审计
tip_timetolive180调查周期较长
enable_signupfalse不开放注册
escrowtrue防止密钥丢失导致线索不可读
threshold_reports_per_hour_per_ip30Tor 出口共享,放宽单 IP

6.2 场景 B:企业合规受理(HTTPS + 邮件通知)

适用:2 核 / 4GB 内存 / 50GB SSD,内网部署,需满足 EU 2019/1937 留痕要求。

参数建议值理由
hostnamewhistleblowing.example.com固定对外域名,保证邮件链接稳定
reachable_via_webtrue员工可直连
https_*全部 true全角色强制 HTTPS
two_factortrue管理员与受理人 2FA
password_change_period180与组织口令策略一致
tip_timetolive365按合规保留期
tip_expiration_threshold168提前 7 天提醒
unread_reminder_time3缩短未读提醒
enable_privacy_policytrue举报页展示隐私政策
log_levelINFO保留操作细节供审计
disable_submissionsfalse正常受理

6.3 场景 C:低资源试点(1GB 内存 / 20GB 磁盘)

适用:小团队试运行,或边缘服务器。

参数建议值理由
maximum_filesize10控制磁盘占用
tip_timetolive30缩短保留期,降低存储压力
threshold_attachments_per_hour_per_report10限制大附件灌入
log_levelERROR降低日志体积
anonymize_outgoing_connectionsfalse低配下避免 Tor 出站额外开销
acmefalse手工证书,减少定时任务

⚠️ 注意:以上模板只给参数取值,不含问卷与用户初始化步骤。改完后按第三章的 SIGUSR1 方式刷新缓存,并逐项回读确认。

七、常见问题

7.1 找不到 /etc/globaleaks/globaleaks.conf

5.0.99 不存在该文件(本文实测 ls 报 No such file or directory)。业务配置在数据库,进程配置在 /etc/default/globaleaks。按第三章入口操作即可,不要手工创建该文件,平台不会读取。

7.2 改了参数但页面/接口没变化

原因通常是只改了数据库未刷新缓存。处理:

runuser -u globaleaks -- /usr/bin/gl-admin getvar -w /var/globaleaks <参数名>
systemctl kill -s SIGUSR1 globaleaks

再用接口回读确认。若仍不变,确认改的是同一租户(--tid 默认 1)。

7.3 setvar 报参数不存在

先用 gl-admin getvar 或 /api/admin/node 核对参数名拼写。数据库中的变量名与 API 字段不完全一一对应(例如渠道级参数不在 node 中),改错位置会提示读取失败。

7.4 修改 SMTP 后通知仍不发送

按 5.5 的顺序逐项核对:安全模式与端口匹配、认证信息正确、发件地址可投递、anonymize_outgoing_connections 未阻断出站。先用测试邮件验证,再排查角色开关。

7.5 关闭加密/托管后旧举报无法打开

加密与托管密钥与既有数据绑定,关闭只影响新数据;已有密文仍需要原密钥。若口令丢失且未保留托管密钥,数据不可恢复。变更前备份数据库与托管密钥。

7.6 修改保留期后到期时间没变

tip_timetolive 在提交时计算到期日,已存在举报不会重算。需要批量调整时,应在下一轮举报周期生效,或按合规流程导出后重建渠道。

八、参考链接