-
-
Notifications
You must be signed in to change notification settings - Fork 0
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
Download the server-only Compose file:
curl -fsSLO https://raw.githubusercontent.com/techdox/trove/main/examples/docker-compose.server.ymlCreate a bootstrap token:
echo "TROVE_TOKEN=trove_$(openssl rand -hex 24)" > .envStart:
docker compose -f docker-compose.server.yml up -dOpen:
http://SERVER:8080
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.
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.envExample /etc/trove-server.env:
TROVE_DB=/var/lib/trove/trove.db
TROVE_ADDR=:8080Start:
sudo systemctl daemon-reload
sudo systemctl enable --now trove-server
sudo systemctl status trove-serverThe unit uses DynamicUser=yes and StateDirectory=trove. systemd creates /var/lib/trove with the right ownership. Do not create it manually.
Create one token per agent:
trove-server agent create docker-nuc01With Compose:
docker compose exec server trove-server agent create docker-nuc01Save the token immediately. It is shown once.
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.
Persist the SQLite database.
Docker Compose example:
volumes:
- trove-data:/dataSystemd example:
/var/lib/trove/trove.db
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.