Skip to main content
A single Azure virtual machine is the simplest way to self-host Onyx on Azure.
To deploy Onyx on AKS with Azure Database for PostgreSQL, Azure Managed Redis, and Blob Storage, use the Terraform modules for Azure.

Guide

1

Create a VM instance

Create a VM with the appropriate resources. This guide uses the recommended Standard_D4s_v3 size.
  • Give your VM a descriptive name like onyx-prod
  • Select the Ubuntu Server 24.04 LTS image
  • Select the Standard_D4s_v3 size
  • Select Allow selected ports and check HTTPS (443) in the Inbound port rules section
  • Configure storage following the Resourcing guide
Create VM InstanceInstance SettingsNetwork Settings
2

Create the instance

Click Create and then view your VM details.
Save the Public IP address of the VM.
Azure Public IP Address
3

Point domain to the instance

If you don’t have a domain, buy one from a DNS provider like GoDaddy or just skip HTTPS for now.
To point our domain to the new instance, we need to add an A and CNAME record to our DNS provider.The A record should be the subdomain that you would like to use for the Onyx instance like prod.The CNAME record should be the same name with the www. in front resulting in www.prod pointing to the full domain like prod.onyx.app.DNS A Record ConfigurationDNS CNAME Record Configuration
4

Install Onyx requirements

Onyx requires git, docker, and the docker compose plugin.To install these on Ubuntu Server, run the following:
Log out and back in so your user can run docker without sudo.
Prefer a guided install? The Onyx CLI installs Docker Compose, writes the configuration, and manages upgrades for you. Skip the remaining steps if you use it.
5

Install and Configure Onyx

To install Onyx, we’ll need to clone the repo and set the necessary environment variables.
Fill out the .env and .env.nginx files.
.env
Email/password login works out of the box, and SSO (Google / OIDC / SAML) is configured later from the admin panel. See our auth guides for details.
.env.nginx
6

Launch Onyx

Running the init-letsencrypt.sh script will get us a SSL certificate from letsencrypt and launch the Onyx stack.
You will hit an error if you fail the letsencrypt workflow more than 5 times. You will need to wait 72 hours or request a new domain.
If you are skipping the HTTPS setup, start Onyx manually:
Give Onyx a few minutes to start up.You can monitor the progress with docker logs onyx-api_server-1 -f.
You can access Onyx from the instance Public IPv4 or from the domain you set up earlier!

Next Steps

Configure Authentication

Set up authentication for your Onyx deployment with OAuth, OIDC, or SAML.

More Onyx Configuration Options

Learn about all available configuration options for your Onyx deployment.