Skip to main content
By the end of this page, one virtual machine in your vCenter is serving Celum at https://app.<your-domain>. You can sign in to it as an administrator. Everything Celum needs runs on the same VM:
  • Harbor, a container registry that already holds every image and chart the onboarding wizard installs;
  • Authentik, the identity provider for Celum, Harbor and Omni;
  • OpenBao, a Vault-compatible secret store for cluster secrets;
  • PowerDNS and CoreDNS, which serve the appliance’s own names, and zones your clusters publish into;
  • Omni, Talos fleet management (on by default, licensed separately);
  • the start page at https://home.<your-domain>, which shows the appliance’s health and installs Celum updates.
The appliance needs one thing from your site: a way for clients to resolve its names.
Not what you are looking for? Want to run Celum’s containers on a host you already manage, against your own identity provider? Go to Quickstart. Already have the appliance running and want to add your first cluster? Go to Register a supervisor. Deploying from automation rather than the wizard? Every field below is also a key in Appliance configuration.

What this changes in your environment

The wizard creates one VM. The appliance changes nothing else in vCenter. It contacts none of your clusters until you register one. There is one exception. In the acme-dns01 certificate mode, the appliance uses the DNS provider credentials you supply to create TXT records in your zone. That is how it proves to Let’s Encrypt that you own the domain.

Before you start

  • vCenter with ESXi 7.0 or later. The appliance uses virtual hardware version 17 and EFI firmware.
  • Capacity for 8 vCPU, 16 GB RAM and a 120 GB thin disk. These are not padding. Harbor alone asks for 8 GB, and the VM also runs Authentik, PostgreSQL, OpenBao, PowerDNS, Omni and Celum. You can enlarge the disk in vSphere before the first power-on, and the appliance grows its filesystem to fill it.
  • A port group the VM can join, with a free static address. DHCP works for a trial, but Omni requires a fixed address.
  • A DNS domain for the appliance, such as celum.example.com. The appliance serves several names under it. See step 3.
  • An SSH public key. The appliance accepts only key logins over SSH, and it reads the wizard’s answers only on the first boot. Without a key you cannot open a shell to troubleshoot or change the configuration.
  • A certificate decision. See the next section.

Choose a certificate mode

The mode decides what else you need, so pick it now.
Fields that carry a file take its base64. The wizard’s fields are one line, so a certificate or key pasted as it is loses its line breaks. The appliance refuses a raw PEM at first boot. Encode the file first:
  • Linux: base64 -w0 chain.pem
  • macOS: base64 -i chain.pem
  • PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes((Resolve-Path chain.pem)))

Network access

The shape of it

Import → answer → resolve → power on → sign in → activate. Step 2 is the only one with decisions in it.

Step 1 — Import the OVA

Use a Content Library to deploy the same release more than once, or from several vCenters.
  1. In Content Libraries, open or create a library and choose Import item. Select the celum-appliance-<version>.ova file or URL.
  2. Once the import finishes, right-click the item and choose New VM from This Template.
  3. Name the VM and pick a folder, then a compute resource.
  4. Accept the details page. If vCenter warns about advanced configuration options, that is expected: the OVA sets EFI firmware and time sync with the host.
  5. Storage: choose a datastore. Thin Provision is fine.
  6. Networks: map the source network VM Network to your port group.
  7. You arrive at Customize template. Continue with step 2.
Result: vCenter shows Customize template with six sections: Identity, Networking, TLS, Components, Updates and Advanced.
The Customize template step of the vCenter wizard, listing the six sections Identity, Networking, TLS, Components, Updates and Advanced, and the message All properties have valid values

Customize template, with the two required fields filled in

Step 2 — Answer the deploy wizard

Two fields are required, and both are marked *. Every other field is optional and has a default that works.

1. Identity

The top of the Identity section: DNS domain set to celum.example.com and Administrator email set to admin@example.com, both marked with an asterisk

Identity: only the domain and the administrator email are required

2. Networking

Leave the address and the gateway blank to use DHCP. For a static address, fill in:
The Networking section with IP address 10.20.30.40, prefix length 24, default gateway 10.20.30.1 and DNS servers 10.20.30.2,10.20.30.3

Networking with a static address

Use a static address for anything longer-lived than a trial. Your DNS records point at this address, and a DHCP lease that moves breaks every name at once. Omni requires a static address, because Talos nodes dial a SideroLink endpoint that cannot follow a lease.

3. TLS

4. Components

Omni is licensed separately, and it is on by default. Sidero Labs publishes Omni under the Business Source License: it is free for non-production use, and production use needs a contract with Sidero Labs. Leaving Omni on asserts that you are entitled to run it; untick it otherwise. Omni needs a static address, and Talos nodes must trust its certificate: under selfsigned, give them the appliance CA; under byo, a publicly trusted chain needs nothing. Under acme-dns01, the appliance switches Omni off and says why.

5. Updates

6. Advanced

Change these only when you have a reason to. Result: you can finish the wizard. Do not power the VM on yet.

Step 3 — Make the names resolve

The appliance serves these names, each on its own address: Pick one way to make them resolve:
  • Delegate the domain to the appliance (DNS on). Add an NS record for <domain> in the parent zone, pointing at a name for the appliance, with a glue A record for its address. The appliance answers for every name in the table.
  • Point clients at the appliance (DNS on). A client whose resolver is the appliance’s address resolves every name with no other DNS.
  • Create the records yourself. A single wildcard record, *.<domain>, pointing at the appliance covers all of them.
Why now: signing in sends your browser from app. to auth. and back through api.. If any one of those names does not resolve, the sign-in fails partway through.
Using DHCP, so you do not know the address yet? Power on (step 4), read the address from the VM’s Summary tab in vCenter, and create the records then. For a quick trial you can put the names in your workstation’s hosts file instead.
Result: from your workstation, every name in the table that applies to you resolves to the appliance’s address.

Step 4 — Power on and watch the first boot

Power on the VM and open its console. vCenter delivers your wizard answers to the VM at power-on. The appliance writes them to /etc/celum-appliance/appliance.yaml, then configures and starts each component in order, logging its progress to the console. The first boot takes a while: the appliance loads every bundled image and chart into Harbor. When it finishes, the console prints a summary like this:
The same summary is saved on the appliance at /root/celum-appliance-credentials.txt, readable only by root. The start page at https://home.<domain> shows the same health and addresses once you sign in to it. To follow the progress over SSH instead of the console:
Result: celum-appliance status lists every stage as done, and the console shows the summary.
Back up /etc/celum-appliance/secrets now, unless the escrow covers it. It holds the secret store’s unseal key and root token, the CA key, Authentik’s secret key and, if Omni is on, the key that encrypts Omni’s data. None of them can be regenerated. With escrow recipients (or SSH keys) set, the appliance keeps an encrypted copy of them and copies it to the backup bucket; the summary says which secrets are escrowed.

Step 5 — Sign in

  1. Open https://app.<domain>.
  2. You are redirected to https://auth.<domain>. Sign in with the administrator email and the Authentik password from the summary.
  3. You land back in Celum.
If you chose selfsigned without your own signing CA, your browser warns on each name. To stop the warnings, copy /etc/celum-appliance/tls/ca.crt from the appliance and add it to your workstation’s trusted roots. A redeploy mints a new CA. Result: Celum opens on Welcome to Celum, because you have not registered a cluster yet.
Welcome to Celum: no supervisor selected, a choice between Upload a kubeconfig and Set up access first, and an Add your first supervisor drop zone

The first page of a new installation

Open My Profile at https://app.<domain>/iam/me. Your identity-provider groups include celum-admins (or the group name you chose), and it is matched to the IAM group Administrators.
My Profile showing the OIDC groups from the token, authentik Admins and celum-admins, and the matched IAM group Administrators via oidc

My Profile: celum-admins from the token, matched to Administrators

Step 6 — Activate Celum

Celum is fully usable for 30 days from its first start. A banner counts them down. After that, Celum needs a licence to make changes. Without one it is read-only:
  • you can still see everything;
  • every change answers 402 “Celum is not activated”;
  • the appliance keeps running its bootstrap, backups and certificate renewals.
A licence is bound to this appliance’s installation ID, which Celum makes at its first start. That is why the deploy wizard has no licence field. Activate within the 30 days:
  1. Send the installation ID to Nuvira. Under Settings → Licence, copy the Installation ID. Or choose Download activation request and send that file: it names the installation ID, the Celum version and the appliance’s clock.
  2. Nuvira sends you back a licence, a .celum-license file.
  3. Under Settings → Licence, choose Upload licence file or Paste licence. Celum checks the licence against this installation before it stores it.
The Licence tab showing the installation ID with a copy button, the installed licence and its end date, and the buttons Upload licence file, Paste licence and Download activation request

Settings → Licence: the installation ID to send, and the three actions

Settings → Licence shows the installation ID, the licence and when it ends. It also has Upload licence file, Paste licence and Download activation request.
Installing a licence and downloading the activation request need license:Update on krn:celum:license:global, which the Administrators group holds. Result: Settings → Licence shows your licence and its end date, and the countdown banner is gone. What happens next:
  • Nothing phones home. Celum checks the licence on the appliance, against keys built into it, so an air-gapped appliance activates the same way.
  • Before the licence ends, a banner warns you, 30 days ahead. After a paid licence ends, Celum keeps working for 14 days of grace. A trial licence has no grace. Then Celum is read-only until you install a new licence.
  • Setting the clock back does not help. Celum judges the licence at the latest time it has already seen.
  • Restoring Celum’s database needs no licence. Settings → Database Backup → Import stays open while Celum is read-only. A replacement appliance restored from its predecessor’s backup gets the predecessor’s installation ID and licence back, so it needs no new licence.

Verify

  • https://app.<domain> signs you in through Authentik, without a certificate warning (or with one you expected under selfsigned).
  • https://home.<domain> signs you in with the start page account and shows every application as running.
  • https://harbor.<domain> shows the celum project already filled with images and charts. That content came from inside the OVA, so this proves the bundled images loaded.
  • In Celum, Registries lists appliance-harbor as the default registry for charts and images.
  • Settings → Licence shows your licence and when it ends.

If you need to undo it

Power off and delete the VM. That is all of it: the appliance created nothing outside itself, apart from DNS records you added and, under acme-dns01, TXT records that exist only while a certificate is being issued. Once you register clusters and onboard them, they pull images from this appliance’s Harbor. Deleting the appliance after that point leaves them unable to pull. Move them to another registry first.

What commonly goes wrong

To see the configuration the appliance is actually using, and any warnings about it, run celum-appliance config over SSH.

Next

Register a supervisor — give Celum the kubeconfig of a cluster you run. That page starts where this one ends: a Celum you can sign in to as an administrator. When you then onboard that cluster, it pulls every image from the appliance’s own Harbor, so it needs no route to the public registries.