Self-host Trove sync

Prefer to keep your data on your own hardware? Run the Trove sync server on a home server, NAS or VPS, and point your devices at it.

Your clipboard history stays end-to-end encrypted. The server only stores ciphertext and never sees your clipboard. You can use your own server alone, or alongside iCloud.

1. Run the server

You need Docker. Then:

git clone https://github.com/sairam/trove.git trove
cd trove/Server
cp .env.example .env
# Create an access token and put it in .env as TROVE_TOKENS=...
openssl rand -base64 32
docker compose -f docker-compose.selfhost.yml up -d --build

The server listens on port 8080 and keeps everything (a SQLite database plus image files) in the trove-data Docker volume.

2. Add HTTPS

Put the server behind a reverse proxy with a TLS certificate, such as Caddy, Traefik or nginx. With Caddy it's one line:

trove.example.com {
    reverse_proxy localhost:8080
}

3. Connect your devices

  1. Open Trove → Settings → Sync.
  2. Under Self-Hosted Server, enter your server address (for example https://trove.example.com) and your access token.
  3. Tap Connect. Your history uploads in the background, encrypted.

Do this on each device. If a device asks to be paired, follow the on-screen steps to receive your encryption key from a device that already has it.

Backups

Stop the container and copy the trove-data volume, or back up the SQLite file with sqlite3 .backup together with the payloads folder. Backups contain only encrypted data.

Updating

git pull
docker compose -f docker-compose.selfhost.yml up -d --build

Database migrations run automatically on start.

Requirements