Initial commit: Beeper Bridge Docker Setup with Migration Script
This commit is contained in:
46
README.md
Normal file
46
README.md
Normal file
@@ -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.
|
||||||
0
data/googlechat/.gitkeep
Normal file
0
data/googlechat/.gitkeep
Normal file
0
data/signal/.gitkeep
Normal file
0
data/signal/.gitkeep
Normal file
0
data/telegram/.gitkeep
Normal file
0
data/telegram/.gitkeep
Normal file
0
data/whatsapp/.gitkeep
Normal file
0
data/whatsapp/.gitkeep
Normal file
51
docker-compose.yml
Normal file
51
docker-compose.yml
Normal file
@@ -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"
|
||||||
83
migrate.sh
Executable file
83
migrate.sh
Executable file
@@ -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."
|
||||||
Reference in New Issue
Block a user