A secure, self-hosted password sharing platform that allows teams to safely share credentials with customers and partners.
- 🔐 Secure vault-based password storage with per-vault encryption
- 👥 Team collaboration with role-based access control
- 🔗 Secure password sharing via encrypted links with optional PIN protection
- 📝 Customizable password templates
- 📊 Comprehensive audit logging
- 🚀 Easy deployment with Docker Compose
- Docker and Docker Compose installed
- A domain name (for production deployment)
- (Optional) SMTP credentials for email features
- Clone this repository with submodules:
git clone --recurse-submodules https://github.com/YOUR_USERNAME/keywave.git
cd keywave- Copy the environment example:
cp .env.example .env- Edit
.envwith your configuration:
- Set a secure
SECRET_KEY - Configure your domain in
SERVICE_DOMAIN - Set database credentials
- (Optional) Configure SMTP settings
- (Optional) Set initial admin credentials
- Start the services:
docker-compose up -d- Access KeyWave at your configured domain (default: http://localhost)
SECRET_KEY: A secure random string for JWT signingSERVICE_DOMAIN: Your domain name (e.g., keywave.example.com)DB_PASSWORD: Database password
ADMIN_EMAIL,ADMIN_PASSWORD,ADMIN_NAME: Create initial admin userSMTP_*: Configure email service for notifications and MFA
The platform consists of three services:
- Caddy - Reverse proxy and automatic HTTPS
- Frontend - Next.js application
- Backend - FastAPI application with PostgreSQL
┌─────────────┐
│ Caddy │
│ (Port 80) │
│ (Port 443) │
└──────┬──────┘
│
┌───┴────┐
│ │
▼ ▼
┌──────┐ ┌────────┐ ┌──────────┐
│ Next │ │FastAPI │────▶│PostgreSQL│
│ :3000│ │ :8000 │ └──────────┘
└──────┘ └────────┘
For development, you can work on the submodules independently:
cd backend
docker-compose up -d # Start PostgreSQL
uv run uvicorn app.main:app --reloadcd frontend
yarn devTo update KeyWave:
# Pull latest changes
git pull --recurse-submodules
# Rebuild and restart
docker-compose build
docker-compose up -dImportant data to backup:
- PostgreSQL database
- Vault encryption keys (stored in
vault_keysvolume) .envfile
- Always use HTTPS in production (Caddy handles this automatically)
- Keep your
SECRET_KEYsecure and never commit it - Regularly backup your data
- Monitor audit logs for suspicious activity
[Your License Here]