Automatic, intelligent synchronization for KeePassXC databases across Linux, Windows (dual-boot), and Google Drive.
- 3-Way Sync: Seamlessly merges changes from your local Linux database, a mounted Windows partition, and Google Drive.
- Smart Detection: Uses hash-based detection to only sync when files actually change.
- Automated Backups: Creates rolling backups of your database before every merge/update.
- System Tray Integration: Status icon and notifications for sync events.
- Interactive Setup: Guided TUI for partition selection, Google Drive auth, and configuration.
- Conflict Resolution: Leverages
keepassxc-clito merge entries rather than overwriting files.
The setup script will attempt to install these automatically, but you should have:
- KeePassXC (specifically
keepassxc-cli) - Python 3
- rclone (for Google Drive access)
- zenity (for GUI password prompts)
Before running the setup, you must configure rclone to access your Google Drive. The setup script can launch this for you, but you can also do it manually:
- Run config wizard:
rclone config
- Create a new remote:
- Type
nfor New remote. - Name it (e.g.,
gdrive). - Select storage type: Find "Google Drive" (usually number 18 or similar).
- Client ID/Secret: Leave blank (unless you have your own).
- Scope: Choose option 1 (Full access).
- Service Account: Leave blank.
- Advanced Config:
n(No). - Web Browser Auth:
y(Yes). This will open your browser to log in.
- Type
Once authorized, you will see the token. Confirm the configuration.
For setting up your own client ID (recommended for better performance), see Making your own Client ID in the official documentation.
Ensure the scripts are executable:
chmod +x setup.sh install.sh uninstall-daemon-service.sh keepass-sync-daemon.py daemon-control.shThe setup.sh script guides you through configuring your database paths, Windows partition mounting, and Google Drive connection.
./setup.shThis will:
- Check and install dependencies.
- Create a
sync_data/directory for local copies and backups. - Generate a
config.yamlfile tailored to your system.
Before installing the background service, you can run the daemon manually to verify checking works:
python3 keepass-sync-daemon.pyCheck the terminal output for "Started file monitoring" and ensure no errors occur.
Install the daemon as a systemd user service so it starts automatically on login:
./install.shThe daemon runs in the background. You can control it using the provided control script:
./daemon-control.sh status # Check status
./daemon-control.sh stop # Stop the service
./daemon-control.sh start # Start the service
./daemon-control.sh logs # View live logsAfter setup, the project will look like this:
.
├── config.yaml # Your local configuration (git-ignored)
├── sync_data/ # Working directory (git-ignored)
│ ├── backups/ # Rolling backups of your DB
│ ├── windows_copy... # Local caches
│ └── merged.kdbx # Intermediate merge file
├── logs/ # Log files
└── ... scripts ...
All settings are stored in config.yaml. The setup script generates this, but you can edit it manually to change:
backup_retention_daysdb_filename- Logging levels
To remove the service:
./uninstall-daemon-service.sh