Skip to content

On-Premise Setup Guide

Container Runtime Engine

We distribute the images from docker build step which generates the final container images for frontend, backend and db migration. Although they are OCI-compliant images, we have only tested with docker container runtime. Which means that it might be possible to use these images with other container runtimes (containerd, etc.) but they were not tested, so we can't guarantee that it would run without issue on those container runtimes.

This documentation contains docker cli, assuming that you are using docker engine.

Environment Variables

  1. For the frontend container, we need these variables to be set:

    Variable Description
    CI_ENVIRONMENT_SLUG Current environment, mainly used for logging
    DEFAULT_STORAGE_SIZE_LIMIT_IN_BYTES Default storage size limit for storing the uploaded images (in bytes)
    JWT_PAT_SECRET_KEY Secret key to encode and decode JWT personal access token
    JWT_SECRET_KEY Secret key to encode and decode JWT auth access token
    ORIGIN Origin URL of the application
    PUBLIC_COMMIT_HASH Commit hash used to build the application
    PUBLIC_COOKIE_DOMAIN Cookie domain of the application. Allows for different configuration of domain names, for example subdomains
    PUBLIC_ENDPOINT URL of the app's backend endpoint
    PUBLIC_INTERNAL_ENDPOINT Internal (private) URL of the app's backend endpoint. This application uses a backend for frontend architecture and SSR, meaning that the frontend has it's own backend. This URL points the backend of the frontend to the API backend when in the private network.
    PUBLIC_MAX_FILE_UPLOAD_SIZE_MiB Max file size allowed to upload (in MiB)
    PUBLIC_VERSION_STRING Version string shown for frontend and backend
    USE_GRAFANA_LOKI_LOGGER Set the flag to use Grafana Loki for logging
  2. And for backend container(s), we need these variables to be set:

    Variable Description
    CI_ENVIRONMENT_SLUG Current environment, mainly used for logging
    DEFAULT_STORAGE_SIZE_LIMIT_IN_BYTES Default storage size limit for storing the uploaded images (in bytes)
    EMAIL_SENDER Source email address for sending out email
    EMAIL_TOKEN_EXPIRY_DURATION_SECS Duration of validity of any tokens sent by email
    JWT_PAT_SECRET_KEY Secret key to decode JWT personal access token
    JWT_SECRET_KEY Secret key to decode JWT auth access token
    ORIGIN Origin URL of the application
    POSTGRES_CONNECTION_STRING Connection string for the app to connect to the database in the format of Server=<db-instance-hostname-or-ip>;Database=<db-name>;Port=<db-port>;Userid=<db-user>;Password=<db-password>
    PUBLIC_COMMIT_HASH Commit hash used to build the application
    PUBLIC_COOKIE_DOMAIN Cookie domain of the application. Allows for different configuration of domain names, for example subdomains
    PUBLIC_MAX_FILE_UPLOAD_SIZE_MiB Max file size allowed to upload (in MiB)
    PUBLIC_VERSION_STRING Version string shown for frontend and backend
    S3_BUCKET If STORAGE_MODE is s3, then this points to the s3 bucket to store the uploaded files
    STORAGE_MODE Set the storage to either s3, local (filesystem) or azure (blob storage)
    USE_GRAFANA_LOKI_LOGGER Set the flag to use Grafana Loki for logging
    VERIFY_EMAIL_TOKEN_EXPIRY_DURATION_SECS Duration of validity of email verification token
  3. For the migration container image, set the following variables:

    Variable Description
    POSTGRES_HOST Hostname or IP address of the database instance
    POSTGRES_PASSWORD Password to connect to the database instance
    POSTGRES_USERNAME Username to connect to the database instance

Start The Container

You can either use simple docker command to run the frontend, backend and migration containers and pass the environment variables, or write your own docker-compose.yml (refer to this doc) and use docker compose cli