mirror of
https://github.com/shuaiplus/nodewarden.git
synced 2026-06-20 13:00:39 +00:00
Remove English README file
This commit is contained in:
-200
@@ -1,200 +0,0 @@
|
|||||||
# NodeWarden
|
|
||||||
|
|
||||||
An alternative implementation of the Bitwarden server API running on Cloudflare Workers, designed for personal use.
|
|
||||||
|
|
||||||
English | [中文](./README.md)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⚠️ Important Notice
|
|
||||||
|
|
||||||
|
|
||||||
> **Disclaimer**
|
|
||||||
> This project is for educational purposes only. We are not responsible for any data loss. Regular backups are strongly recommended.
|
|
||||||
> This project is not associated with Bitwarden. Do not report issues to Bitwarden's official support channels.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- ✅ Full password, note, card, and identity management
|
|
||||||
- ✅ Folders and favorites
|
|
||||||
- ✅ File attachments (R2 storage, 100MB limit)
|
|
||||||
- ✅ Import/Export functionality
|
|
||||||
- ✅ Website icons
|
|
||||||
- ✅ Login rate limiting (lockout after 5 failed attempts for 15 minutes)
|
|
||||||
- ✅ API rate limiting (60 requests/minute)
|
|
||||||
- ✅ End-to-end encryption (server cannot access plaintext)
|
|
||||||
- ✅ Compatible with all official Bitwarden clients
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
### One-Click Deploy
|
|
||||||
|
|
||||||
Click the button below to deploy to Cloudflare Workers:
|
|
||||||
|
|
||||||
[](https://deploy.workers.cloudflare.com/?url=https://github.com/shuaiplus/nodewarden)
|
|
||||||
|
|
||||||
**Deployment Steps:**
|
|
||||||
|
|
||||||
1. Sign in with GitHub and authorize
|
|
||||||
2. Log in to your Cloudflare account
|
|
||||||
3. **Important**: Set `JWT_SECRET` to a strong random string (use `openssl rand -hex 32`)
|
|
||||||
4. KV storage and R2 bucket will be auto-provisioned
|
|
||||||
5. Click Deploy and wait for completion
|
|
||||||
|
|
||||||
> ⚠️ **Reminder**: Always use a strong random `JWT_SECRET`. Never use example values or simple strings!
|
|
||||||
|
|
||||||
### Client Setup
|
|
||||||
|
|
||||||
After deployment, open any Bitwarden client:
|
|
||||||
|
|
||||||
1. Click Settings (⚙️)
|
|
||||||
2. Select "Self-hosted environment"
|
|
||||||
3. Enter Server URL: `https://your-project.workers.dev`
|
|
||||||
4. Save and return to login page
|
|
||||||
|
|
||||||
**First-time registration**: Visit your Workers URL directly to register an account.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Manual Deployment
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Clone
|
|
||||||
git clone https://github.com/shuaiplus/nodewarden.git
|
|
||||||
cd nodewarden
|
|
||||||
|
|
||||||
# Install
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# Login to Cloudflare
|
|
||||||
npx wrangler login
|
|
||||||
|
|
||||||
# Create KV storage
|
|
||||||
npx wrangler kv namespace create VAULT
|
|
||||||
# Copy the id to wrangler.toml [[kv_namespaces]]
|
|
||||||
|
|
||||||
# Create R2 bucket (for file attachments)
|
|
||||||
npx wrangler r2 bucket create nodewarden-attachments
|
|
||||||
|
|
||||||
# Set JWT secret (use a strong random string)
|
|
||||||
npx wrangler secret put JWT_SECRET
|
|
||||||
# Recommended: openssl rand -hex 32
|
|
||||||
|
|
||||||
# Deploy
|
|
||||||
npm run deploy
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## NodeWarden vs Vaultwarden
|
|
||||||
|
|
||||||
NodeWarden focuses on **personal users** with core features, keeping the codebase minimal. Here's a comparison with Vaultwarden:
|
|
||||||
|
|
||||||
| Feature | NodeWarden | Vaultwarden | Notes |
|
|
||||||
|---------|:----------:|:-----------:|-------|
|
|
||||||
| Passwords/Notes/Cards/Identity | ✅ | ✅ | Full support |
|
|
||||||
| Folders & Favorites | ✅ | ✅ | Full support |
|
|
||||||
| File Attachments | ✅ | ✅ | R2 storage, 100MB limit |
|
|
||||||
| Import/Export | ✅ | ✅ | Full support |
|
|
||||||
| Website Icons | ✅ | ✅ | Proxy fetch |
|
|
||||||
| Login Rate Limiting | ✅ | ✅ | Brute-force protection |
|
|
||||||
| Single User Mode | ✅ | ✅ | Personal use |
|
|
||||||
| Bitwarden Send | ❌ | ✅ | Secure sharing |
|
|
||||||
| Two-Factor Auth (2FA) | ❌ | ✅ | TOTP/WebAuthn etc |
|
|
||||||
| Emergency Access | ❌ | ✅ | Emergency contacts |
|
|
||||||
| Organizations/Teams | ❌ | ✅ | Multi-user collaboration |
|
|
||||||
| Real-time Sync (WebSocket) | ❌ | ✅ | Instant multi-device push |
|
|
||||||
| Email Notifications | ❌ | ✅ | Requires SMTP |
|
|
||||||
| Change Master Password | ❌ | ✅ | Re-encrypt vault |
|
|
||||||
| Admin Panel | ❌ | ✅ | Backend management |
|
|
||||||
|
|
||||||
> **💡 Recommendation**
|
|
||||||
> If you only need personal password management, NodeWarden is sufficient and easier to deploy.
|
|
||||||
> For team features or advanced capabilities, consider [Vaultwarden](https://github.com/dani-garcia/vaultwarden).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Update Guide
|
|
||||||
|
|
||||||
If you deployed via the one-click button, the code is forked to your GitHub account. To get the latest updates:
|
|
||||||
|
|
||||||
### Method 1: Manual Sync (Recommended)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# In your forked repository
|
|
||||||
git remote add upstream https://github.com/shuaiplus/nodewarden.git
|
|
||||||
git fetch upstream
|
|
||||||
git merge upstream/main
|
|
||||||
git push origin main
|
|
||||||
```
|
|
||||||
|
|
||||||
### Method 2: GitHub Actions Auto-Sync
|
|
||||||
|
|
||||||
The project includes built-in auto-sync configuration. In your forked repository:
|
|
||||||
|
|
||||||
1. Go to the **Actions** tab
|
|
||||||
2. If you see "Workflows aren't being run on this forked repository", click **I understand my workflows, go ahead and enable them**
|
|
||||||
3. Auto-sync will run daily at 2:00 AM UTC
|
|
||||||
4. You can also manually trigger by clicking **Sync Fork with Upstream** → **Run workflow**
|
|
||||||
|
|
||||||
> **⚠️ Note**: If you've modified the code, auto-sync may cause merge conflicts that require manual resolution.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Limitations
|
|
||||||
|
|
||||||
- Single user only (personal use)
|
|
||||||
- No two-factor authentication
|
|
||||||
- No organization/team support
|
|
||||||
- Cannot change master password
|
|
||||||
- File attachment size limit: 100MB
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Tech Stack
|
|
||||||
|
|
||||||
- **Runtime**: Cloudflare Workers
|
|
||||||
- **Data Storage**: Cloudflare KV
|
|
||||||
- **File Storage**: Cloudflare R2
|
|
||||||
- **Language**: TypeScript
|
|
||||||
- **Encryption**: Client-side AES-256-CBC, JWT with HS256
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Security Recommendations
|
|
||||||
|
|
||||||
1. **Strong JWT_SECRET**: Generate with `openssl rand -hex 32`
|
|
||||||
2. **Regular Backups**: Export your vault and store securely
|
|
||||||
3. **HTTPS Access**: Cloudflare Workers provides HTTPS by default
|
|
||||||
4. **Access Control**: Use Cloudflare WAF rules or IP whitelist
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## FAQ
|
|
||||||
|
|
||||||
**Q: How to backup data?**
|
|
||||||
A: In the client, select "Export Vault" and save the JSON file.
|
|
||||||
|
|
||||||
**Q: Forgot master password?**
|
|
||||||
A: Cannot be recovered due to end-to-end encryption. Keep your master password safe.
|
|
||||||
|
|
||||||
**Q: Can multiple people use it?**
|
|
||||||
A: Not recommended. This project is designed for single user. Use Vaultwarden for multi-user scenarios.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Acknowledgments
|
|
||||||
|
|
||||||
- [Bitwarden](https://bitwarden.com/) - Original design and clients
|
|
||||||
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Server implementation reference
|
|
||||||
- [Cloudflare Workers](https://workers.cloudflare.com/) - Serverless platform
|
|
||||||
Reference in New Issue
Block a user