Skip to content
Live $100 credit at signup, up to $300 total Offer ends December 31, 2026 Get started →

OpenBao

OpenBao is an open-source secrets management platform that securely stores and controls access to tokens, passwords, certificates, and encryption keys. It is the Linux Foundation community fork of HashiCorp Vault and remains API-compatible with it, so most Vault tooling works unchanged. You run it as a server, initialise it once, and unseal it to start serving secrets.

ComponentVersion
OpenBao2.5.5
Ubuntu24.04 LTS

OpenBao runs as a systemd service with integrated Raft storage. Each VM generates its own TLS certificate on first boot, so no private key is shared between deployments.

ResourceMinimumRecommended
vCPU12
RAM1 GB2 GB
Storage10 GB20 GB

You can optionally set these when deploying OpenBao from the marketplace. Leave them blank to use the VM’s own address and receive the generated secrets in plain text.

VariableDescription
OPENBAO_ADDRAddress embedded in the TLS certificate and the Raft cluster address
OPENBAO_UNSEAL_PGP_KEYSComma-separated PGP public keys. Each unseal key share comes back encrypted to one key
OPENBAO_ROOT_TOKEN_PGP_KEYOne PGP public key. The root token comes back encrypted to it

Each PGP entry is either keybase:<username> or a base64-encoded ASCII-armored public key. These variables do not let you choose the secret values. OpenBao always generates the root token and the unseal keys. They control only who those values are encrypted to.

ssh ubuntu@<your-vm-ip>

On the first boot, a setup script generates a TLS certificate for this VM, starts OpenBao, initialises it with 5 key shares and a threshold of 3, and unseals it. Track progress:

journalctl -u openbao-first-boot.service -f

3. Retrieve the unseal keys and root token

Section titled “3. Retrieve the unseal keys and root token”

They are written to a root-only file:

sudo cat /etc/openbao/credentials.txt
export BAO_ADDR=https://<your-vm-ip>:8200
export BAO_SKIP_VERIFY=true
bao status

The certificate is self-signed, so either trust it or set BAO_SKIP_VERIFY while testing. Replace it with your own certificate for production.

# Check status
sudo systemctl status openbao
# Restart
sudo systemctl restart openbao
# View logs
sudo journalctl -u openbao -f

Configuration lives in /etc/openbao, the Raft data in /opt/openbao/data, and the per-VM certificate in /etc/openbao/tls.

Port 8200 is opened only after the service answers a health check over TLS. UFW is enabled and allows that port plus SSH (port 22).

OpenBao seals itself whenever the service restarts. Unseal it again with three of your key shares:

bao operator unseal

To restrict access to a specific IP:

sudo ufw delete allow 8200/tcp
sudo ufw allow from <trusted-ip> to any port 8200

Last updated: