Installing on your own server

Server requirements, one-command install, first sign-in with the PIN and which sections are enabled.

Rivo runs on a single VPS and belongs entirely to its owner: data, encryption keys and backups never leave the server. The short version is on the Install page.

Before you install

MinimumRecommended
OSUbuntu 22.04 / 24.04, x86_64 (for arm64 ask at [email protected])Ubuntu 24.04
CPU1 vCPU2 vCPU
RAM1 GB2 GB
Disk5 GB free20–40 GB (database, documents, backups)
Networkpublic IP, ports 80 and 443 open
  • Ports 80 and 443 must be free — Caddy listens on them and issues the HTTPS certificate itself. If nginx or apache already runs there, remove it or give Rivo other ports (HTTP_PORT, HTTPS_PORT) and proxy yourself.
  • DNS. Point an A record for your domain (e.g. rivo.example.com) at the server's IP before installing and wait until it propagates (dig +short rivo.example.com). Without it the certificate can't be issued.

One-command install

curl -fsSL https://get.me.rivo.day/install.sh | sudo bash -s -- --domain rivo.example.com --email [email protected]

The installer sets up Docker, downloads ready-made images and deploys everything into /opt/rivo. Nothing is built on the server — it takes a couple of minutes. Without flags it asks for the domain, email and license key itself.

FlagPurpose
--license RIVO-…license key from your customer account. Optional: you can enter it later in Settings → License
--version 1.4.2install a specific version instead of the latest
--dir /opt/rivoa different install directory
--yesdon't ask anything (for automation)
--no-scheduledon't enable the daily backup
--registry-user U --registry-token Taccess to a private registry (issued in your account)

The installer generates the secrets (APP_SECRET, VAULT_KEY, database password) and a random sign-in PIN — the instance is never left open, not even for a minute. The database schema is created on first start; there are no manual steps. Running the installer again is safe: secrets, data and version stay as they are.

First sign-in

At the end the installer prints the sign-in PIN — once, so write it down right away; it isn't shown anywhere else.

Open https://your-domain and enter it. Then:

  1. Change the PIN to your own — Settings → Access.
  2. Keep a copy of /opt/rivo/deploy/.env off the server (in a password manager, for example). Without APP_SECRET and VAULT_KEY uploaded files and passwords can't be decrypted by anything — not even from a backup.
  3. Save BACKUP_PASSPHRASE, printed by the installer at the end — backups don't open without it.
  4. If needed: an LLM key for the assistant, a Telegram bot token, Google Calendar, currency and time zone.

Which sections are enabled

Your license decides which sections are on: change the plan and the set changes by itself. Without a license everything is on. You can trim the set with a MODULES=… line in deploy/.env (comma-separated), then rivo restart; a disabled module is hidden in the interface.

Troubleshooting

SymptomWhat to do
The site doesn't openrivo logs caddy; check the A record and that 80/443 aren't blocked by a firewall (ufw allow 80,443/tcp)
The certificate isn't issuedLet's Encrypt must reach the server on port 80; make sure no other web server holds it
API is unhealthyrivo logs api — usually the database didn't start or memory ran out
Download fails during installthe registry is private: pass --registry-user/--registry-token from your account

Forgot the PIN

Reset it in the database, put a new APP_PIN into /opt/rivo/deploy/.env and restart the stack:

cd /opt/rivo
docker compose -f deploy/docker-compose.yml --env-file deploy/.env exec -T db psql -U rivo -d rivo -c "DELETE FROM settings WHERE key='APP_PIN';"
rivo restart

Updates and backups are covered in Updates, backup and restore.