blobcache/blobcache
GitHub: blobcache/blobcache
一个基于内容寻址的加密存储系统,通过哈希链接数据结构为端到端加密应用提供可验证完整性的通用后端。
Stars: 71 | Forks: 2
# Blobcache
[](http://godoc.org/blobcache.io/blobcache)
[
](https://discord.gg/TWy6aVWJ7f)
[](https://matrix.to/#/#inet256:inet256.org)
Blobcache 将应用状态重新构想为包含哈希链接数据结构的卷(Volumes)。
卷可以在本地持久化、加密,并通过网络访问。
哈希链接数据结构在同步和传输方面非常高效。
损坏总是能被检测到,且根节点是对整个数据结构的加密承诺。
Blobcache 是 E2EE 应用的通用后端。
## 快速文档
- [为什么选择 Blobcache?](./doc/0.2_Why_Blobcache.md)
- [概念](./doc/1.0_Concepts.md)
- [BCP vs. HTTP](./doc/9.01_BCP_vs_HTTP.md)
- [Git Remote](./doc/6.01_Git_Remote.md)
## 入门指南
对于非用户机器(云、家庭实验室),建议运行 docker 镜像。
对于用户机器,建议在登录时将 blobcache 作为 systemd 服务运行。
### 安装
针对基于 systemd 的 Linux 和 macOS,提供了一个[安装脚本](./www/install.sh)。
```
curl blobcache.io/install.sh | sh
```
该安装脚本执行两项操作:
- 将 blobcache 可执行文件安装到 `/usr/bin/blobcache`
- 将 [blobcache.service](./etc/blobcache.service) 复制到 `$HOME/.config/systemd/user/`
然后,你可以像往常一样使用 `systemctl --user` 来管理该服务。
该服务默认未启用(你可以通过 `systemctl --user enable blobcache` 来启用),因此这种安装方式也适用于仅将二进制文件放入 `/usr/bin` 而不启动后台进程的情况。
### 设置 `BLOBCACHE_API`
在用户机器上,你可能需要设置 `BLOBCACHE_API` 环境变量。
这会将变量设置为上述 systemd 服务中默认使用的 Unix 套接字。
```
export BLOBCACHE_API="unix:///run/user/$(id -u)/blobcache.sock"
```
`blobcache` 命令使用该环境变量与 blobcache 守护进程(daemon)进行通信。
你可以通过以下命令测试 CLI 是否能连接到守护进程:
```
$ blobcache endpoint
JcJvfY9tFsfkHSwoMT8IEoSq1ZfxVYBAwpBRvJ0uUJA:[::]:6025
```
### Docker
GitHub Container Registry 上有一个 docker 镜像,也可以使用 `just build-images` 构建。
目前它只为 `linux-amd64` 构建。
之后你可以通过以下命令进行测试运行:
```
docker run -it --rm ghcr.io/blobcache/blobcache:latest
```
镜像使用 git 哈希值(例如 `git-a0b1c3d`)和版本号(例如 `v1.2.3`)进行标记。
`/state` 目录是 blobcache 存储其所有状态的地方。
这是你应该挂载卷以在主机上持久化数据的位置。
你还应该暴露 peer 端口,以便其他实例可以连接。
```
docker run \
-v /host/path/to/state:/state \
-p 6025:6025/udp \
ghcr.io/blobcache/blobcache:latest
```
### 在内存中运行节点
如果你只是想试用 API,并且不想持久化任何数据或连接到 peer,这是一个不错的选择。
```
$ blobcache daemon-ephemeral \
--serve-ipc ./blobcache.sock \
--net 0.0.0.0:6025
```
### 运行守护进程
以下命令在指定目录中运行带有状态的守护进程。
```
$ blobcache daemon \
--state $HOME/.local/blobcache \
--serve-ipc /run/blobcache/blobcache.sock \
--net 0.0.0.0:6025
```
一旦守护进程运行,你应该能够连接到它,并开始在内容寻址存储之上构建你的应用。
## 许可证
Blobcache 的实现采用 GPLv3 许可。
所有客户端均采用 MPL 2.0 许可。
作为一般规则:UNIX 或 HTTP API 之上的所有内容均为 MPL,而其下的所有内容均为 GPL。
这意味着:如果你改进了 Blobcache,你必须公开这些改进,但如果你只是使用客户端,你可以随意使用它。
如果你需要关于许可的进一步说明,请联系我们。
如有必要,我们可以在单独的文件中添加标头。
标签:Blobcache, Docker容器, E2EE, EVTX分析, Git远程辅助, Go语言, Merkle Tree, Systemd服务, Zenmap, 内容寻址存储, 分布式存储, 加密后端, 去中心化应用, 哈希链接数据结构, 对象存储, 攻击面发现, 数据同步, 数据完整性, 文件系统, 日志审计, 本地持久化, 程序破解, 端到端加密, 网络访问, 请求拦截, 隐私计算