6 个版本 (3 个破坏性更新)
0.4.0 | 2023 年 8 月 21 日 |
---|---|
0.3.0 | 2023 年 3 月 5 日 |
0.2.0 | 2022 年 12 月 20 日 |
0.1.2 | 2022 年 11 月 22 日 |
#4 在 #atproto
每月 21 次下载
210KB
5K SLoC
腺苷-pds
: atproto.com 小世界个人数据服务器
这是一个简单的、爱好者级别的 AT 协议 (atproto.com) 个人数据服务器 ("PDS") 实现。它针对协议的“小世界”用例,例如个人或组织自托管。
有一个 手册页,其中包含使用和配置详细信息。
功能
- com.atproto 词典实现(未验证)
- 粗糙的仓库 CAR 文件导出(完整历史记录)
- 部分 app.bsky 词典实现(帖子、关注者)
- 粗糙的内部 did:plc 生成
- 粗糙的仓库存储和处理
- 自托管 did:web 配置
- 小世界注册和 did:plc 主机配置
- 服务器之间的交互,全都有(仓库同步等)
- 远程 DID 解析(did:plc、did:web 等)
- 记录/请求的 Lexicon 架构验证
- 仓库 CAR 文件导入:验证和应用数据库更新
- did:plc 服务器交互和链验证
- 完整的 app.bsky 词典实现(通知、点赞、参与者等)
支持两种主要的部署配置
- "固定 did:web 账户":账户只能通过 CLI 注册,并使用 did:web 而不是 did:plc。为匹配域名提供 did:web DID 文档,并在域名匹配时从主页提供个人资料/源
- "域名通配符注册":账户可以通过 XRPC 注册,限制在特定托管域下的处理,可能需要秘密邀请码。本地生成 did:plc 标识符。从任何域提供网页视图,已注册处理域是个人资料/源视图
快速入门
待办事项
- 生成一个 PDS 全局密钥,并存储为环境配置变量
- 设置其他配置变量(参见
--help
或手册页)
部署
待办事项:重写此内容
- 生成一个 PDS 全局密钥,并存储为环境配置变量
- 设置其他配置变量(参见
--help
或手册页) - 设置带有 SSL 的反向代理(例如 caddy 或 nginx 或 haproxy)
- 从适当的本地工作目录运行命令(例如数据库)
- 可能设置一个 systemd 单元文件
adenosine-pds serve-vv
实现细节
这是一个Rust编程语言项目。
当前使用 rouille
作为(阻塞)Web框架;rusqlite
用于(阻塞)直接sqlite数据库交互;ipfs-sqlite-block-store
作为(阻塞)IPLD块存储。
进行一些清理和重构将非常有用
- 更清晰的拥有权和引用(减少浪费的分配)
- 错误处理(减少
unwrap()
诡计) - 避免互斥锁中毒
- 切换到异步/await并发(替换或包装阻塞数据存储)(例如,
axum
,sqlx
,iroh
块存储)
第三方代码
尚未发布到crates.io的iroh-car
crate,已从iroh
项目中提取出来,成为此crate的子模块。这基本上是逐字复制,并且原始版权和许可证适用于该代码。
在此crate中实现了对p256
密钥类型的ucan
支持。希望将其集成到上游。
开发和贡献
最低支持的Rust版本(MSRV)目前为1.61,使用2021年Rust版。
欢迎贡献、对话、错误报告和手写信件。这是一个低成本的业余项目,因此可能不会提供高触点的支持、功能请求、增长策略等。
源代码许可证是AGPLv3。请在任何初始贡献中承认此点,并说明您是否以及如何希望作为贡献者获得认可(例如,姓名和可选的URL)。
依赖项
~68MB
~1.5M SLoC