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, 端到端加密, 自动化攻击