diaspora* 介绍与选型指南

diaspora* 0.9.1.0 介绍与选型指南:解析这款隐私感知、分布式开源社交网络的定位、pod 架构、aspects 隐私模型、功能特性与发布节奏,给出与 Mastodon/Friendica 的量化选型对比与适用场景判断。

diaspora*diaspora*Fediverse联邦平台RubyRails2026/11/02

diaspora* 介绍与选型指南

本文是 diaspora* 专栏的认知篇。文中版本号、技术栈与对比数据均于 2026-11-02 通过联网实查官方渠道(GitHub 仓库/Releases、官网、源码 tag v0.9.1.0)取得,来源在文末逐条列出;本文不含任何本地部署实测结论。

一、环境信息

1.1 目标版本与发布节奏

以 GitHub Releases 订阅源(github.com/diaspora/diaspora/releases.atom,查询日期 2026-11-02)为准:

版本发布日期说明
0.9.1.02026-04-07当前最新稳定版,安全修复版
0.9.0.02024-06-16大版本:TOML 配置、官方 API、puma
0.7.18.22023-07-100.7 维护线末段

两个大版本之间间隔约 22 个月,发布节奏明显偏慢,选型时应把「版本更新频率」作为显性因素评估(见第六节)。

1.2 技术栈概览

以下版本事实取自源码 tag v0.9.1.0 的 Gemfile / Gemfile.lock(github.com/diaspora/diaspora,查询日期 2026-11-02):

  • 语言/框架:Ruby(Gemfile 声明 required_ruby_version,Changelog 0.9.0.0 推荐 Ruby 3.3);Rails 6.1.7.10;
  • 应用服务器:Puma 7.2.0(0.9.0.0 起替换 Unicorn,官方称默认配置下显著降低内存占用);
  • 后台作业:Sidekiq 7.3.10(依赖 Redis),联邦推送、定时清理等异步任务全部走 Sidekiq;
  • 联邦层:diaspora_federation gem 1.2.0(独立实现 diaspora* 联邦协议的官方库);
  • 数据库:Gemfile 提供 postgresql 与 mysql 两个可选 bundle 组(pg 1.6.3 / mysql2 0.5.7),官方安装文档以 PostgreSQL 为主;
  • 前端构建:0.9.0.0 起使用 yarn 管理前端依赖,需 Node.js 环境预编译 assets;
  • 许可证:AGPL-3.0(COPYRIGHT 文件逐字:Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed under the Affero General Public License version 3)。

1.3 仓库与治理

  • 主仓库:github.com/diaspora/diaspora(GitHub API 主语言标签 Ruby,查询 2026-11-02);
  • 官网:diasporafoundation.org(页面 title The diaspora Project*,HTTP 200,查询 2026-11-02);
  • 社区:README 官方链接指向 wiki(wiki.diasporafoundation.org)、Discourse 讨论区与 GitHub Issue 跟踪。

二、软件概述

2.1 一句话定位

README 对 diaspora* 的官方定义是:"A privacy-aware, distributed, open source social network"(隐私感知、分布式、开源社交网络)。GitHub 仓库 description 与之一字不差。

与「一个网站服务所有人」的集中式社交网络不同,diaspora* 从设计上就是分布式的:网络由大量互相联邦的独立服务器(社区习惯称 pod)组成,任何人均可自建 pod,pod 之间自动同步公开内容。

2.2 pod 与用户标识

  • 每个 pod 是一个独立的 Rails 应用实例,拥有自己的域名与数据库;
  • 用户标识形如 用户名@pod域名(类似电子邮件地址),跨 pod 唯一;
  • 官方 README 明确:不自建也能用——网络上存在大量开放注册的 pod,任何人都可以在上面注册账号(选择指引见 wiki 的 Choosing_a_pod 页面,pod 列表见 diaspora.fediverse.observer)。

2.3 项目简史

项目由 Diaspora Inc. 于 2010 年发起(COPYRIGHT 文件),后移交社区基金会形态维护,至今仍在发布安全修复与新版本(0.9.1.0,2026-04)。它是 Fediverse(联邦宇宙)中出现最早的一批去中心化社交协议实现之一。

三、核心架构

3.1 运行时进程模型

一个生产 pod 由两类应用进程加两类基础服务构成:

  1. web 进程:bin/puma -C config/puma.rb,承载 Rails 应用(页面、REST API、联邦端点);
  2. sidekiq 进程:bin/bundle exec sidekiq,承载出站联邦投递、定时任务(生日检查、缓存清理、过期照片清理、pod 复检等);
  3. PostgreSQL:主数据存储;Redis:Sidekiq 队列与缓存。

官方 script/server 通过 foreman + Procfile 同时拉起 web 与 sidekiq;0.9.0.0 起 Changelog 明确警告:生产环境用 script/server 时进程崩溃后不再自动重启,官方建议改用 systemd 等单元管理器守护。

3.2 联邦层:diaspora* 自有协议

联邦能力由独立 gem diaspora_federation 实现,走的是 *diaspora 自有协议**而非 ActivityPub,核心机制包括:

  • WebFinger:/.well-known/webfinger 按 acct:用户@域名 解析到作者所在 pod;
  • hCard:/hcard/users/:guid 公开用户档案与 RSA 公钥;
  • Salmon:签名信封推送,帖子以 XML 实体 POST 到订阅者的 /receive/... 端点;
  • Atom:/public/:username.atom 提供公开内容种子流;
  • 实体可按 GUID 经 /fetch/:type/:guid 拉取。

(端点形态可在源码 config/routes.rb 挂载的 DiasporaFederation::Engine 与官方协议文档中核实。)

3.3 隐私模型:aspects

aspects(面向)是 diaspora* 的招牌设计:用户把联系人分入若干 aspects,发帖时选择一个或多个 aspects;public 是特殊的公开面向,其余面向即「仅这些分组可见」。联系人关系是双向可分离的:sharing(对方分享给我)与 receiving(我分享给对方)各自独立,互相关注即双向 sharing。私密消息(conversation)与照片也有独立的可见性控制。

3.4 配置体系

0.9.0.0 起主配置文件改为 TOML(config/diaspora.toml),官方声明 1.0 将不再读取旧 YAML 格式;配置项支持环境变量覆盖(点分路径转下划线大写,如 environment.url → ENVIRONMENT_URL),这一点对容器化部署很关键(详见本专栏部署篇的官方文档溯源)。

四、功能特性

按官方 README、Changelog 与 wiki 汇总(查询 2026-11-02):

4.1 内容发布与互动

  • 富文本帖子(Markdown)、照片上传(自动剥离 EXIF,0.9.0.0 起强制)、投票(poll)、地理位置标注;
  • reshare(转发)、评论、点赞、@提及、#标签与标签关注流;
  • 多面向(aspects)细粒度可见性,公开/私密一屏切换;
  • 站内私密对话(conversations)。

4.2 账号与安全

  • 双因素认证(2FA):TOTP + 恢复码;0.9.0.0 修复 2FA 暴力破解问题(CVE-2024-0227);
  • Content-Security-Policy 默认开启(0.9.0.0);
  • 个人资料与照片的导出下载;账号注销与 podmin 移除队列;
  • 0.9.1.0 为安全版本:修复 OpenID Connect API 中恶意客户端注册触发 pod 内网请求(SSRF)的漏洞。

4.3 开放 API

0.9.0.0 起官方宣布正式支持在 diaspora* API 上开发应用,官方文档位于 diaspora.github.io/api-documentation/;认证走 OAuth2 / OpenID Connect,scope 体系覆盖公开读写、私密读写、互动与通知等。

4.4 管理面板

podmin(pod 管理员)通过内置管理界面管理用户(锁定/关闭/设为管理员/spotlight)、pod 列表复检、流量与用户统计、举报处理(0.9.1.0 起举报总览显示违规内容作者)。

4.5 已移除的能力(选型注意)

  • XMPP 聊天集成已删除(0.9.0.0):不再有站内 webchat;
  • relay 支持已删除(0.9.0.0,Drop relay support):远程用户不再能「单向订阅」pod 的全部公开内容,跨 pod 互动以互相关注为主。

五、快速开始

5.1 不自托管:直接加入网络

官方 README 给出的路径:浏览 https://diaspora.fediverse.observer 的开放 pod 列表,或参考 wiki 的 Choosing_a_pod 指引挑选一个开放注册的 pod,注册即用。

5.2 自托管:源码安装

官方安装文档入口:wiki Installation。基本路径为:Ruby 3.3 + PostgreSQL + Redis 环境 → 拉取源码 → bundle install(--with postgresql)→ 生成 diaspora.toml 与会话密钥 → 预编译 assets → script/server(或 systemd 守护 puma + sidekiq)。

关于容器化,官方安装文档源仓库(diaspora/north-star,contents/install/new_pod/docker.md,查询 2026-11-02)明确:官方提供的 diasporasocial/diaspora-dev 镜像与 ./script/diaspora-dev 仅用于开发环境,不可用于生产。生产容器部署需要自建镜像(本专栏部署篇给出完整方案)。

5.3 联邦前提:必须 HTTPS

源码与官方文档一致要求 pod 以 TLS 对外服务:联邦发现环节(WebFinger)永远优先请求 https://<域名>/.well-known/webfinger,http 回退仅在 development 环境启用(config/initializers/diaspora_federation.rb:webfinger_http_fallback = Rails.env == "development")。http-only 的生产 pod 无法与其他 pod 正常联邦。

5.4 API 集成

官方 API 文档:https://diaspora.github.io/api-documentation/(0.9.0.0 起官方支持)。注册 OAuth 应用、获取 token、发帖/读流的最小闭环见本专栏进阶篇。

六、适用场景与限制

6.1 适合选用的场景

  1. 数据主权优先:pod 完全自托管,数据库、上传、密钥全在自己手里;AGPL-3.0 保证代码可审计;
  2. 小圈子/家庭/同事社交:aspects 分组共享模型比「公开/仅关注者」二元模型更贴近现实社交圈层,适合几十到几百人规模的私有 pod;
  3. 封闭注册社区:支持邀请制注册,podmin 可完全控制成员构成;
  4. Ruby 技术栈团队:标准 Rails 单体应用,二次开发、主题与本地化(多语言翻译体系)门槛低。

6.2 必须正视的限制

  1. 协议孤岛效应:diaspora* 使用自有联邦协议,不能与 ActivityPub 系(Mastodon、PeerTube 等)pod 直接联邦——Mastodon README 自述 "based on ActivityPub",两者互发现路径不同。触达 Fediverse 主流人群需要经多协议客户端(如 Friendica)桥接;
  2. 发布节奏慢:0.9.0.0 → 0.9.1.0 间隔约 22 个月,功能演进有限,安全修复是主要产出;
  3. 无官方生产镜像:容器化必须自建(官方 dev 镜像明示不可生产);
  4. relay 已移除:公开内容的跨 pod 分发依赖关注关系,pod 冷启动时网络可见度低;
  5. 网络规模有限:活跃 pod 与用户量远小于 Mastodon(开放 pod 列表见 fediverse.observer,实查规模自行评估);
  6. 聊天功能缺失:0.9.0.0 起无站内即时通讯。

6.3 选型判断

把它当作「隐私导向的自托管社交网络」而不是「Mastodon 替代品」:如果你的目标是接入 Fediverse 流量大盘,选 Mastodon;如果你的目标是给一个明确的小群体提供数据完全自主、可见性精细可控的社交空间,diaspora* 的 aspects 模型与邀请制 pod 形态至今仍是 Fediverse 里最贴合的方案之一。

七、量化选型对比

对比对象为三款可自托管的联邦社交服务器。所有数据为 2026-11-02 联网实查:版本与日期取各自 GitHub Releases(releases/latest API / releases.atom),语言取 GitHub 仓库 API language 字段,协议取各自 README/仓库描述原文。

维度diaspora*MastodonFriendica
最新稳定版0.9.1.0(2026-04-07)v4.7.4(2026-10-29)2026.05(2026-05-20)
发布节奏大版本间隔约 22 个月,维护线活跃高频,4.6.x 维护线持续发版(v4.6.10)日历版本号,约每月一个稳定线
主语言Ruby(Rails 6.1 + Puma + Sidekiq)Ruby(GitHub API 语言标签)PHP(GitHub API 语言标签)
联邦协议diaspora* 自有协议(WebFinger+hCard+Salmon+Atom)ActivityPub(README 原文 based on ActivityPub)多协议通信平台(仓库描述 Friendica Communications Platform)
产品形态隐私导向社交网络,aspects 细粒度共享微博客社区(仓库描述 globally interconnected microblogging community)社交网络聚合/跨平台桥接
官方开放 API 文档diaspora.github.io/api-documentation(0.9 起官方支持)有(Mastodon 官方文档站)以兼容 Mastodon 客户端生态为主
官方生产容器镜像无(dev 镜像明示仅开发)社区镜像为主,官方推荐源码/容器编排官方提供 Docker 部署文档

注:akkoma 亦属同类组件,但其 GitHub 仓库 akkoma-garden/akkoma 的 releases.atom 实查为空(查询 2026-11-02),无法取得 GitHub 侧稳定发布物,故未纳入上表;其主开发仓库已迁至自建基础设施,版本实查需另行访问其 Forgejo 实例。

结论速读:追流量与生态选 Mastodon;要跨协议桥接选 Friendica;要数据主权 + 小圈子精细隐私选 diaspora*。三者不互斥,同机并存亦常见(注意端口与资源隔离)。

八、参考链接

以下来源均于 2026-11-02 联网实查:

diaspora* 介绍与选型指南 - Quzuo