Debian 12 安装 GlobaLeaks 5.0.99 指南
在 Debian 12 上从零安装 GlobaLeaks 5.0.99:官方 APT 仓库与离线 deb 两种方案、systemd 托管、首次初始化向导、管理员登录、测试举报提交与端到端验收,附实测回显与排障(2026-10-26)。
Debian 12 安装 GlobaLeaks 5.0.99 指南
目标:在 Debian 12(bookworm)服务器上从零完成 GlobaLeaks 5.0.99 的安装、systemd 托管、首次初始化向导、管理员登录,并提交一条测试举报完成端到端验收。以下命令与回显均来自 Debian 12 x86_64 实测环境(2026-10-26),版本经官方 APT 仓库与运行实例双重确认。
一、环境信息
本次实测环境的关键信息如下,复现时请逐项对齐:
- 操作系统:Debian 12(bookworm),x86_64
- 软件版本:GlobaLeaks 5.0.99(
globaleaks_5.0.99_all.deb,46,831,010 字节) - 安装方式:官方 APT 仓库
https://deb.globaleaks.org的bookworm/套件 - 服务单元:
globaleaks.service(systemd,Type=simple,用户globaleaks) - 监听端口:HTTPS
8443、HTTP8080(HTTP 会 301 跳转到 HTTPS) - 数据目录:
/var/globaleaks(数据库globaleaks.db、Tor 临时目录、附件存储) - 配置文件:
/etc/default/globaleaks(服务环境变量)、/etc/apparmor.d/usr.bin.globaleaks(沙箱策略) - 运行进程:
/usr/bin/python3 /usr/bin/globaleaks -n --ip=:: --working-path=/var/globaleaks/ - Tor:随包内置,首次启动自动生成 v3 onion 地址
- 实测时间:2026-10-26
💡 说明:GlobaLeaks 的业务配置(站点名称、语言、通知、保留策略等)不在
/etc/default/globaleaks中,而是保存在数据库内,通过管理后台或 REST API 修改。/etc/default/globaleaks只负责进程级开关,二者的分工见本文第七章。
二、前置条件
安装前需要确认服务器具备以下条件,否则后续步骤会在依赖解析或服务启动阶段失败。
2.1 硬件与网络
- CPU 双核 2.0GHz 及以上、内存 1GB 及以上、磁盘 20GB 及以上(官方最低要求,实际按举报量与附件保留期扩容)。
- 服务器可访问
https://deb.globaleaks.org与 Debian 官方源。 - 服务器时间同步正常(Tor 与 TLS 证书校验依赖系统时间)。
- 若计划使用公网域名与受信任证书,需提前把域名解析到服务器;只用 onion 地址访问时可跳过域名准备。
2.2 基础软件
Debian 12 最小化安装后,先补齐 HTTPS 下载、密钥管理与沙箱所需组件:
apt-get update
apt-get install -y ca-certificates curl gnupg apparmor
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ca-certificates is already the newest version (20230311+deb12u1).
apparmor is already the newest version (3.0.8-3).
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
输出节选(实测首尾):本次环境
ca-certificates、apparmor均已预装,因此显示为already the newest version;若为全新最小化系统,apt 会实际下载并安装这些包。
2.3 端口占用检查
GlobaLeaks 固定监听 8080 与 8443,安装前确认未被其他服务占用:
ss -lntp | grep -E ':(8080|8443)\s'
(无输出表示两个端口均空闲)
⚠️ 注意:如果服务器上已有 Nginx/Apache 占用 80/443,不需要停用它们——GlobaLeaks 使用 8080/8443,可通过反向代理对外暴露,但反向代理必须关闭访问日志,否则会留下举报人 IP,破坏匿名性。
三、版本选型说明
官方 APT 仓库按 Debian 套件分目录,bookworm/ 对应 Debian 12。仓库内同时保留 5.0.x 全系列与 4.x 历史版本,安装前用 apt-cache policy 确认候选版本:
apt-cache policy globaleaks
globaleaks:
Installed: 5.0.99
Candidate: 5.0.99
Version table:
*** 5.0.99 500
500 https://deb.globaleaks.org bookworm/ Packages
100 /var/lib/dpkg/status
5.0.98 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.97 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.96 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.95 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.94 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.93 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.92 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.91 500
500 https://deb.globaleaks.org bookworm/ Packages
5.0.90 500
500 https://deb.globaleaks.org bookworm/ Packages
4.15.9 500
500 https://deb.globaleaks.org bookworm/ Packages
4.14.8 500
500 https://deb.globaleaks.org bookworm/ Packages
4.13.22 500
500 https://deb.globaleaks.org bookworm/ Packages
版本选择要点:
| 维度 | 5.0.99 | 4.15.9(旧分支) |
|---|---|---|
| 发布时间 | 2026-07-26 | 2024 年及以前 |
| 官方支持 | 当前稳定版,持续修复 | 仅历史留存 |
| 数据库版本 | 68 | 更低,升级需迁移 |
| 建议 | 新部署一律选它 | 仅用于存量系统兼容 |
关键差异:APT 只会安装候选版本(Candidate),当前为 5.0.99;若需锁定版本,安装后使用
apt-mark hold globaleaks防止自动升级。
四、方案 A:官方 APT 仓库在线安装
这是官方推荐、也是本文实测采用的方案:由 APT 管理依赖与后续升级,适合服务器可访问外网的场景。
4.1 方案说明
完整链路为:导入仓库签名密钥 → 写入 APT 源 → 更新索引 → 安装软件包 → 启用并启动 systemd 服务。所有步骤在 root 下执行。
4.2 导入签名密钥
GlobaLeaks 仓库使用独立签名密钥,先下载并以二进制密钥环格式落盘:
wget -O /usr/share/keyrings/globaleaks-archive-keyring.asc https://deb.globaleaks.org/globaleaks.asc
gpg --dearmor < /usr/share/keyrings/globaleaks-archive-keyring.asc \
> /usr/share/keyrings/globaleaks-archive-keyring.gpg
ls -l /usr/share/keyrings/globaleaks-archive-keyring.gpg
-rw-r--r-- 1 root root 4017 Oct 26 00:14 /usr/share/keyrings/globaleaks-archive-keyring.gpg
生成的 .gpg 文件为 4017 字节,后续 APT 源通过 signed-by 引用它,避免全局信任第三方密钥。
4.3 配置 APT 源
echo 'deb [signed-by=/usr/share/keyrings/globaleaks-archive-keyring.gpg] https://deb.globaleaks.org bookworm/' \
> /etc/apt/sources.list.d/globaleaks.list
cat /etc/apt/sources.list.d/globaleaks.list
apt-get update
deb [signed-by=/usr/share/keyrings/globaleaks-archive-keyring.gpg] https://deb.globaleaks.org bookworm/
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian bookworm-updates InRelease
Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [34.8 kB]
Ign:4 https://deb.globaleaks.org bookworm/ InRelease
Hit:5 https://deb.globaleaks.org bookworm/ Release
Fetched 34.8 kB in 2s (22.6 kB/s)
Reading package lists...
⚠️ 注意:
Ign:4 ... InRelease是正常现象——该仓库只提供Release/Release.gpg,不提供InRelease,APT 会自动回退到Hit:5 ... Release校验。若此处出现NO_PUBKEY或签名错误,说明 4.2 的密钥未正确导入。
4.4 安装软件包
DEBIAN_FRONTEND=noninteractive apt-get install -y globaleaks
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 3 not upgraded.
Need to get 46.8 MB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 https://deb.globaleaks.org bookworm/ globaleaks 5.0.99 [46.8 MB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 46.8 MB in 21s (2181 kB/s)
(Reading database ... 14979 files and directories currently installed.)
Preparing to unpack .../globaleaks_5.0.99_all.deb ...
Unpacking globaleaks (5.0.99) over (5.0.99) ...
Setting up globaleaks (5.0.99) ...
输出节选(实测):本次为
--reinstall复测,故显示1 reinstalled与over (5.0.99);全新安装时对应行为1 newly installed与Unpacking globaleaks (5.0.99)。下载速度 2181 kB/s 为实测值,取决于服务器网络。
确认包状态:
dpkg -l | grep globaleaks
ii globaleaks 5.0.99 all Free and open-source whistleblowing software
4.5 systemd 托管与启动
安装包自带 globaleaks.service,只需启用并启动:
systemctl enable --now globaleaks
systemctl status globaleaks --no-pager
● globaleaks.service - GlobaLeaks Whistleblowing Software
Loaded: loaded (/lib/systemd/system/globaleaks.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-10-26 00:37:50 UTC; 47min ago
Process: 5932 ExecStartPre=/usr/lib/globaleaks/globaleaks-firewall start (code=exited, status=0/SUCCESS)
Main PID: 5949 (globaleaks)
Tasks: 13 (limit: 2932)
Memory: 132.9M (swap max: 0B)
CPU: 7.649s
输出节选(实测首部):状态为
active (running)即表示主进程已就绪;ExecStartPre调用globaleaks-firewall start完成 iptables 出站限制,这一步失败会导致服务直接退出。
端口监听确认:
ss -lntp | grep -E ':(8080|8443)\s'
LISTEN 0 4096 *:8443 *:* users:(("globaleaks",pid=5949,fd=18),("globaleaks",pid=5949,fd=9))
LISTEN 0 4096 *:8080 *:* users:(("globaleaks",pid=5949,fd=17),("globaleaks",pid=5949,fd=8))
HTTP 访问应返回 301 跳转,HTTPS 返回 200:
curl -s -o /dev/null -w "http_code=%{http_code}\n" http://127.0.0.1:8080/
curl -k -s -o /dev/null -w "https_code=%{http_code}\n" https://127.0.0.1:8443/
http_code=301
https_code=200
启动日志会打印 Tor 地址与 HTTPS 入口:
journalctl -u globaleaks --no-pager | grep -E '\[HTTPS\]|\[Tor\]' | tail -2
Oct 26 00:37:50 gl-b1 globaleaks-exec[5949]: 2026-10-26T00:37:50+0000 [stdout#info] - [HTTPS]: https://0.0.0.0
Oct 26 00:37:50 gl-b1 globaleaks-exec[5949]: 2026-10-26T00:37:50+0000 [stdout#info] - [Tor]: http://g3hk4xho2xlb5nnstt2wexxin32k3pnbbgcetf4e6wiyc4vv2cq6hlid.onion
⚠️ 注意:Tor 首次启动需要数十秒到数分钟完成引导,期间日志会出现
Tor control port not open ... waiting for Tor to become available,属于正常过渡状态;只要服务保持active且 HTTPS 可访问,即不影响初始化。onion 地址由/var/globaleaks内的密钥决定,重启不会改变。
4.6 首次初始化向导
用浏览器访问 https://<服务器IP或域名>:8443,自签证书会提示不受信任,确认继续后进入六步向导:
- 选择站点语言:默认 English,可在下拉框选择中文等语言;
- 设置项目名称:本文实测填写
GlobaLeaks Demo; - 创建管理员账号:用户名
admin,口令q1w2e3r4(向导会显示强度提示); - 创建第一个受理人账号:用户名
recipient,口令q1w2e3r4; - 阅读并接受许可证(AGPL 3.0);
- 完成向导,页面跳转到管理员登录入口。
向导提交后,服务端会记录站点名称、管理员与受理人,并关闭向导入口。用接口回读可确认状态:
# 管理员侧接口回读(验收辅助脚本,非 GlobaLeaks 命令)
python3 /root/admin_check.py
login -> OK role: admin id: 1d5d33523b18a04c215fd7314243baf07f149ab47fe8478329391131fe22a3f1
GET /api/admin/node -> 200 version: 5.0.99 name: GlobaLeaks Demo
wizard_done 在节点配置中已为 true(见第七章的配置回读),表示初始化不可重复执行;若需重来,只能清空数据目录后重新初始化。
4.7 提交测试举报并验收
用浏览器打开 https://<服务器地址>:8443 的举报入口(未登录状态默认进入提交页):
- 选择受理渠道(默认
Default); - 按问卷填写标题、描述、地点、日期等字段;
- 不勾选身份信息,保持匿名提交;
- 提交成功后,页面会给出一段接收凭据(receipt),必须立即保存,它是举报人回访的唯一凭证。
提交动作在服务端产生的记录可用管理员接口回读验证:
python3 /root/admin_check.py
tips -> 200 [{"id": "bafb6af0-1da7-475c-91a9-6aec41c9e054", "progressive": 1, "creation_date": "2026-10-26T00:40:59.619294Z", "expiration_date": "2027-01-24T23:59:59Z", "context_id": "93d73aab-7424-46ca-b28d-1cf87856a2af", "status": "new", "substatus": null, "tor": false, "comments": 0, "files": 0, "receiver_count": 1, ...}]
验收判据:
status为new,表示新举报已进入受理队列;creation_date与提交时间一致(实测 2026-10-26T00:40:59Z);expiration_date为 2027-01-24,对应默认 90 天保留期(tip_timetolive: 90);receiver_count为 1,表示已关联到向导中创建的受理人。
💡 说明:同一次验收中第二条举报的接口回读为
9febc924-784e-4f3c-a7a7-91a78053eebd / 2026-10-26T01:25:01Z / new,说明提交链路可重复工作。管理员在 Web 后台的「举报收件箱」能看到同样的条目。
五、方案 B:离线 deb 包安装
服务器无法访问外网、或需要在隔离网段部署时,使用官方仓库中的 deb 包离线安装。
5.1 获取安装包
在有网络的机器上,直接按仓库索引给出的实际地址下载:
apt-get download --print-uris globaleaks
'https://deb.globaleaks.org/bookworm/globaleaks_5.0.99_all.deb' globaleaks_5.0.99_all.deb 46831010 SHA512:f5bcaa767d04250ac141b436ad5302d559311719f0580c712e142d35a8e0a019c7ced9597c88daeec3ace56f4eef94558f14fba01c16a4306a0e1fbdfa2faa9bf
wget https://deb.globaleaks.org/bookworm/globaleaks_5.0.99_all.deb
sha512sum globaleaks_5.0.99_all.deb
f5bcaa767d04250ac141b436ad5302d559311719f0580c712e142d35a8e0a019c7ced9597c88daeec3ace56f4eef94558f14fba01c16a4306a0e1fbdfa2faa9bf globaleaks_5.0.99_all.deb
文件名中的 all 表示与架构无关(内部为 Python 代码),大小 46,831,010 字节;SHA512 与仓库索引一致即可排除传输损坏。
5.2 安装与依赖修复
把 deb 包传入目标服务器(如 /root/globaleaks_5.0.99_all.deb),先 dpkg -i,再让 apt 补齐依赖:
dpkg -i /root/globaleaks_5.0.99_all.deb
(Reading database ... 14979 files and directories currently installed.)
Preparing to unpack .../root/globaleaks_5.0.99_all.deb ...
Unpacking globaleaks (5.0.99) over (5.0.99) ...
Setting up globaleaks (5.0.99) ...
DEBIAN_FRONTEND=noninteractive apt-get install -f -y
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
输出节选(实测):本次复测环境中依赖已齐全,
install -f无新增安装;在纯净离线服务器上,该命令会从本地/内网源补齐python3-twisted、tor、python3-nacl等依赖。若离线服务器没有任何可用源,需提前把依赖包一并带入。
5.3 启用与验证
与在线安装完全一致:
systemctl enable --now globaleaks
systemctl is-active globaleaks
active
dpkg -L globaleaks 可查看包内落盘位置,确认关键文件齐全:
/etc/default/globaleaks
/etc/apparmor.d/usr.bin.globaleaks
/usr/bin/gl-admin
/usr/bin/globaleaks
/usr/lib/globaleaks/globaleaks-exec
/usr/lib/globaleaks/globaleaks-firewall
/usr/lib/python3/dist-packages/globaleaks/...
⚠️ 注意:离线包安装不会自动配置 APT 源,后续升级需要重新下载新版本 deb 并重复 5.2。若希望保留升级能力,建议在网络恢复后补做第四章的源配置。
六、方案对比与选择建议
| 维度 | 方案 A:APT 在线仓库 | 方案 B:离线 deb 包 |
|---|---|---|
| 是否需外网 | 需要(仅安装与升级时) | 不需要,可完全隔离 |
| 依赖处理 | apt 自动解析 | 需 apt-get install -f 或预置依赖 |
| 版本控制 | apt-cache policy 可见全版本,可 hold | 以包文件为准,人工管理 |
| 升级维护 | apt-get upgrade 一条命令 | 手工下载替换 |
| 签名校验 | APT 自动校验仓库签名 | 需自行核对 SHA512 |
| 适用场景 | 常规公网/内网有代理的服务器 | 隔离网段、审计要求禁外联的环境 |
选择建议:能联网就用方案 A,后续安全补丁升级成本最低;隔离网段用方案 B,并在内网搭建私有 APT 源以复用依赖解析能力。两种方案安装后的服务单元、端口、数据目录完全一致,后续初始化流程通用。
七、配置说明
本节只覆盖安装后立即需要的进程级配置;站点业务参数保存在数据库中,通过管理后台(Advanced Settings)修改,不在 /etc/default/globaleaks 内;逐项参数与生效验证见《GlobaLeaks 5.0.99 配置参数详解》。
7.1 服务环境变量 /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
逐项说明:
- 默认值集中在
/usr/share/globaleaks/default,/etc/default/globaleaks只需覆盖需要改动的项。 APPARMOR_SANDBOXING=0表示关闭 AppArmor 强制沙箱。本次实测环境因宿主内核未启用 AppArmor 而设置该项;生产服务器应安装并启用 AppArmor(第二章已安装apparmor),保持该行不存在(默认即启用沙箱),以获得进程级最小权限。- 修改该文件后需
systemctl restart globaleaks生效。
7.2 服务单元的安全约束
globaleaks.service 自带加固项,安装后无需改动即可获得以下基线:
NoNewPrivileges=yes
CapabilityBoundingSet=
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/globaleaks
PrivateTmp=yes
PrivateDevices=yes
RestrictNamespaces=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
SystemCallFilter=@system-service
RestartPreventExitStatus=78
要点解读:进程只能写 /var/globaleaks(ReadWritePaths),无法获得任何 capability;退出码 78 表示配置类致命错误,systemd 不会自动重启,需要人工排查——这正好对应第八章的启动失败场景。
7.3 数据目录与监听地址
/var/globaleaks/globaleaks.db:SQLite 数据库,包含站点配置、用户、举报与审计日志。/var/globaleaks/tmp/tor_control、tor_socks:Tor 控制与 SOCKS 套接字。- 监听地址由
globaleaks --ip=::指定,默认双栈;可在/etc/default/globaleaks追加--ip相关环境变量前先确认服务单元参数,避免重复定义。
⚠️ 注意:不要直接编辑数据库文件改配置。服务运行时会持有连接,直接改库可能不生效或损坏数据;配置变更走管理后台(Advanced Settings)或
gl-admin setvar。
八、常见问题
8.1 服务启动失败,日志提示 AppArmor Sandboxing Failure
现象:systemctl status globaleaks 显示 status=78,日志出现:
GlobaLeaks Apparmor Sandboxing Failure: requires apparmor
定位:宿主内核未启用 AppArmor,导致服务无法加载 /etc/apparmor.d/usr.bin.globaleaks 策略。
处理:确认 AppArmor 可用并在内核启用:
apt-get install -y apparmor
systemctl status apparmor --no-pager | head -3
若宿主确实无法提供 AppArmor(如部分受限虚拟化环境),才在 /etc/default/globaleaks 追加 APPARMOR_SANDBOXING=0 后重启服务;这是降低安全基线的妥协,生产环境不建议。
8.2 apt 报 NO_PUBKEY 或签名无效
现象:apt-get update 提示仓库签名无法验证。
处理:重新执行 4.2,确认 .gpg 文件存在且 sources.list.d/globaleaks.list 中的 signed-by 路径与之完全一致;ls -l 应显示 4017 字节。
8.3 8080 端口返回 301 而不是页面
这是设计行为:HTTP 入口只做跳转到 HTTPS。访问 https://<地址>:8443 即可;若希望 80/443 对外,用反向代理转发并关闭代理日志。
8.4 首次访问证书告警
默认使用自签证书(https_selfsigned_cert),浏览器提示不受信任属正常。生产环境应在管理后台配置受信任证书或启用 Let’s Encrypt 自动签发。
8.5 向导无法重新进入
向导完成后 wizard_done=true,入口关闭。需要重做时必须停止服务、清空 /var/globaleaks 后重新初始化;该操作会删除全部举报数据,务必先备份。
8.6 Tor 地址长时间不出现
先看 journalctl -u globaleaks | grep -i tor。若持续出现 control port 未就绪,检查 /var/globaleaks/tmp/ 权限与宿主防火墙是否拦截回环连接;Tor 引导失败不影响 HTTPS 通道,但会失去网络层匿名入口。
九、卸载与清理
卸载前先备份数据目录:
tar -zcf /root/globaleaks-backup.tar.gz -C /var/globaleaks .
systemctl stop globaleaks
systemctl disable globaleaks
apt-get purge -y globaleaks
rm -rf /var/globaleaks
rm -f /etc/apt/sources.list.d/globaleaks.list
rm -f /usr/share/keyrings/globaleaks-archive-keyring.asc /usr/share/keyrings/globaleaks-archive-keyring.gpg
验证卸载结果:
dpkg -l | grep globaleaks
(无输出表示包已移除)
⚠️ 注意:
apt-get purge会删除/etc/default/globaleaks与 AppArmor 策略,但/var/globaleaks需手工删除;该目录含加密密钥与举报数据,删除不可恢复。
十、参考链接
- 官方安装文档:https://docs.globaleaks.org/en/stable/setup/installation.html
- 官方初始化文档:https://docs.globaleaks.org/en/stable/setup/initialization.html
- 官方技术要求:https://docs.globaleaks.org/en/stable/technical/requirements.html
- 官方升级指南:https://docs.globaleaks.org/en/stable/user/admin/UpgradeGuide.html
- 官方主站:https://www.globaleaks.org/