RetroShare 0.6.7 介绍与选型指南

RetroShare 是无服务器 P2P 朋友圈加密通讯与文件共享软件:本文基于 Ubuntu 22.04 实测 0.6.7,覆盖核心架构、功能特性、快速开始与同类选型对比。

RetroShare即时通讯RetroShare2026/10/26

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-service 0.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-guiQt5 桌面前端同仓库可安装(0.6.7-1)
GXS(General Exchange System)论坛/频道/圈子/身份等数据的分布式同步机制数据落盘于配置目录 gxs/ 子目录
Turtle 路由在好友图上多跳匿名转发文件搜索与传输请求运行模式可整体关闭(NoTurtle)
DHT(bitdht)发现好友的公网地址、辅助 NAT 穿透引导数据落盘 bdboot.txt
JSON APIHTTP + 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 APIHTTP 管理面,可脚本化运维全部功能

要强调的是:这些功能全部是去中心化的——没有服务器存储你的数据,内容以加密形式在好友链路间同步,这也是它与自托管 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 已归档,新项目不建议押注其生态。

八、参考链接