diff --git a/configure_beeper.sh b/configure_beeper.sh new file mode 100644 index 0000000..f3a68eb --- /dev/null +++ b/configure_beeper.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +echo "=== Beeper Bridge Configuration Helper ===" +echo "This script sets the Beeper Homeserver details in your bridge configs." +echo "Run this on the REMOTE server." + +cat << 'PYTHON_SCRIPT' > apply_beeper_config.py +import sys +import os + +try: + from ruamel.yaml import YAML +except ImportError: + import subprocess + subprocess.check_call([sys.executable, "-m", "pip", "install", "ruamel.yaml"]) + from ruamel.yaml import YAML + +yaml = YAML() +yaml.preserve_quotes = True + +services = ["whatsapp", "telegram", "signal", "googlechat"] +base_dir = "data" + +# Beeper Standard Config +HS_ADDRESS = "https://matrix.beeper.com" +HS_DOMAIN = "beeper.com" + +for service in services: + config_path = os.path.join(base_dir, service, "config.yaml") + + if not os.path.exists(config_path): + print(f"[{service}] Config missing. Skipping.") + continue + + print(f"[{service}] Updating homeserver config...") + try: + with open(config_path, 'r') as f: + data = yaml.load(f) + + changed = False + + # Ensure homeserver section exists + if 'homeserver' not in data: + data['homeserver'] = {} + + if data['homeserver'].get('address') != HS_ADDRESS: + data['homeserver']['address'] = HS_ADDRESS + changed = True + + if data['homeserver'].get('domain') != HS_DOMAIN: + data['homeserver']['domain'] = HS_DOMAIN + changed = True + + # Fix Appservice listening port/address if needed (Standard Docker internal) + # The bridge listens on 0.0.0.0:29317 (etc) internally usually, but + # let's just ensure 'address' in 'appservice' is 0.0.0.0 so it accepts docker traffic? + # Actually, let's not touch appservice.address unless requested, default is usually localhost or ::1 which might break in docker. + # Docker images usually default to 0.0.0.0. + + if changed: + with open(config_path, 'w') as f: + yaml.dump(data, f) + print(f"[{service}] Updated homeserver to {HS_DOMAIN}.") + else: + print(f"[{service}] Config already correct.") + + except Exception as e: + print(f"[{service}] Error: {e}") + +PYTHON_SCRIPT + +echo "[*] Applying configuration..." +docker run --rm \ + -v "$(pwd):/work" \ + -w /work \ + python:3.11-slim \ + sh -c "pip install ruamel.yaml && python apply_beeper_config.py" + +rm apply_beeper_config.py + +echo "" +echo "=== IMPORTANT NEXT STEPS ===" +echo "1. REGISTRATION FILES:" +echo " You must generate 'registration.yaml' for each bridge using 'bbctl' on your local machine." +echo " Example: 'bbctl register googlechat'" +echo " Then upload the resulting 'registration.yaml' to 'data/googlechat/registration.yaml' on this server." +echo "" +echo " If you see 'as_token was not accepted' in logs, your registration.yaml is wrong or mismatching." +echo "" +echo "2. RESTART:" +echo " After uploading the registration files, run: docker compose restart"