关于 LegacyShield
Legacy Shield 是面向需要保存重要文件并为亲友安排紧急访问的人群的数字保险库。文件在浏览器中加密,基础设施部署于欧盟。
主要功能
- 01浏览器端文件加密
- 02只读紧急访问
- 03PDF、图片和文档查看器
- 04分类、标签与收藏
- 05到期跟踪
- 06欧盟托管基础设施
适用场景
- 01保存护照和保险单
- 02保管遗嘱与房产契据
- 03为亲友预先安排文件访问
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Legacy Shield
用于存放重要文件并支持紧急访问的安全数字保险库。100% 欧洲托管。
Legacy Shield 是一款以隐私为先的文件保险库,专为存储最重要的文件而设计,例如护照、遗嘱、保险单和房产契据,并内置面向亲友的紧急访问功能。与通用云存储不同,Legacy Shield 使用客户端加密和专属欧洲基础设施,确保最大程度的隐私与安全。
🌟 主要功能
- 🔐 零知识加密:文件在上传前先在浏览器中加密
- 🚨 紧急访问:亲友可使用解锁短语访问保险库(只读)
- 🇪🇺 欧洲数据主权:100% 欧盟基础设施(托管于德国 Hetzner)
- 📱 文档查看器:在浏览器中查看 PDF、图片和文档
- 🏷️ 智能整理:分类、标签、收藏、到期跟踪
- ✅ 原生符合 GDPR:以隐私为先的设计,默认合规
- 🛡️ 由 BitAtlas 提供支持:所有文件存储和密钥管理均使用 BitAtlas 零知识加密层。
🏗️ 架构
Monorepo 结构:
legacy-shield/
├── packages/
│ ├── web/ # Next.js frontend (React + TypeScript)
│ ├── api/ # Express backend (Node.js + TypeScript)
│ └── shared/ # Shared types and utilities
├── infrastructure/ # Deployment configs
├── docker-compose.yml
├── product-spec.md # Product specification
└── architecture-spec.md # Technical architecture
技术栈:
- 前端:Next.js 14、TypeScript、TailwindCSS、Web Crypto API
- 后端:Node.js、Express、Prisma ORM、PostgreSQL
- 存储:Hetzner Object Storage(兼容 S3)
- 托管:Hetzner Cloud(德国)
- 支付:Stripe
🚀 快速开始
前置条件
- Node.js 20+ 和 npm 10+
- Docker 和 Docker Compose
- Git
1. 克隆并安装
cd /Users/stephenballot/Documents/LegacyShield
npm install
2. 启动基础设施
# Start PostgreSQL, Redis, and MinIO (local S3)
docker compose up -d
# Verify services are running
docker ps
注意:也可以使用
npm run docker:dev作为快捷方式。
3. 配置环境
# Copy example environment file
cp .env.example .env
# Edit .env with your values (defaults work for local development)
4. 初始化数据库
cd packages/api
# Generate Prisma Client
npm run db:generate
# Run database migrations
DATABASE_URL="postgresql://legacyshield:devpassword@localhost:5432/legacyshield_dev" npm run db:migrate
# Optional: seed with test data
npm run db:seed
cd ../..
注意:必须提供 DATABASE_URL,因为 Prisma 不会自动读取根目录下的
.env文件。详情请参阅 GETTING_STARTED.md。
5. 启动开发服务器
# Start both frontend and backend
npm run dev
# Or start individually:
npm run dev:web # Frontend at http://localhost:3000
npm run dev:api # Backend at http://localhost:4000
6. 访问应用
- 前端:http://localhost:3000
- API:http://localhost:4000
- MinIO 控制台:http://localhost:9001(minioadmin / minioadmin)
📚 开发
可用脚本
# Development
npm run dev # Start all services
npm run dev:web # Start frontend only
npm run dev:api # Start backend only
# Building
npm run build # Build all packages
npm run build:web # Build frontend
npm run build:api # Build backend
# Testing
npm run test # Run all tests
npm run lint # Lint all packages
npm run type-check # TypeScript type checking
# Database
cd packages/api
npm run db:migrate # Run migrations
npm run db:seed # Seed database
npm run db:studio # Open Prisma Studio
npm run db:reset # Reset database
# Docker
docker compose up -d # Start Docker services
docker compose down # Stop Docker services
docker compose logs -f # View Docker logs
提示:详细的设置说明请参阅 GETTING_STARTED.md
项目结构
packages/
├── web/ # Frontend (Next.js)
│ ├── src/
│ │ ├── app/ # Next.js App Router
│ │ │ ├── (auth)/ # Auth pages (login, register)
│ │ │ ├── (dashboard)/ # Protected dashboard pages
│ │ │ └── emergency-access/ # Public emergency portal
│ │ ├── components/ # React components
│ │ ├── lib/
│ │ │ ├── crypto/ # Client-side encryption
│ │ │ ├── api/ # API client
│ │ │ └── utils/ # Utilities
│ │ ├── hooks/ # Custom React hooks
│ │ ├── store/ # Zustand stores
│ │ └── types/ # TypeScript types
│ └── package.json
│
├── api/ # Backend (Express)
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Express middleware
│ │ ├── services/ # Business logic
│ │ ├── models/ # Data models
│ │ ├── jobs/ # Background jobs
│ │ ├── utils/ # Utilities
│ │ └── server.ts # Main server file
│ ├── prisma/
│ │ ├── schema.prisma # Database schema
│ │ └── migrations/ # Database migrations
│ └── package.json
│
└── shared/ # Shared code
├── src/
│ ├── types/ # Shared TypeScript types
│ ├── constants/ # Shared constants
│ └── utils/ # Shared utilities
└── package.json
🔒 安全
Legacy Shield 实现了零知识架构:
- 客户端加密:所有文件在上传前先在浏览器中加密
- 密钥派生:使用 PBKDF2(100k 次迭代)从密码派生主密钥
- 单文件密钥:每个文件均使用唯一的 AES-256-GCM 密钥加密
- 双密钥系统:文件同时使用所有者密钥和紧急密钥加密
- 不存储明文:服务器不会接触未加密的文件或密钥
- 强制双重身份验证:所有用户都必须使用双重身份验证
加密流程
Password → PBKDF2 → Master Key → Encrypts file keys → AES-256-GCM → Encrypted file
↓
Hetzner Object Storage (Germany)
🇪🇺 欧洲数据主权
所有基础设施均仅托管于欧盟境内:
- 计算:Hetzner Cloud(德国法尔肯施泰因)
- 数据库:Hetzner Managed PostgreSQL(德国)
- 存储:Hetzner Object Storage(德国)
- 备份:自动备份至德国纽伦堡
您的数据绝不会离开欧洲,并受到以下法规保护:
- GDPR(《通用数据保护条例》)
- 德国 BDSG(《联邦数据保护法》)
- 不受美国 CLOUD Act 管辖
📖 文档
🧪 测试
# Run all tests
npm run test
# Run tests for specific package
npm run test --workspace=web
npm run test --workspace=api
# Run tests in watch mode
npm run test:watch --workspace=web
# Run e2e tests
npm run test:e2e
🚀 部署
生产环境部署(Hetzner Cloud)
- 基础设施设置:参见 infrastructure/README.md
- 环境变量:使用真实凭据配置生产环境
.env - 数据库迁移:在生产数据库上运行迁移
- 部署:使用 GitHub Actions 或手动部署
# Build for production
npm run build
# Deploy to Hetzner (manual)
# See infrastructure/deploy.sh
CI/CD
GitHub Actions 工作流会自动:
- 在每个 PR 上运行测试
- 在
develop分支上构建并部署到预发布环境 - 在
main分支上构建并部署到生产环境
🤝 参与贡献
这是一个私有项目。开发团队请:
- 创建功能分支:
git checkout -b feature/your-feature - 修改并提交:
git commit -m "Add your feature" - 推送分支:
git push origin feature/your-feature - 在 GitHub 上创建 Pull Request
代码规范
- TypeScript:已启用严格模式
- Linting:使用 Airbnb 配置的 ESLint
- 格式化:Prettier(提交时自动运行)
- 提交:遵循 Conventional Commits 格式
📊 定价
- 免费套餐:15 份文档,1 位紧急联系人
- Pro 套餐:每月 $10 或终身 $500
- 100 份文档
- 5 位紧急联系人
- 高级功能(到期跟踪、分享、审计日志)
📄 许可证
版权所有 © 2026 Legacy Shield。保留所有权利。
此软件为专有软件。禁止未经授权的复制或分发。
🆘 支持
- 文档:参见根目录中的 spec 文件
- 问题:GitHub Issues(私有仓库)
- 电子邮件:[email protected]
用 ❤️ 在欧洲构建。你的数据、你的隐私、你的传承。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。