Skip to content

Installation

techdox edited this page Jul 7, 2026 · 4 revisions

Installation

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

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

The repo includes:

deploy/systemd/trove-server.service

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 mkdir -p /var/lib/trove
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

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

A simple backup while the server is running should use SQLite's backup mechanism where possible. At minimum, stop the server or use a filesystem snapshot before copying the file.

Clone this wiki locally