commit ccc5fc111ce70815d0c4eed5e2352597cc777a67 Author: Gemini Bot Date: Fri Dec 5 02:54:37 2025 +0000 Initial commit: Beeper Bridge Docker Setup with Migration Script diff --git a/README.md b/README.md new file mode 100644 index 0000000..89e615c --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# Beeper Bridges - Docker Setup + +Dieses Projekt verwaltet selbst-gehostete Matrix-Bridges für Beeper mittels Docker Compose. + +## Struktur +- \`docker-compose.yml\`: Definition der Dienste (WhatsApp, Telegram, Signal, Google Chat). +- \`data/\`: Persistente Daten für die Bridges (Configs + SQLite Datenbanken). +- \`migrate.sh\`: Hilfsskript zum Importieren bestehender lokaler Installationen. + +## Installation & Migration + +### 1. Migration bestehender Daten +Wenn du die Bridges vorher manuell (ohne Docker) betrieben hast, nutze das Skript, um Configs und Datenbanken zu importieren. Das Skript passt automatisch die Datenbank-Pfade für Docker an. + +\`\`\`bash +./migrate.sh +\`\`\` + +### 2. Starten +Startet alle Bridges im Hintergrund. + +\`\`\`bash +docker compose up -d +\`\`\` + +### 3. Logs prüfen & QR-Code scannen +Falls du dich neu anmelden musst, findest du den QR-Code im Log des jeweiligen Containers: + +\`\`\`bash +docker compose logs -f whatsapp +# oder +docker compose logs -f telegram +\`\`\` + +Alternativ kannst du im Beeper-Chat mit dem Bridge-Bot \`login\` schreiben. + +## Wartung + +**Update der Bridges:** +\`\`\`bash +docker compose pull +docker compose up -d +\`\`\` + +**Backup:** +Sichere einfach den kompletten \`data/\` Ordner. Er enthält alle Sitzungen und Schlüssel. diff --git a/data/googlechat/.gitkeep b/data/googlechat/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/signal/.gitkeep b/data/signal/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/telegram/.gitkeep b/data/telegram/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/whatsapp/.gitkeep b/data/whatsapp/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..0afc14b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,51 @@ +services: + whatsapp: + container_name: beeper-whatsapp + image: dock.mau.dev/mautrix/whatsapp:latest + restart: unless-stopped + volumes: + - ./data/whatsapp:/data + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + telegram: + container_name: beeper-telegram + image: dock.mau.dev/mautrix/telegram:latest + restart: unless-stopped + volumes: + - ./data/telegram:/data + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + signal: + container_name: beeper-signal + image: dock.mau.dev/mautrix/signal:latest + restart: unless-stopped + volumes: + - ./data/signal:/data + environment: + - UID=1000 + - GID=1000 + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + googlechat: + container_name: beeper-googlechat + image: dock.mau.dev/mautrix/googlechat:latest + restart: unless-stopped + volumes: + - ./data/googlechat:/data + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" diff --git a/migrate.sh b/migrate.sh new file mode 100755 index 0000000..f012d30 --- /dev/null +++ b/migrate.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Farben +GREEN='\033[0;32m' +BLUE='\033[0;34m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${BLUE}=== Beeper Bridge Migration Tool ===${NC}" +echo "Dieses Skript kopiert deine alten Daten in die neue Docker-Struktur" +echo "und passt die Pfade in der config.yaml automatisch an." +echo "" + +# Funktion zur Migration einer Bridge +migrate_bridge() { + SERVICE_NAME=$1 + DEST_DIR="./data/$SERVICE_NAME" + + echo -e "${YELLOW}--- Migration für $SERVICE_NAME ---${NC}" + read -p "Gib den PFAD zum ALTEN Ordner von $SERVICE_NAME ein (Enter zum Überspringen): " SOURCE_DIR + + # Pfad bereinigen (Tilde expandieren, Slash am Ende entfernen) + SOURCE_DIR="${SOURCE_DIR/#\~/$HOME}" + SOURCE_DIR="${SOURCE_DIR%/}" + + if [ -z "$SOURCE_DIR" ]; then + echo "Übersprungen." + return + fi + + if [ ! -d "$SOURCE_DIR" ]; then + echo "Fehler: Ordner $SOURCE_DIR existiert nicht!" + return + fi + + echo "Kopiere Daten nach $DEST_DIR..." + + # 1. Configs kopieren + cp -v "$SOURCE_DIR/config.yaml" "$DEST_DIR/" 2>/dev/null + cp -v "$SOURCE_DIR/registration.yaml" "$DEST_DIR/" 2>/dev/null + + # 2. Datenbank finden und kopieren + # Wir suchen nach .db Dateien. Oft heißen sie mautrix-telegram.db oder ähnlich. + DB_FILE=$(find "$SOURCE_DIR" -maxdepth 1 -name "*.db" | head -n 1) + + if [ -n "$DB_FILE" ]; then + DB_FILENAME=$(basename "$DB_FILE") + echo "Datenbank gefunden: $DB_FILENAME" + cp -v "$DB_FILE" "$DEST_DIR/bridge.db" + + # 3. Config anpassen (SQLite Pfad) + echo "Passe SQLite-Pfad in config.yaml an..." + # Backup erstellen + cp "$DEST_DIR/config.yaml" "$DEST_DIR/config.yaml.bak" + + # Ersetze die URI Zeile. Wir suchen nach "uri: sqlite:..." und ersetzen es hard durch den Docker Pfad + sed -i 's|uri: sqlite:.*|uri: sqlite:////data/bridge.db|g' "$DEST_DIR/config.yaml" + + echo "Config aktualisiert." + else + echo -e "${YELLOW}Warnung: Keine .db Datei in $SOURCE_DIR gefunden!${NC}" + fi + + # 4. Spezielle Ordner kopieren (z.B. Signal data Ordner falls vorhanden) + if [ "$SERVICE_NAME" == "signal" ] && [ -d "$SOURCE_DIR/data" ]; then + echo "Kopiere Signal 'data' Unterordner..." + cp -r "$SOURCE_DIR/data" "$DEST_DIR/" + fi + + # 5. Berechtigungen setzen (für Docker User 1000 oft notwendig) + chmod -R 777 "$DEST_DIR" + echo -e "${GREEN}Migration für $SERVICE_NAME abgeschlossen.${NC}" + echo "" +} + +# Migration starten +migrate_bridge "whatsapp" +migrate_bridge "telegram" +migrate_bridge "signal" +migrate_bridge "googlechat" + +echo -e "${BLUE}=== Fertig ===${NC}" +echo "Du kannst jetzt 'docker compose up -d' starten."