Skip to content

Installation

Nick Wilkinson edited this page Jul 15, 2026 · 4 revisions

Installation

Trove can run as Docker Compose, systemd binaries, or mixed server/agent deployments.

If this is your first install, start with Quickstart. This page covers the available deployment shapes and persistence details.

The usual pattern is:

  • server in Docker Compose or systemd
  • Docker/Proxmox agents as containers
  • Kubernetes agent in-cluster
  • Local agent as systemd

Docker Compose server

Download the server-only Compose file:

curl -fsSLO https://raw.githubusercontent.com/techdox/trove/main/examples/docker-compose.server.yml

Create a bootstrap token:

echo "TROVE_TOKEN=trove_$(openssl rand -hex 24)" > .env

Start:

docker compose -f docker-compose.server.yml up -d

Open:

http://SERVER:8080

Docker Compose server plus Proxmox agent

Use:

examples/docker-compose.proxmox.yml

This is useful for standing up a server and Proxmox agent together.

Make sure the agent image is the Proxmox image, not the Docker agent image.

Systemd server

Download the archive for your architecture from the latest release. The archive includes the binary and systemd unit:

VERSION=0.13.0
curl -fLO "https://github.com/techdox/trove/releases/download/v${VERSION}/trove-server_${VERSION}_linux_amd64.tar.gz"
tar xzf "trove-server_${VERSION}_linux_amd64.tar.gz"

Typical install shape:

sudo install -m 0755 trove-server /usr/local/bin/trove-server
sudo install -m 0644 deploy/systemd/trove-server.service /etc/systemd/system/trove-server.service
sudo install -m 0600 /dev/null /etc/trove-server.env

Example /etc/trove-server.env:

TROVE_DB=/var/lib/trove/trove.db
TROVE_ADDR=:8080

Start:

sudo systemctl daemon-reload
sudo systemctl enable --now trove-server
sudo systemctl status trove-server

The unit uses DynamicUser=yes and StateDirectory=trove. systemd creates /var/lib/trove with the right ownership. Do not create it manually.

Agent tokens

Create one token per agent:

trove-server agent create docker-nuc01

With Compose:

docker compose exec server trove-server agent create docker-nuc01

Save the token immediately. It is shown once.

Network placement

The server address must be reachable by every agent.

Choose how users reach the dashboard:

  • LAN IP and port 8080
  • internal DNS name
  • VPN address
  • reverse proxy with authentication/TLS
  • native OIDC on the Trove server

Avoid exposing the dashboard directly to the public internet without authentication. See Authentication for OIDC/Authentik setup and logout requirements.

Persistence

Persist the SQLite database.

Docker Compose example:

volumes:
  - trove-data:/data

Systemd example:

/var/lib/trove/trove.db

Backups

Back up the SQLite database. It contains:

  • agent names
  • token hashes
  • host/service catalog
  • events
  • image freshness cache
  • alert state

Use Trove's hot-backup command where possible:

# systemd
sudo TROVE_DB=/var/lib/trove/trove.db \
  trove-server backup "/var/backups/trove-$(date +%F).db"

# Docker Compose
mkdir -p backups
docker compose exec server \
  trove-server backup "/data/trove-$(date +%F).db"
docker compose cp "server:/data/trove-$(date +%F).db" backups/

The command uses SQLite's online VACUUM INTO path and refuses to overwrite an existing destination. If you copy the database file directly, stop the server first or use a consistent filesystem snapshot.

See Upgrade-Guide for restore and rollback steps.

Clone this wiki locally