Installation
How to install and run Envault locally
Envault is a self-hostable application. You can run it locally for development or deploy it to your own infrastructure.
Prerequisites
Before you begin, ensure you have the following installed:
- Node.js 18+ (LTS recommended)
- Supabase project (or a local Supabase instance)
- Redis (optional, for caching)
Quick Start
Clone the repository
git clone https://github.com/dinanathdash/envault.git
cd envaultInstall dependencies
We recommend using pnpm for faster installation, but npm or yarn work just as well.
npm installpnpm installyarn installbun installEnvironment Setup
Copy the example environment file to get started.
cp .env.example .env.localYou will need to populate .env.local with your Supabase credentials.
Start Development Server
npm install -g portless
npm run devVisit https://envault.localhost:1355 to see your Envault instance running.
Docker Compose
For a quick local setup with all dependencies (including Redis and Postgres), you can use Docker Compose.
version: '3.8'
services:
envault:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/envault
- ENCRYPTION_KEY=...
depends_on:
- db
- redis
db:
image: postgres:15-alpine
environment:
POSTGRES_PASSWORD: postgres
redis:
image: redis:alpinedocker-compose up -dVerify Installation
To ensure everything is working correctly:
- Sign In: Open the app and try signing in (this tests Supabase Auth).
- Create Project: Create a new project called "Test Project" (tests Database write).
- Add Secret: Add a key-value pair
TEST_KEY=123(tests Encryption).
If you see an error about ENCRYPTION_KEY missing, ensure you have generated a valid 32-byte key in your .env.local.
Troubleshooting
ENCRYPTION_KEY Error
If you see "Invalid Encryption Key", run this command to generate a valid one:
openssl rand -hex 32Add the output to your .env.local.
Database Connection Failed
Check your DATABASE_URL and ensure your Supabase project is active. If running locally, make sure your local Supabase instance is running with npx supabase start.