Skip to content

FirmFlow On-Premise Installation Guide (Docker)

This guide walks you through deploying the FirmFlow stack on your own hardware using Docker Compose.

For a streamlined experience, use the provided installation wizard:

chmod +x scripts/setup-wizard.sh
./scripts/setup-wizard.sh
This script automates environment variable generation, pulls modern containers, and initializes the database.

Prerequisites

  • Ubuntu 22.04 LTS or Windows Server (with WSL2 & Docker Desktop).
  • Docker Engine & Docker Compose V2.
  • Minimum Specifications: 4-Core CPU, 16GB RAM, 500GB SSD.

1. Prepare the Directory Structure

Create a highly secure directory for FirmFlow data on the host machine:

mkdir -p /opt/firmflow/{pgdata,uploads}
chmod 700 /opt/firmflow

2. Setup Environment Variables

Create the .env file in the root directory:

# Core
NODE_ENV="production"
AUTH_SECRET="<GENERATE_A_LONG_RANDOM_STRING_HERE>"
NEXTAUTH_URL="https://portal.yourfirm.com"

# Database
DATABASE_URL="postgresql://firmflow:secure_db_pass@db:5432/firmflow"

# Licensing & AI Bridge
GOOGLE_GENAI_API_KEY="<PROVIDED_BY_FIRMFLOW_TEAM>"
LICENSE_KEY="<YOUR_PURCHASED_LICENSE_KEY>"

3. Launch the Stack

Using the provided docker-compose.yml:

docker compose up -d
This will automatically spin up: 1. db: The highly-tuned PostgreSQL instance. 2. web: The Next.js application listening on port 3000.

4. Run Initial Migrations

Before logging in, you must initialize the database schema.

docker compose exec web npx prisma db push

5. Reverse Proxy Configuration

You exposed port 3000 via Docker. You must terminate SSL using Nginx or Caddy. Ensure you pass the required trust headers:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
}

6. Setup Initial Admin

Open the application URL. Since the DB is fresh, navigate to /register (if open) or use the terminal to seed the main admin user, and begin configuring your firm settings.