DinanathDash/Envault
GitHub: DinanathDash/Envault
一个基于 Next.js 和 Supabase 构建的现代化自托管机密管理平台,提供银行级加密、团队协作 RBAC 和高性能 Go CLI。
Stars: 4 | Forks: 2
# Envault
**Envault** 是一个使用 Next.js、Supabase 和 Tailwind CSS 构建的安全、现代保险库应用程序。它提供了一个强大的认证系统和一个时尚的用户界面,用于存储和管理敏感信息。
## 功能特性
- **银行级安全**:采用 AES-256-GCM 加密,具备主/数据密钥层级结构和自动密钥轮换。
- **项目工作区**:将机密信息组织到不同的项目中,以便更好地管理。
- **语义化路由**:简洁、GitHub 风格的 URL(`/[username]/[project-slug]`),便于共享和导航。
- **团队协作**:通过严格的基于角色的访问控制(Role-Based Access Control)安全地共享项目:
- _Owner(所有者)_:完全的管理控制权(重命名、删除、管理团队)。
- _Editor(编辑者)_:活跃贡献者(读/写机密,请求共享)。
- _Viewer(查看者)_:对变量的只读访问权限。
- **安全认证**:由 Supabase Auth 驱动,提供强大的用户管理,包括对无密码、生物识别登录的 **Passkey** 支持。
- **现代 UI/UX**:使用 Tailwind CSS、Shadcn UI 和 Framer Motion 构建,提供优质体验。
- **交互式 3D 元素**:由 React Three Fiber 驱动的高性能 3D 视觉效果。
- **键盘优先**:通过完全可定制且无冲突的热键进行高效导航。
- **响应式设计**:完全响应式布局,可在桌面和移动设备上无缝运行。
- **深色模式支持**:内置支持亮色和深色主题。
- **CLI 支持**:直接从终端管理您的机密,具有自动非阻塞后台更新检查功能。
- **实时系统状态**:通过专用状态页面监控系统运行状况、活跃事件和历史正常运行时间。
- **专用支持页面**:应用内集成支持功能,帮助用户高效管理故障排除选项。
- **全面的文档**:集成文档站点,包含指南、API 参考和 CLI 文档。
## CLI
Envault 附带了一个高性能的 Go CLI,让您无需离开终端即可管理机密。
### 安装
**macOS & Linux (通用)**
```
curl -fsSL https://raw.githubusercontent.com/DinanathDash/Envault/main/install.sh | sh
```
**macOS (Homebrew)**
```
brew tap DinanathDash/envault
brew install --formula envault
```
Homebrew cask 安装方式已被弃用。如果您是通过 cask 安装的,请使用以下命令迁移:
```
brew uninstall --cask dinanathdash/envault/envault
brew install --formula envault
```
欲了解更多详情,请查看 [CLI 文档](./cli-go/README.md)。
### 本地测试
Envault 本地开发现在使用带有 HTTPS 主机名的 `portless`。
```
npm install -g portless
```
要将 Envault CLI 与本地开发服务器一起使用,请设置 `ENVAULT_CLI_URL` 环境变量:
```
export ENVAULT_CLI_URL="https://envault.localhost/api/cli"
envault login
```
## 安全架构
Envault 使用混合加密模型以确保最大程度的安全性:
1. **Master Key(主密钥)**:存储在环境变量中的 32 字节密钥,仅用于加密/解密 Data Keys(数据密钥)。
2. **Data Keys(数据密钥)**:用于加密实际数据的唯一密钥。它们以加密形式存储在数据库中。
3. **Key Rotation(密钥轮换)**:数据密钥可以轮换。活动密钥缓存在 Redis 中,在不影响安全性的前提下实现高性能。
4. **AES-256-GCM**:用于所有机密的行业标准认证加密。
## 技术栈
- **Framework**: [Next.js](https://nextjs.org/) (App Router)
- **Database & Auth**: [Supabase](https://supabase.com/)
- **KV Store**: [Upstash Redis](https://upstash.com/)
- **Documentation**: [Fumadocs](https://www.fumadocs.dev/)
- **Styling**: [Tailwind CSS](https://tailwindcss.com/)
- **UI Components**: [Shadcn UI](https://ui.shadcn.com/) / [Radix UI](https://www.radix-ui.com/)
- **3D & Graphics**: [React Three Fiber](https://r3f.docs.pmnd.rs/) / [Three.js](https://threejs.org/)
- **Animations**: [Framer Motion](https://www.framer.com/motion/)
- **Icons**: [Lucide React](https://lucide.dev/)
- **State Management**: [Zustand](https://github.com/pmndrs/zustand)
- **Forms**: [React Hook Form](https://react-hook-form.com/) + [Zod](https://zod.dev/)
- **Notifications**: [Sonner](https://sonner.emilkowal.ski/)
- **Analytics**: [Vercel Analytics](https://vercel.com/analytics)
## 入门指南
按照以下步骤在本地运行项目。
### 前置条件
- 已安装 Node.js 18+
- 已设置 Supabase 项目
### 安装
1. **克隆仓库**
git clone https://github.com/dinanathdash/envault.git
cd envault
2. **安装依赖**
npm install
# 或
yarn install
# 或
pnpm install
# 或
bun install
3. **环境设置**
复制示例环境文件:
cp .env.example .env.local
打开 `.env.local` 并添加您的 Supabase 凭证:
NEXT_PUBLIC_SUPABASE_URL=your-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
# 生成安全密钥: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ENCRYPTION_KEY=your-64-char-hex-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
UPSTASH_REDIS_REST_URL=your-upstash-url
UPSTASH_REDIS_REST_TOKEN=your-upstash-token
# 用于安全地签名和验证前端 API 变更 (POST, PUT, DELETE, PATCH)
NEXT_PUBLIC_API_SIGNATURE_SALT=your-secure-random-hmac-secret
4. **运行开发服务器**
npm run dev
在浏览器中打开 [https://envault.localhost:1355](https://envault.localhost:1355) 查看结果。
5. **测试邮件配置(可选)**
要验证您的 Resend API 配置是否正常工作,您可以给自己发送一封测试邮件:
npm run test:email -- your-email@example.com
## Monorepo 设置图谱
此仓库包含多个可发布/运行时组件。克隆和贡献时请参考此图谱。
| 文件夹 | 用途 | 安装 | 常用命令 |
|---|---|---|---|
| `./` | 主 Next.js 应用 | `npm install` | `npm run dev`, `npm run build`, `npm run lint`, `npm run test:all` |
| `cli-go/` | Go CLI (`envault`) | `go mod download` | `go test ./...`, `go build ./...` |
| `src/lib/sdk/` | npm SDK 包 (`@dinanathdash/envault-sdk`) | `npm install` | `npm run typecheck`, `npm run build` |
| `mcp-server/` | npm MCP 包 (`@dinanathdash/envault-mcp-server`) | `npm install` | `npm run check`, `npm start` |
| `cli-wrapper/` | 用于 CLI 安装/引导的 npm 包装器 | `npm install` | `node install.js` |
### 首次贡献者流程
1. 克隆并安装根目录依赖:
```
git clone https://github.com/dinanathdash/envault.git
cd envault
npm install
```
2. 复制 env 文件并配置所需密钥:
```
cp .env.example .env.local
```
3. 为可发布的子包安装包本地依赖:
```
cd src/lib/sdk && npm install
cd ../../.. && cd mcp-server && npm install
cd ..
```
4. 一次性验证所有内容:
```
npm run lint
npm run test:all
npm run build
```
## 包发布 + 工作流
### npm packages
- SDK: `@dinanathdash/envault-sdk` (源码: `src/lib/sdk/`)
- MCP: `@dinanathdash/envault-mcp-server` (源码: `mcp-server/`)
### GitHub Actions workflows
- CLI 发布工作流: `.github/workflows/publish.yml`
- SDK 发布工作流: `.github/workflows/publish-sdk.yml`
- MCP 发布工作流: `.github/workflows/publish-mcp.yml`
每个包在其自己的文件夹中发生更改时,通过 semantic-release 独立进行版本控制:
- CLI 标签: `v`
- SDK 标签: `sdk-v`
- MCP 标签: `mcp-v`
这使得 SDK 和 MCP 的发布流与 CLI 版本更新解耦。
### 本地预发布检查
```
npm run sdk:check
npm run mcp:check
```
### 手动发布命令
```
npm run sdk:publish
npm run mcp:publish
```
## 版本和更新命令
使用这些命令,以便用户可以快速验证他们使用的版本并安全地更新。
### CLI (`envault`)
检查已安装的 CLI 版本:
```
envault --version
```
通过 Homebrew formula 更新:
```
brew update
brew untap dinanathdash/envault || true
brew tap dinanathdash/envault
brew upgrade --formula envault
```
### SDK (`@dinanathdash/envault-sdk`)
检查已安装和最新的 SDK 版本:
```
npm ls @dinanathdash/envault-sdk
npm view @dinanathdash/envault-sdk version
```
更新 SDK:
```
npm install @dinanathdash/envault-sdk@latest
```
运行时行为:
- 当存在较新的 SDK 版本时,SDK 会打印警告。
- 当版本低于服务器配置的最低支持版本时,SDK 会阻止执行。
### MCP (`@dinanathdash/envault-mcp-server`)
检查已安装的 MCP 版本:
```
npx -y @dinanathdash/envault-mcp-server --version
```
检查 MCP 更新可用性:
```
npx -y @dinanathdash/envault-mcp-server --check-update
```
全局更新 MCP:
```
npm install -g @dinanathdash/envault-mcp-server@latest
```
## 许可证
Envault 是在 Functional Source License (FSL) 下提供的源码可用软件。您可以自由阅读代码、对其进行安全审计,并为了自己的内部使用而自行托管。严格禁止使用此代码提供竞争性商业服务。24 个月后,特定版本的许可证将自动转换为 MIT License。
有关完整的许可证文本,请参阅 [LICENSE](LICENSE) 文件。
标签:3D 可视化, AES-256, GitOps, Go CLI, Go 语言, HTTPX, meg, Passkey, RBAC, React Three Fiber, Secrets Manager, Supabase, Tailwind CSS, Vault, 信息安全, 团队协作, 威胁情报, 安全助手, 密钥轮换, 开发者工具, 搜索引擎查询, 敏感数据保护, 无密码登录, 日志审计, 权限管理, 模型越狱, 漏洞评估, 环境变量管理, 现代 UI, 端到端加密, 自动化攻击