skorotkiewicz/morrow

GitHub: skorotkiewicz/morrow

Morrow 是一个端到端加密、消息自动过期的去中心化私密社交网络工具,旨在替代传统社交媒体中算法驱动的内容分发模式。

Stars: 0 | Forks: 0

Morrow

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, 去中心化通信, 可视化界面, 社交网络, 端到端加密, 网络流量审计, 请求拦截, 通知系统