Datenbank-Datei auf Server legen

Die Datenbank-Datei auf den Server legen. Die Datei sollte außerhalb des Documentroot liegen, damit man diese nicht ohne FTP-Login öffentlich erreichen kann.

mit SFTP öffnen

  1. Das Plugin "IOProtocolExt" (https://keepass.info/extensions/v2/ioprotocolext/IOProtocolExt-1.17.zip) installieren
  2. die KeePass-Datei auf einem Server irgendwo ablegen, dann einen SFTP/SSH-Benutzer anlegen
  3. in KeePass File > Open > Open URI
    dann entweder
    ftps://test.your-domain.de/password-file.kdbx
    sftp://test.your-domain.de/password-file.kdbx
    Wichtig: Die Domain muss natürlich ein SSL-Zertifikat habem

Datenbank mit Trigger synchronisieren

  1. Die Datenbank öffnen und unter Tools > Triggers
  2. Add
  3. “Enabled” und “Initially on” aktivieren
  4. Tab “Events”: Add
  5. Event: “Saved database file”"
  6. File/URL - Comparison: Equals
  7. File/URL - Filter: ftps://your-domain.com/your-filename.kdbx
  8. Tab Actions:
    1. Change trigger on/off state: Off
    2. Synchronize active database with a file/URL
      File/URL: C:\your\local\path\filename.kdbx
    3. Show message box
      Text eingeben
    4. Change trigger on/off state: On

Keepass2Android

Ich musste in den Einstellungen unter “Anwendung” > “Umgang mit Dateien” > “SSL-Zertifikate” die Option “Fehler bei Zertifikatsüberprüfung ignorieren” wählen, damit es funktionierte.

keepass2android:
Host: andreasloewer.de
Startverzeichnis: /keepassFile.kdbx

Browser-Extensions

Chrome:

In KeePass:

Automatische Backups

alle 3 Tage ein Automatisches Backup per Mail erhalten

#!/bin/bash
set -euo pipefail

FILE="yourfile.endung"
TO="your@mail.provider"

STARTDATE="2026-03-05"   # erster Ausführungstag

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$DIR"

TODAY=$(date +%s)
START=$(date -d "$STARTDATE" +%s)

DAYS=$(( (TODAY - START) / 86400 ))

# nur alle 2 Tage ausführen
if (( DAYS % 2 != 0 )); then
  exit 0
fi

TS=$(date +"%Y-%m-%d")

NAME="${FILE%.*}"
EXT="${FILE##*.}"
BACKUP="${NAME}-${TS}.${EXT}"

cp "$FILE" "$BACKUP"

BOUNDARY="=====MIME_BOUNDARY_$(date +%s)====="

(
echo "To: $TO"
echo "Subject: Backup $BACKUP"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=\"$BOUNDARY\""
echo
echo "--$BOUNDARY"
echo "Content-Type: text/plain"
echo
echo "Backup im Anhang:"
echo "$BACKUP"
echo
echo "--$BOUNDARY"
echo "Content-Type: application/octet-stream; name=\"$BACKUP\""
echo "Content-Transfer-Encoding: base64"
echo "Content-Disposition: attachment; filename=\"$BACKUP\""
echo
base64 "$BACKUP"
echo "--$BOUNDARY--"
) | /usr/sbin/sendmail -t

rm -f "$BACKUP"
backup_mail.sh
chmod +x backup_mail.sh
./backup_mail.sh

Dann lässt du Cron täglich laufen, und das Script prüft selbst, ob heute ein Ausführungstag ist.

# Cronjob (täglich 12:00)
0 12 * * * /usr/local/www/apache24/data/lotte-und-andy.de/backup_mail.sh