ata-sesli/rvault
GitHub: ata-sesli/rvault
RVault 是一款使用 Rust 编写的本地优先密码管理器,提供终端 UI、CLI 和浏览器扩展,通过本地加密存储保护用户凭据隐私。
Stars: 0 | Forks: 0
# RVault
RVault 是一个本地优先的密码管理器,使用 Rust 编写,提供了终端 UI、CLI 以及一个 Helium 浏览器扩展,该扩展通过 native messaging 与本地的 `rvault` 二进制文件进行通信。
当前版本:`1.2.0`。
RVault 将数据保留在本地。密码在写入 SQLite 之前会被加密,浏览器集成通过本地 native host 进行,并且扩展不会存储明文凭据。
## 目录
- [安装 RVault](#install-rvault)
- [在本地安装 Helium 扩展](#install-the-helium-extension-locally)
- [快速开始](#quick-start)
- [备份和还原](#backup-and-restore)
- [加密导出和导入](#encrypted-export-and-import)
- [TUI 快捷键](#tui-keybindings)
- [RVault 的工作原理](#how-rvault-works)
- [从源码构建和测试](#build-and-test-from-source)
- [发布检查清单](#release-checklist)
- [当前限制](#current-boundaries)
- [许可证](#license)
## 安装 RVault
### 从 GitHub Releases 获取
在 `v1.2.0` 版本发布后,从发布资产中安装 CLI:
```
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ata-sesli/rvault/releases/download/v1.2.0/rvault-cli-installer.sh | sh
```
在 Windows PowerShell 中:
```
powershell -ExecutionPolicy Bypass -c "irm https://github.com/ata-sesli/rvault/releases/download/v1.2.0/rvault-cli-installer.ps1 | iex"
```
确认安装:
```
rvault --version
```
预期版本:
```
rvault-cli 1.2.0
```
### 从源码构建
要求:
- Rust 工具链及 Cargo
- Bun,仅用于构建浏览器扩展
- macOS 上的 Helium,仅用于浏览器集成
从此仓库安装 CLI:
```
git clone https://github.com/ata-sesli/rvault.git
cd rvault
cargo install --path crates/rvault-cli --force
rvault --version
```
运行终端 UI:
```
rvault
```
## 在本地安装 Helium 扩展
RVault 扩展在 `1.2.0` 版本中尚未发布到 Chrome Web Store。请在 Helium 中在本地安装它。
这个 v1 路径专门针对 **macOS 上的 Helium**。`rvault browser enable` 会将 Helium 的 native messaging manifest 写入此处:
```
~/Library/Application Support/net.imput.helium/NativeMessagingHosts/io.github.ata_sesli.rvault.json
```
### 选项 A:从发布 ZIP 包安装
1. 首先安装 `rvault` CLI。
2. 从 `v1.2.0` 的 GitHub Release 中下载 `rvault-extension-1.2.0.zip`。
3. 将其解压到一个稳定的位置,例如:
```
mkdir -p ~/Applications/rvault-extension
unzip rvault-extension-1.2.0.zip -d ~/Applications/rvault-extension
```
4. 打开 Helium 并进入:
```
chrome://extensions
```
5. 启用 **开发者模式**。
6. 点击 **加载已解压的扩展程序**。
7. 选择:
```
~/Applications/rvault-extension
```
8. 将 RVault 注册为 Helium 的 native messaging host:
```
rvault browser enable
```
9. 点击 Helium 中的 RVault 工具栏图标。
如果你移动或重新安装了 `rvault` 二进制文件,请再次运行此命令:
```
rvault browser enable
```
要移除 native messaging 注册:
```
rvault browser disable
```
### 选项 B:在本地构建扩展
从仓库根目录执行:
```
cd extension
bun install
bun run build
```
然后在 Helium 中加载此文件夹:
```
extension/build/chrome-mv3-prod
```
加载扩展后,注册 native host:
```
rvault browser enable
```
不要加载顶层的 `extension/` 文件夹。Helium 必须加载构建好的 `chrome-mv3-prod` 文件夹。
### 浏览器集成故障排除
如果扩展提示 native host 不可用:
```
rvault browser disable
rvault browser enable
```
然后在 `chrome://extensions` 中重新加载扩展。
扩展 ID 由 manifest key 固定。预期的 Helium 扩展 ID 为:
```
gnfmkmiklgghclejbbdmjgcldajahfhh
```
## 快速开始
初始化设置 RVault:
```
rvault setup
```
解锁密码库:
```
rvault unlock
```
添加凭据:
```
rvault add github alice:correct-horse-battery-staple
```
将凭据密码复制到剪贴板:
```
rvault get github alice
```
生成密码并将其复制到剪贴板:
```
rvault generate --length 20 --special-characters
```
启动终端 UI:
```
rvault
```
锁定密码库:
```
rvault lock
```
## 备份和还原
备份是完整的加密二进制恢复包。备份是供密码库所有者使用的,而不是用于共享选定的条目。
创建备份:
```
rvault backup create --out rvault.rvault-backup
```
还原备份:
```
rvault backup restore rvault.rvault-backup
```
跳过交互式还原确认:
```
rvault backup restore rvault.rvault-backup --yes
```
还原会在确认后替换本地的 RVault 数据。请将备份文件保存在你可控的安全位置。
## 加密导出和导入
导出文件是加密的二进制 `.rvault-export` 文件,用于与另一个 RVault 用户共享选定条目。
接收方获取其公共的 RVault 身份码:
```
rvault unlock
rvault identity
```
发送方为该接收方导出一个条目:
```
rvault export --to rvault1-recipient-code --entry github alice --out github.rvault-export
```
发送方可以导出多个选定的条目:
```
rvault export --to rvault1-recipient-code \
--selected github:alice \
--selected email:alice@example.com \
--out shared.rvault-export
```
接收方导入该文件:
```
rvault unlock
rvault import shared.rvault-export
```
冲突快捷方式:
```
rvault import shared.rvault-export --overwrite-all
rvault import shared.rvault-export --skip-all
```
只有接收方身份才能解密导出文件。
## TUI 快捷键
### 主界面表格
| 按键 | 操作 |
| --- | --- |
| `Up` / `Down` | 在条目间移动 |
| `Enter` | 将所选密码复制到剪贴板 |
| `a` | 添加新条目 |
| `e` | 编辑所选条目 |
| `d` | 删除所选条目 |
| `p` | 固定或取消固定所选条目 |
| `i` | 复制本设备的公共身份码 |
| `b` | 创建备份 |
| `r` | 还原备份 |
| `x` | 导出所选条目 |
| `m` | 导入加密的导出文件 |
| `S` | 打开排序选择 |
| `t` | 打开主题选择 |
| `Tab` | 切换到密码生成器 |
| `q` / `Esc` | 退出 |
| `Shift+Q` | 锁定并退出 |
### 生成器视图
| 按键 | 操作 |
| --- | --- |
| `Left` / `Right` | 减少或增加密码长度 |
| `s` | 切换特殊字符 |
| `Enter` | 生成密码并将其复制 |
| `Tab` | 返回主表格 |
| `q` / `Esc` | 退出 |
### 选择对话框
| 按键 | 操作 |
| --- | --- |
| `Up` / `Down` | 在选项间移动 |
| `j` / `k` | 在排序和主题选择中移动选项 |
| `Enter` | 确认 |
| `q` / `Esc` | 关闭对话框 |
## RVault 的工作原理
RVault 分为三个 Rust crate 和一个浏览器扩展:
- `rvault-core` 负责处理配置、keystore 管理、加密、会话、二进制封装、备份、身份验证、导出/导入、存储以及剪贴板集成。
- `rvault-cli` 构建 `rvault` 二进制文件、CLI 命令以及 native messaging host。
- `rvault-tui` 提供终端 UI。
- `extension` 包含用于 Helium 的 Plasmo MV3 扩展。
在设置时,RVault 会将主密码的哈希值存储在配置目录中,并使用从主密码派生的密钥创建一个加密的本地 keystore 文件。
当密码库解锁后,受保护的操作将使用活动会话密钥,而无需在每个命令执行时都要求输入主密码。
浏览器集成使用 Chrome 风格的 native messaging。当扩展发送 native message 时,Helium 会直接启动 `rvault`。`rvault browser enable` 仅注册 native messaging manifest,它不会启动后台守护进程。
## 从源码构建和测试
构建 Rust crate:
```
cargo build
```
运行 Rust 测试:
```
cargo test -p rvault-core
cargo test -p rvault-cli
cargo test -p rvault-tui
cargo check
```
构建并测试扩展:
```
cd extension
bun install
bun test
bun run build
```
创建本地扩展 ZIP 包:
```
cd extension/build/chrome-mv3-prod
zip -r ../../../rvault-extension-1.2.0.zip .
```
该 ZIP 包必须将 `manifest.json` 包含在 ZIP 根目录下。
## 发布检查清单
针对 `1.2.0` 版本:
1. 确认 `Cargo.toml`、`Cargo.lock` 和 `extension/package.json` 中的版本号为 `1.2.0`。
2. 运行 Rust 检查:
```
cargo test -p rvault-core
cargo test -p rvault-cli
cargo test -p rvault-tui
cargo check
```
3. 运行扩展检查:
```
cd extension
bun test
bun run build
```
4. 打标签并推送发布:
```
./release-rvault 1.2.0
```
cargo-dist 发布工作流会构建 CLI 安装程序。一个独立的扩展发布工作流会在 GitHub Release 创建后,构建并上传 `rvault-extension-1.2.0.zip`,以便在 Helium 中进行本地安装。
## 当前限制
- 浏览器扩展在 `1.2.0` 版本中仅支持本地分发;尚未在 Chrome Web Store 上发布。
- 浏览器 native host 注册专门针对 macOS 上的 Helium。
- 此版本不包含对 Firefox 的支持。
- RVault 不提供云端托管的同步服务。
- 导出/导入是加密的接收方共享,而不是明文导出。
- 备份是完整的恢复文件,并在还原时会替换本地的 RVault 数据。
## 许可证
采用 `MIT` 或 `Apache-2.0` 双重许可。
标签:Rust, SQLite, 可视化界面, 密码管理器, 数据加密, 浏览器扩展, 终端UI, 网络流量审计, 通知系统