Installing VerifyWise
Step-by-step guide to deploy VerifyWise in your environment.
Prerequisites
VerifyWise runs on your infrastructure. Before you start, make sure you have these in place:
Server
- •Linux server (Ubuntu 20.04+ recommended)
- •2 GB RAM minimum, 2 CPU cores
- •20 GB free disk space
Software
- •Docker and Docker Compose (production)
- •Node.js 22 and npm (development only)
- •Git
Networking
- •Port 3000 (backend API)
- •Port 8080 (frontend, production) or 5173 (frontend, development)
- •Port 5432 for PostgreSQL and 6379 for Redis (can be internal-only)
Pick a deployment method
Production (Docker Compose)
One install script, everything containerized. Use this unless you plan to modify the source code.
Development (npm)
Frontend and backend run separately with hot reload. Use this if you want to contribute or customize.
Production setup
1. Download the install files
mkdir verifywise && cd verifywise
curl -O https://raw.githubusercontent.com/verifywise-ai/verifywise/develop/install.sh2. Edit environment variables
.env.prod is not published in the repository, so create it yourself in the same folder as install.sh. The installer checks every secret below and refuses to start any container while one is empty.
# Database
DB_USER=verifywise
DB_PASSWORD=your-secure-password
DB_NAME=verifywise
DB_PORT=5432
# Ports published on the host
BACKEND_PORT=3000
FRONTEND_PORT=8080
# First admin account
SUPERADMIN_EMAIL=admin@example.com
SUPERADMIN_PASSWORD=your-admin-password
# Secrets: generate each with openssl rand -base64 32
JWT_SECRET=
REFRESH_TOKEN_SECRET=
ENCRYPTION_KEY=
ENCRYPTION_PASSWORD=
AI_GATEWAY_INTERNAL_KEY=
EVAL_SERVER_INTERNAL_KEY=
# Encryption algorithm
ENCRYPTION_ALGORITHM=aes-256-cbc
MOCK_DATA_ON=falseDo not set BACKEND_URL or FRONTEND_URL here. Compose wires the services together internally and derives both from BACKEND_PORT and FRONTEND_PORT.
3. Run the installer
chmod +x ./install.sh
./install.shThe script pulls Docker images, creates the database and starts all services. When it finishes, open your FRONTEND_URL in a browser.
Development setup
This runs frontend and backend separately with hot reload. You'll need 2 terminal windows (3 if you want the BullMQ worker for background jobs).
1. Clone and install
git clone https://github.com/bluewave-labs/verifywise.git
cd verifywise
cd Clients && npm install
cd ../Servers && npm install2. Start PostgreSQL and Redis
The easiest way is Docker containers:
docker run -d --name mypostgres -p 5432:5432 \
-e POSTGRES_PASSWORD=your_password postgres
docker run -d --name myredis -p 6379:6379 redis
docker exec -it mypostgres psql -U postgres -c "CREATE DATABASE verifywise;"3. Configure and start
# Copy the dev environment file
cp .env.dev Servers/.env
# Terminal 1: backend with auto-restart
cd Servers && npm run watch
# Terminal 2: frontend with hot reload
cd Clients && npm run devFrontend: http://localhost:5173. Backend API: http://localhost:3000.
Environment variables reference
| Variable | Description |
|---|---|
| BACKEND_PORT | Port the API is published on (default: 3000) |
| FRONTEND_PORT | Port the web app is published on (default: 8080) |
| JWT_SECRET | Secret for signing access tokens |
| REFRESH_TOKEN_SECRET | Secret for signing refresh tokens |
| DB_USER | PostgreSQL user |
| DB_PASSWORD | PostgreSQL password. Compose passes this to the database as POSTGRES_PASSWORD, so set DB_PASSWORD, not POSTGRES_PASSWORD |
| DB_NAME | Database name (default: verifywise) |
| SUPERADMIN_EMAIL | Email address of the first admin account |
| SUPERADMIN_PASSWORD | Password for the first admin account |
First login
VerifyWise ships with no default accounts. The first time you open the app, you'll see a registration page where you create the admin account.
- Open your VerifyWise URL in a browser
- Fill in the admin registration form
- Log in with the credentials you just created
- You'll land on the dashboard
SSL setup
For production, put a reverse proxy (Nginx, Caddy, or your cloud load balancer) in front of VerifyWise and terminate TLS there. Free certificates are available through Let's Encrypt.
- Install Nginx (or Caddy) on your server
- Obtain a certificate for your domain (Certbot handles Let's Encrypt automatically)
- Configure the proxy to forward traffic to ports 3000 (API) and 8080 (frontend)
- Update
BACKEND_URLandFRONTEND_URLin.env.prodto usehttps:// - Restart the services:
docker compose restart