Lunary was designed to be surprisingly simple to self-host, through a Helm Chart which includes the frontend, the API, and workers.

Note: The Kubernetes setup is available only with Lunary Enterprise Edition

Steps

1

Set up a PostgreSQL database

Set up a PostgreSQL database to store your Lunary data (version 15 or higher).

2

Log in to the private Docker Repository

Run the following command:

helm registry login registry-1.docker.io -u lunarycustomer -p <your_organization_access_token>

Your Organization’s Access Token, will be provided by Lunary when your subscription is activated.

3

Download the Helm Chart

kubectl create ns lunary
helm pull oci://registry-1.docker.io/lunary/lunary --untar --version '1.2.11' # versions are available here: https://github.com/lunary-ai/lunary/releases
4

Set up mandatory secrets

kubectl create secret -n lunary docker-registry regcred --docker-server=docker.io --docker-username=lunarycustomer --docker-password=<your_organization_access_token>
kubectl create secret -n lunary generic db-connection --from-literal=url="postgres://<username>:<password>@<host>:5432/lunary"
kubectl create secret -n lunary generic license-key --from-literal=LICENSE_KEY='<license_key>'
kubectl create secret -n lunary generic jwt-secret --from-literal=JWT_SECRET='<jwt_secret>' # You can generate a random string using `openssl rand -base64 32`

Your License Key will be provided by Lunary when your subscription is activated. The Organization Access Token is the same one you used to log in with helm login.

5

(Optional) Set up API Keys and SMTP client

In order to use the Prompt Playground and Evaluations features, you need to set up at least one of the following secrets:

kubectl create secret -n lunary generic api-keys \
  --from-literal=OPENAI_API_KEY='<your-openai-api-key>' \
  # Or if using Azure
  --from-literal=AZURE_OPENAI_API_KEY='<your-azure-openai-api-key>' \
  --from-literal=AZURE_OPENAI_RESOURCE_NAME='<your-azure-openai-resource-name>' \
  --from-literal=AZURE_OPENAI_DEPLOYMENT_ID='<your-azure-openai-deployment-id>' \
  --from-literal=ANTHROPIC_API_KEY='<your-anthropic-api-key>' \
  --from-literal=OPENROUTER_API_KEY='<your-openrouter-api-key>' \
  --from-literal=PALM_API_KEY='<your-palm-api-key>'

You can also use your custom email server to send invitations to members of your organization:

kubectl create secret -n lunary generic smtp-config \
  --from-literal=EMAIL_SENDER_ADDRESS='<your-email-sender-address>' \
  --from-literal=SMTP_HOST='<your-smtp-host>' \
  --from-literal=SMTP_PORT='<your-smtp-port>' \
  --from-literal=SMTP_USER='<your-smtp-user>' \
  --from-literal=SMTP_PASSWORD='<your-smtp-password>

Then, configure the corresponding values in values.yaml, in the Helm Chart’s root directory:

 ---
global:
  ...
  secrets:
    useCustomSMTP: true
    useOpenAI: false
    useAzureOpenAI: true
    useAnthropic: true
    useOpenRouter: true
    usePalm: true
...

6

Install the Helm Chart

cd lunary
helm upgrade --install -n lunary lunary .
7

🎉 Done!

The Helm Chart should be installed and ready to go.
You can now set up an ingress controller to expose the services.

Lunary was designed to be surprisingly simple to self-host, through a Helm Chart which includes the frontend, the API, and workers.

Note: The Kubernetes setup is available only with Lunary Enterprise Edition

Steps

1

Set up a PostgreSQL database

Set up a PostgreSQL database to store your Lunary data (version 15 or higher).

2

Log in to the private Docker Repository

Run the following command:

helm registry login registry-1.docker.io -u lunarycustomer -p <your_organization_access_token>

Your Organization’s Access Token, will be provided by Lunary when your subscription is activated.

3

Download the Helm Chart

kubectl create ns lunary
helm pull oci://registry-1.docker.io/lunary/lunary --untar --version '1.2.11' # versions are available here: https://github.com/lunary-ai/lunary/releases
4

Set up mandatory secrets

kubectl create secret -n lunary docker-registry regcred --docker-server=docker.io --docker-username=lunarycustomer --docker-password=<your_organization_access_token>
kubectl create secret -n lunary generic db-connection --from-literal=url="postgres://<username>:<password>@<host>:5432/lunary"
kubectl create secret -n lunary generic license-key --from-literal=LICENSE_KEY='<license_key>'
kubectl create secret -n lunary generic jwt-secret --from-literal=JWT_SECRET='<jwt_secret>' # You can generate a random string using `openssl rand -base64 32`

Your License Key will be provided by Lunary when your subscription is activated. The Organization Access Token is the same one you used to log in with helm login.

5

(Optional) Set up API Keys and SMTP client

In order to use the Prompt Playground and Evaluations features, you need to set up at least one of the following secrets:

kubectl create secret -n lunary generic api-keys \
  --from-literal=OPENAI_API_KEY='<your-openai-api-key>' \
  # Or if using Azure
  --from-literal=AZURE_OPENAI_API_KEY='<your-azure-openai-api-key>' \
  --from-literal=AZURE_OPENAI_RESOURCE_NAME='<your-azure-openai-resource-name>' \
  --from-literal=AZURE_OPENAI_DEPLOYMENT_ID='<your-azure-openai-deployment-id>' \
  --from-literal=ANTHROPIC_API_KEY='<your-anthropic-api-key>' \
  --from-literal=OPENROUTER_API_KEY='<your-openrouter-api-key>' \
  --from-literal=PALM_API_KEY='<your-palm-api-key>'

You can also use your custom email server to send invitations to members of your organization:

kubectl create secret -n lunary generic smtp-config \
  --from-literal=EMAIL_SENDER_ADDRESS='<your-email-sender-address>' \
  --from-literal=SMTP_HOST='<your-smtp-host>' \
  --from-literal=SMTP_PORT='<your-smtp-port>' \
  --from-literal=SMTP_USER='<your-smtp-user>' \
  --from-literal=SMTP_PASSWORD='<your-smtp-password>

Then, configure the corresponding values in values.yaml, in the Helm Chart’s root directory:

 ---
global:
  ...
  secrets:
    useCustomSMTP: true
    useOpenAI: false
    useAzureOpenAI: true
    useAnthropic: true
    useOpenRouter: true
    usePalm: true
...

6

Install the Helm Chart

cd lunary
helm upgrade --install -n lunary lunary .
7

🎉 Done!

The Helm Chart should be installed and ready to go.
You can now set up an ingress controller to expose the services.