RetroShare 0.6.7 介绍与选型指南
RetroShare 是无服务器 P2P 朋友圈加密通讯与文件共享软件:本文基于 Ubuntu 22.04 实测 0.6.7,覆盖核心架构、功能特性、快速开始与同类选型对比。
RetroShare 0.6.7 介绍与选型指南
目标:全面认识 RetroShare——一款无服务器、基于朋友间信任链的 P2P 加密通讯与文件共享软件,说清它的核心架构、功能特性与适用边界,并给出与同类自托管/P2P 通讯方案的选型对比。文中安装、服务化与 JSON API 验证均已在 Ubuntu 22.04 服务器(RetroShare 0.6.7,openSUSE OBS 仓库包 0.6.7-1)实测通过。
一、环境信息
本文所有命令与结论在以下环境实测:
- 操作系统:Ubuntu 22.04 LTS(x86_64)
- 软件版本:RetroShare 0.6.7(OBS 仓库包
retroshare-common/retroshare-service0.6.7-1,上游最新稳定版为 v0.6.7.2) - 部署形态:headless 服务(
retroshare-service)+ JSON API(默认端口 9092) - 数据目录:
/var/lib/retroshare - 网络环境:节点间同网段直连 + DHT(bitdht)发现,节点监听端口由系统自动分配(实测分别为 1946、37660),JSON API 端口 9092
- 版本查询时间:2026-10-26(版本与社区数据以官方源实时查询为准)
二、软件概述
RetroShare 是一个开源(以 GPL 系许可为主,仓库随附 COPYING 与 LICENSES 许可目录)的 P2P 通讯平台:它不依赖任何中心服务器,好友之间通过交换「节点证书」(内含 PGP 身份与 SSL 节点公钥)建立加密信任链,在这个仅由互信好友组成的私有网络里完成聊天、论坛、频道订阅、邮件收发与文件共享。核心用 C++ 编写,桌面端为 Qt5 图形界面(retroshare-gui),服务器端为无头服务(retroshare-service),两者共享同一套 libretroshare 核心库。
从版本节奏看它是典型的「长周期稳定系列」项目:GitHub 上 v0.6.4(2018-03)、v0.6.5(2019-02)、v0.6.6(2021-03)、v0.6.7.2(2023-11-30)依次发布,master 分支至今持续有提交(实测最后 push 为 2026-10-08),当前累计 2021 stars、325 forks。
💡 技术拓展:P2P 通讯系统的组网信任模型不止 RetroShare 用的「朋友间私网(Friend-to-Friend)」一种,主要选项对比——
模型 原理/特点 适用场景 F2F 朋友圈私网 仅好友间建链,非好友流量不出网,网络规模=朋友圈 小圈子私密通讯(RetroShare 默认) 开放 P2P 混合 DHT 全网发现陌生人节点辅助中转/发现 需要陌生人社交的 P2P 应用 中心服务器 全部账号与消息经服务器中转 传统 IM、需全局治理的社区 服务器联邦 多服务器互联合伙(Matrix/XMPP 模式) 中大型公开社区、跨组织互通 RetroShare 实际采用「F2F 朋友圈私网 + 可选 DHT/UPnP 辅助发现 + 可选 Tor/I2P 隐藏节点」的组合:核心链路只在互信好友之间建立,DHT 仅用于好友地址发现与 NAT 穿透。
三、核心架构
RetroShare 的分层结构可以用一张图概括(以下为 headless 服务形态,桌面 GUI 仅是把 JSON API 换成 Qt 界面):
┌─────────────────────────────────────────────────────┐
│ 前端:retroshare-gui (Qt5) │
│ 前端:retroshare-service (无头) │
│ └─ JSON API (HTTP, 9092) │
├─────────────────────────────────────────────────────┤
│ 服务层:GXS(分布式数据同步)· 聊天 · 邮件 · 文件传输 │
│ 论坛/频道/圈子/身份 · Turtle 匿名路由 │
├─────────────────────────────────────────────────────┤
│ 网络层:pqi(好友连接管理)· TLS 加密链路 · 打洞/UPnP │
│ DHT(bitdht) 好友发现 · Tor/I2P 隐藏节点接入 │
├─────────────────────────────────────────────────────┤
│ 基础层:OpenPGP 身份体系 · SSL 节点证书 · 本地存储 │
└─────────────────────────────────────────────────────┘
关键组件职责如下:
| 组件 | 职责 | 实测落点 |
|---|---|---|
| libretroshare | 全部核心逻辑(身份、GXS、路由、传输) | 包 retroshare-common,版本串 0.6.7---OBS |
| retroshare-service | 无头前端,负责初始化核心并暴露 JSON API | /usr/bin/retroshare-service |
| retroshare-gui | Qt5 桌面前端 | 同仓库可安装(0.6.7-1) |
| GXS(General Exchange System) | 论坛/频道/圈子/身份等数据的分布式同步机制 | 数据落盘于配置目录 gxs/ 子目录 |
| Turtle 路由 | 在好友图上多跳匿名转发文件搜索与传输请求 | 运行模式可整体关闭(NoTurtle) |
| DHT(bitdht) | 发现好友的公网地址、辅助 NAT 穿透 | 引导数据落盘 bdboot.txt |
| JSON API | HTTP + JSON 的全功能管理面(REST 风格路径) | 默认 127.0.0.1:9092 |
身份体系是理解 RetroShare 的关键:每个「个人」持有一对 OpenPGP 密钥(跨节点复用),每个运行实例是一个「节点/位置」(Location,持独立 SSL 证书,由 PGP 身份签发)。好友关系建立在节点证书层面——把你的证书发给朋友、朋友接受后双方即成为好友;同一个 PGP 身份可以在多台机器上创建多个位置。
四、功能特性
下表按服务模块汇总 RetroShare 0.6.x 的主要功能(均在 JSON API 中有对应域,详见《RetroShare 0.6.7 API 使用详解》):
| 功能域 | 说明 |
|---|---|
| 好友网络 | 节点证书互信建链,支持信任等级、服务权限细粒度控制 |
| 聊天 | 好友一对一私聊、群聊室、广播消息,支持离线消息 |
| 邮件 | 好友间端到端加密的异步邮件(签约收件人 GPG 加密) |
| 论坛 | 分布式公告板,帖子经 GXS 在好友间同步 |
| 频道 | 媒体订阅分发(类似去中心化的 RSS/播客) |
| 布告板(Boards) | 图钉式图片分享板 |
| 文件共享 | 目录共享 + 好友间直接传输 + Turtle 匿名多跳搜索下载 |
| 身份系统 | 匿名身份(伪名)与已签身份(关联 PGP)两轨制 |
| 圈子(Circles) | 限制内容可见范围的群组机制 |
| 语音 | 好友间 VoIP 通话 |
| 匿名接入 | 一键切换 Tor/I2P 隐藏节点模式 |
| 插件 | C++ 插件扩展(落盘 extensions6/) |
| JSON API | HTTP 管理面,可脚本化运维全部功能 |
要强调的是:这些功能全部是去中心化的——没有服务器存储你的数据,内容以加密形式在好友链路间同步,这也是它与自托管 IM 最本质的区别。
五、快速开始(最小可用示例)
本节在 Ubuntu 22.04 服务器上从零跑通一个最小 RetroShare 节点:安装 → systemd 托管 → 创建账号 → 验证。全过程约 5 分钟。
5.1 配置官方 OBS 仓库并安装
RetroShare 官方为 Ubuntu 提供 openSUSE OBS 软件源(https://download.opensuse.org/repositories/network:/retroshare/)。以 root 执行:
# 1. 写入官方 OBS 源
echo 'deb https://download.opensuse.org/repositories/network:/retroshare/xUbuntu_22.04/ /' \
> /etc/apt/sources.list.d/retroshare_OBS.list
# 2. 导入官方签名密钥
curl -fsSL "https://download.opensuse.org/repositories/network:/retroshare/xUbuntu_22.04/Release.key" \
| gpg --dearmor > /etc/apt/trusted.gpg.d/network_retroshare.gpg
# 3. 安装(服务器装无头服务;桌面环境可加装 retroshare-gui)
apt-get update && apt-get install -y retroshare-service
实测安装结果:
# dpkg -l | grep retroshare
ii retroshare-common 0.6.7-1 amd64 Secure communication with friends
ii retroshare-service 0.6.7-1 amd64 Secure communication with friends
5.2 systemd 托管启动
RetroShare 的 deb 包不带 systemd unit,需自建(这是服务器形态唯一需要手工编写的部分):
# /etc/systemd/system/retroshare-service.service
[Unit]
Description=RetroShare headless service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/retroshare-service -c /var/lib/retroshare -s -J 9092 -P 127.0.0.1
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now retroshare-service
systemctl is-active retroshare-service # 预期:active
实测运行状态(内存占用极低,2GB 内存服务器绰绰有余):
● retroshare-service.service - RetroShare headless service
Loaded: loaded (/etc/systemd/system/retroshare-service.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-10-26 11:55:39 UTC; 1h 37min ago
Main PID: 1081 (retroshare-serv)
Tasks: 28 (limit: 2932)
Memory: 5.2M (peak: 10.5M)
5.3 通过 JSON API 创建账号并验证
新数据目录下没有任何账号,需先通过免鉴权的引导端点 createLocationV2 创建第一个账号,并顺带授权一个 API 令牌(apiUser:apiPass,演示用 admin / q1w2e3r4):
curl -s -X POST http://127.0.0.1:9092/rsLoginHelper/createLocationV2 \
-H "Content-Type: application/json" \
-d '{"locationName":"demo-node","pgpName":"admin","password":"q1w2e3r4","apiUser":"admin","apiPass":"q1w2e3r4"}'
实测响应(retval.errorMessage 为 Success 即创建成功,同时返回节点与 PGP 身份 ID):
{
"locationId": "1bb68f6a9122a6066f8501f81d172920",
"pgpId": "15A46E459B7F315A",
"retval": {
"errorNumber": 0,
"errorCategory": "generic",
"errorMessage": "Success"
}
}
随后即可用该令牌访问全部受保护接口。验证版本与账号:
# 健康检查(免鉴权)
curl -s http://127.0.0.1:9092/rsJsonApi/version
# 账号列表(免鉴权)
curl -s -X POST http://127.0.0.1:9092/rsLoginHelper/getLocations -H "Content-Type: application/json" -d '{}'
实测回显:
{
"major": 0,
"minor": 6,
"mini": 7,
"extra": "---OBS",
"human": "0.6.7---OBS"
}
{
"locations": [
{
"mLocationId": "1bb68f6a9122a6066f8501f81d172920",
"mPgpId": "15A46E459B7F315A",
"mLocationName": "demo-node",
"mPgpName": "admin"
}
]
}
至此一个最小可用的 RetroShare 节点已在服务器上运行。完整的 API 调用、鉴权细节与好友互信流程见《RetroShare 0.6.7 API 使用详解》;安装方案对比(含离线 deb)见《Ubuntu 22.04 安装 RetroShare 0.6.7 指南》;全部运行参数见《RetroShare 0.6.7 配置参数详解》。
六、适用场景与限制
适合的场景:
- 小圈子私密通讯:家庭、团队、朋友间需要聊天/邮件/文件互传,且不希望任何第三方服务器持有数据;
- 隐私与抗审查环境:配合 Tor/I2P 隐藏节点模式,好友链路可完全隐藏 IP 与拓扑;
- 离线/内网协同:好友在同一内网即可直连同步,不依赖公网服务(实测同网段节点秒级直连);
- 自托管极简运维:单进程、5MB 级内存占用,systemd 一把梭即可长期运行。
局限与注意:
- 规模上限:网络规模等于好友图,不适合面向大众的公开社区(那是 Matrix/XMPP 联邦的领地);
- 移动端薄弱:无成熟官方移动客户端(Android 支持为实验性质);
- 上手成本:证书互信、PGP 身份、位置等概念对新手有门槛;GUI 需要桌面环境;
- 包版本滞后:OBS 仓库包为 0.6.7-1,上游代码已含 0.6.7.2 修复(选型时按需取舍);
- 运维工具链弱:无官方 CLI 管理工具,服务器的日常管理面是 JSON API(本文已实测可用)。
七、同类选型对比
面向「不想用公共 IM、希望自主可控」的需求,常见路线有两条:自托管服务器 IM(Matrix、XMPP)与无服务器 P2P(RetroShare、Jami、Tox、Briar)。下表给出实测/实查(GitHub API,查询日期 2026-10-26)的横向对比:
| 方案 | 架构与信任模型 | 匿名能力 | 文件共享 | 移动端 | 社区活跃度(实查) | 适用判断 |
|---|---|---|---|---|---|---|
| RetroShare 0.6.7 | 无服务器 F2F 朋友圈,PGP+SSL 双层身份 | Tor/I2P 隐藏节点 | 原生共享目录+匿名路由 | 实验性 | 2021 stars,master 2026-10 持续提交,稳定版 2023-11 | 小圈子私密全功能协同 |
| Jami | 无服务器分布式账号(以太坊式目录),点对点 | 支持 DHT 匿名 | 文件传输 | 成熟(iOS/Android/桌面全平台) | 官方自管 GitLab(git.jami.net)持续发布 | 全平台音视频优先的私聊 |
| Tox(c-toxcore/qTox) | 无服务器 P2P 协议族,各客户端独立实现 | 中等 | 基础文件传输 | 第三方客户端参差 | c-toxcore 2695 stars 活跃;主客户端 qTox 已归档(2025-02,4970 stars) | 轻量私聊,生态碎片化 |
| Briar | 无服务器,Tor 强制底层,隐私优先 | 强制匿名(Tor) | 有限 | Android 成熟/iOS 开发中 | 711 stars,2026-10 活跃 | 高敏感场景移动端安全通讯 |
| Matrix(Synapse) | 服务器联邦,账号在服务器 | 可桥接 Tor,非默认 | 房间文件,存服务器 | 成熟 | element-hq/synapse 4736 stars,2026-10 活跃 | 中大型社区、跨组织互通 |
| XMPP(ejabberd) | 服务器联邦,协议老牌 | 可选 OMEMO 加密 | 有限(HTTP 上传) | 成熟 | processone/ejabberd 6749 stars,2026-10 活跃 | 标准化互通、轻量自托管 |
关键差异与选型建议:
- 如果核心诉求是**「没有任何服务器」**且功能要全(聊天+邮件+论坛+文件共享一体)→ RetroShare 是同类中功能覆盖最完整的,代价是移动端与新手门槛;
- 如果要全平台音视频私聊 → Jami 的移动端成熟度明显更好;
- 如果是高敏感移动场景 → Briar 强制 Tor 的设计最彻底,但功能面窄;
- 如果其实是多人公开社区 → 不要选 P2P,走 Matrix/XMPP 联邦自托管;
- Tox 协议可用但主客户端 qTox 已归档,新项目不建议押注其生态。
八、参考链接
- 官方网站:https://retroshare.cc
- 官方下载页(含 OBS 源说明):https://retroshare.cc/downloads.html
- GitHub 仓库(含 Releases):https://github.com/RetroShare/RetroShare
- 官方 Wiki(JSON API 文档):https://retroshare.readthedocs.io
- openSUSE OBS 仓库:https://download.opensuse.org/repositories/network:/retroshare/