Self-host Trove sync
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
- Open Trove → Settings → Sync.
- Under Self-Hosted Server, enter your server address (for example
https://trove.example.com) and your access token. - 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
- Any 64-bit Linux host or Mac that can run Docker. The server is small and runs fine on a Raspberry Pi 4–class machine.
- Disk space for your history. Images take the most room.