Skip to main content
This tutorial provides a step-by-step process for deploying the GenAI Launchpad on a production-ready Linux server.

Prerequisites

Before proceeding, ensure you have the following:
  • A remote server running a Linux distribution (Ubuntu recommended)
  • SSH access to the server
  • (Optional) A custom domain with access to DNS settings

Deployment

1

Connect to the server

Log in to your remote server via SSH:
2

Install Docker

Docker is required to run the Launchpad. Follow the official installation instructions for your Linux distribution.For Ubuntu, execute the following commands:

Set up Docker’s APT repository

Install Docker

Verify installation

Ensure Docker is installed correctly by running:
3

Clone the repository

To deploy the Launchpad, clone the repository onto your server. First, add an SSH key to your GitHub repository.
Replace the repository URL below with your own private GenAI Launchpad repository.

Generate an SSH key

Generate a new SSH key pair:
Follow the prompts. If you do not wish to set a passphrase, press Enter to skip.Print the public key:
Copy the output, as it will be needed in the next step.

Add the SSH key to GitHub

  1. Navigate to your GitHub repository.
  2. Open Settings.
  3. In the left menu, go to Security > Deploy keys.
  4. Click Add deploy key and provide:
    • Title: genai-launchpad-prod
    • Key: Paste the copied public key.
  5. Click Add key.

Clone the repository

Run the following command to clone the repository to the server:
4

Configure environment variables

Configure the environment file for the runtime you are deploying.
  • .env at the repo root is for local Python development: playground scripts, unit tests, notebooks, and other commands run with your local uv/Python environment.
  • docker/.env is for Docker Compose, the containerized Launchpad stack, the database, and optional Supabase services. This is the important file for a VPS deployment.
docker/.env is much larger mostly because self-hosted Supabase needs many variables for Auth, Realtime, Storage, Studio, Kong, and related services, even though Supabase is excluded by default.
Replace default credentials with secure values before deploying to production.
5

Enable HTTPS (optional)

This step is optional. Skip if you don’t need HTTPS or don’t have a custom domain.
If you intend to use HTTPS, you must have a domain and configure the appropriate DNS settings.

Configure domain

  1. Create an A record in your domain’s DNS settings, pointing to your server’s IP address.
  2. Modify the .env file in the docker/ directory to include:

Open required ports

Ensure ports 80 and 443 are open on your server’s firewall:
  • Port 80: Required for Let’s Encrypt certificate validation (ACME challenge)
  • Port 443: Required for HTTPS traffic
If using ufw:
6

Start the application

Navigate to the docker/ directory:
Run the startup script: