docs

VaultKit Deployment Guide

This document explains how to deploy VaultKit in production and production-like environments. VaultKit is designed to be easy to deploy for design partners, while remaining flexible enough for advanced infrastructure setups.

VaultKit consists of four main components:


Deployment Models

VaultKit supports two deployment models out of the box.

1. Single-Domain Deployment (Default)

Best for:

Example:

https://alpha.vaultkit.io

In this mode:

This is the recommended starting point.


2. Multi-Domain Deployment (Advanced)

Best for:

Example:

https://app.acme.com   → Console (frontend)
https://api.acme.com   → Control Plane (backend)

In this mode:

No VaultKit images need to be rebuilt — only routing changes.


Prerequisites


Directory Structure

VaultKit ships with a deployment layout under deploy/:

deploy/
  alpha/
    docker-compose.yml
    .env.example
    install.sh
    secrets/
      keys/
        vkit_priv.pem
        vkit_pub.pem

All deployment steps happen inside deploy/alpha.


Quick Start (Single-Domain)

1. Clone the Repository

git clone https://github.com/vaultkit-inc/vaultkit.git
cd vaultkit/deploy/alpha

2. Run the Installer

./install.sh

This does the following:

If .env is newly created, the script will stop and ask you to edit it.


3. Configure .env

Edit .env and set at least:

Example (single-domain):

RAILS_ENV=production

APP_HOST=https://alpha.vaultkit.io
FRONTEND_BASE_URL=https://alpha.vaultkit.io

DATABASE_URL=postgres://vaultkit:<password>@postgres:5432/vaultkit

FUNL_URL=http://funl-runtime:8080

VKIT_PRIVATE_KEY=/secrets/keys/vkit_priv.pem
VKIT_PUBLIC_KEY=/secrets/keys/vkit_pub.pem

4. Start VaultKit

docker compose up -d

Verify services:

docker compose ps

All containers should be running.


5. Access VaultKit


OIDC / SSO Configuration

VaultKit supports OIDC providers such as Okta, Auth0, Azure AD, and others.

For browser-based login:

VaultKit intentionally redirects back to the frontend after successful authentication. The frontend then exchanges the session with the backend.

This design allows:


Multi-Domain Deployment

If you want separate frontend and backend domains:

Example

app.acme.com → Console
api.acme.com → Control Plane

Required Changes

  1. Update .env:
APP_HOST=https://api.acme.com
FRONTEND_BASE_URL=https://app.acme.com
  1. Configure your reverse proxy / ingress to route:
  1. Console nginx runs in static-only mode (no API proxying required)

VaultKit images remain unchanged.


Using an External Postgres Database

By default, VaultKit runs Postgres inside Docker.

If you already have Postgres:

Example:

DATABASE_URL=postgres://vaultkit:<password>@db.acme.internal:5432/vaultkit

Secrets & Security Notes


Updating VaultKit

To update to a new version:

docker compose pull
docker compose up -d

Database migrations run automatically on container startup.


Troubleshooting

Containers start but UI shows 502

OIDC redirect loops or 404s


After deployment:


Support

If you are a design partner and need help:


VaultKit is designed to deploy cleanly, predictably, and without surprises. If something feels harder than it should be, that’s a signal — and we want to hear about it.