skorotkiewicz/morrow
GitHub: skorotkiewicz/morrow
Morrow 是一个端到端加密、消息自动过期的去中心化私密社交网络工具,旨在替代传统社交媒体中算法驱动的内容分发模式。
Stars: 0 | Forks: 0
Morrow 是一个私密的社交上下文网络,没有信息流、点赞、关注者数量或算法排名。人们通过交换有特定用途且会过期的 **capsule**(胶囊),并请求获取关于变更内容的有限摘要。
## 已实现的功能
- 本地 SQLite 存储已签名加密的信封;
- `did:key` Ed25519 身份和签名;
- 针对每个接收者的 X25519/HKDF 密钥封装和 XChaCha20-Poly1305 负载加密;
- 联系人、命名分组、目的/主题元数据、过期时间、附件以及私有 memories;
- CLI 收件箱以及确定性或本地 LLM 摘要;
- 不透明的 SQLite 中继服务器,支持经过身份验证的收件箱读取和过期清理;
- 可选的直接 peer 同步,使用相同的协议,无需中继;
- Dioxus Web/桌面 UI;
- 完整数据导出为可读的 JSON 和文件,同时保留加密的原始文件。
## 构建
```
cargo build
cargo test
```
初始化身份,并通过带外方式交换公共身份文件:
```
morrow init --name Alice
morrow identity export alice-public.json
morrow contact add bob-public.json --remote http://bob.example:8484
morrow group create friends Bob
```
发布、检查、摘要和导出:
```
morrow post "Working on a strange Odin project" --to friends --expires 7d
morrow inbox --since 1w
morrow summary --since 1w
morrow export ./morrow-export
```
`post` 默认过期时间为 30 天。请仅在用于有意的永久性文档时使用 `--permanent`。过期的 capsule 会离开活跃的收件箱,但仍可通过 `morrow memories` 和本地导出进行访问。
## 中继与直接同步
运行一个不透明中继:
```
morrow-relay --listen 0.0.0.0:8787 --database relay.db
morrow config relay add https://relay.example
morrow sync
```
或者仅公开加密的 peer 同步路由并直接同步:
```
morrow peer --listen 0.0.0.0:8485
morrow sync http://friend-host:8485
```
### Docker 中继
构建并启动 Alpine 中继容器:
```
docker compose up -d --build
morrow config relay add http://127.0.0.1:8787
```
SQLite 数据存放在 `relay-data` 卷中。Compose 默认绑定到 localhost。如果需要为反向代理或其他机器公开端口:
```
MORROW_RELAY_HOST=0.0.0.0 docker compose up -d
```
当中继离开本地机器时,请使用 HTTPS。
## 本地 AI 摘要
Morrow 绝不会将解密后的更新发送给托管模型。它支持本地 Ollama 和兼容 OpenAI 的 `/v1` 服务器:
```
# Ollama
morrow config ai --url http://127.0.0.1:11434 --model llama3.2
# llama.cpp 或其他兼容 OpenAI 的本地服务器
morrow config ai --url http://192.168.1.10:8080/v1 --model local-model
morrow summary --since 1w
```
配置的主机必须是 `localhost` 或字面量的环回/私有/链路本地 IP 地址。如果未配置模型,摘要将是确定性的本地要点。
## Dioxus UI
启动本地 API:
```
morrow serve
```
桌面端:
```
cargo run -p morrow-ui --no-default-features --features desktop
```
Web 开发:
```
dx serve --package morrow-ui --platform web
```
对于同源的可分发 Web UI,请使用 `dx build --package morrow-ui --platform web` 进行构建,然后将生成的 web 目录传递给 `morrow serve --ui-dir
`。
## 身份与导出安全
`morrow export` 会有意导出公共身份、联系人、分组、已解密的 capsule、附件文件、配置以及原始的加密信封。它**不会**泄露私有身份密钥。请将这些密钥显式备份到受保护的目标位置:
```
morrow identity backup /secure/offline/morrow-identity.json
```
私有身份文件在 Unix 上以 `0600` 模式创建,而 Morrow 数据目录以 `0700` 模式创建。Morrow 目前依赖文件系统/OS 账户来保护该密钥;在存储该密钥的设备上请使用全盘加密。
设置 `MORROW_HOME` 或传入 `--home` 以运行隔离的身份,包括进行本地多用户测试。标签:AI风险缓解, DFIR, Dioxus, Rust, SQLite, XChaCha20-Poly1305, 去中心化通信, 可视化界面, 社交网络, 端到端加密, 网络流量审计, 请求拦截, 通知系统