From 51b89d16d6e112312e6610a63b7d29c1c565270f Mon Sep 17 00:00:00 2001 From: Andreas Dueren Date: Mon, 16 Jun 2025 12:48:42 -0600 Subject: [PATCH] Simplify startup script to debug config generation issues --- start.sh | 111 +++++++++++++++---------------------------------------- 1 file changed, 30 insertions(+), 81 deletions(-) diff --git a/start.sh b/start.sh index 6364686..73b9dd6 100755 --- a/start.sh +++ b/start.sh @@ -20,94 +20,43 @@ CONFIG_PATH="/app/data/config.yaml" REGISTRATION_PATH="/app/data/registration.yaml" BACKUP_PATH="/app/data/config.yaml.bak" -# Create example config from built-in template +# Try to generate config from built-in template if [ ! -f "$CONFIG_PATH" ]; then - echo "=> Generating example configuration" - # Generate config as root first, then fix permissions - /app/pkg/mautrix-whatsapp -g -c "$CONFIG_PATH" -r "$REGISTRATION_PATH" || { - echo "=> Config generation failed, creating minimal config" - # Generate secure random tokens - AS_TOKEN=$(openssl rand -hex 32) - HS_TOKEN=$(openssl rand -hex 32) - - cat > "$CONFIG_PATH" << EOF -homeserver: - address: https://matrix.example.com - domain: example.com - -appservice: - address: https://example.com - hostname: 0.0.0.0 - port: 29318 - as_token: $AS_TOKEN - hs_token: $HS_TOKEN - database: - type: postgres - uri: postgres://user:pass@localhost/db - -bridge: - username_template: whatsapp_{{.}} - displayname_template: "{{if .BusinessName}}{{.BusinessName}}{{else}}{{.PushName}}{{end}} (WA)" + echo "=> Attempting to generate configuration using mautrix-whatsapp" + /app/pkg/mautrix-whatsapp -g -c "$CONFIG_PATH" -r "$REGISTRATION_PATH" -logging: - handlers: - console: - format: json - file: - filename: /app/data/mautrix-whatsapp.log - level: info -EOF - cat > "$REGISTRATION_PATH" << EOF -id: whatsapp -url: https://example.com -as_token: $AS_TOKEN -hs_token: $HS_TOKEN -rate_limited: false -sender_localpart: whatsappbot -namespaces: - users: - - exclusive: true - regex: '@whatsapp_.*:.*' - aliases: - - exclusive: true - regex: '#whatsapp_.*:.*' -EOF - } - - # Configure for Cloudron environment - if [ -n "${CLOUDRON_POSTGRESQL_URL:-}" ]; then - echo "=> Configuring PostgreSQL database" - yq eval ".appservice.database.uri = \"$CLOUDRON_POSTGRESQL_URL\"" -i "$CONFIG_PATH" + if [ ! -f "$CONFIG_PATH" ]; then + echo "=> ERROR: Config generation failed and no config file was created" + echo "=> Will try to start without config to see error messages" + else + echo "=> Config generation successful" fi - if [ -n "${CLOUDRON_APP_DOMAIN:-}" ]; then - echo "=> Configuring homeserver and appservice settings" - # For whatsapp.matrix.as.ci -> matrix.as.ci and domain as.ci - BASE_DOMAIN=$(echo "$CLOUDRON_APP_DOMAIN" | cut -d. -f2-) + # Only configure if config was successfully generated + if [ -f "$CONFIG_PATH" ]; then + echo "=> Applying basic Cloudron configuration" - # Update homeserver configuration - yq eval ".homeserver.address = \"https://matrix.$BASE_DOMAIN\"" -i "$CONFIG_PATH" - yq eval ".homeserver.domain = \"$BASE_DOMAIN\"" -i "$CONFIG_PATH" + # Configure for Cloudron environment only if config exists + if [ -n "${CLOUDRON_POSTGRESQL_URL:-}" ]; then + echo "=> Configuring PostgreSQL database" + yq eval ".appservice.database.uri = \"$CLOUDRON_POSTGRESQL_URL\"" -i "$CONFIG_PATH" 2>/dev/null || echo "=> Warning: Could not configure database" + fi - # Update appservice configuration - yq eval ".appservice.address = \"https://$CLOUDRON_APP_DOMAIN\"" -i "$CONFIG_PATH" - yq eval ".appservice.hostname = \"0.0.0.0\"" -i "$CONFIG_PATH" - yq eval ".appservice.port = 29318" -i "$CONFIG_PATH" + if [ -n "${CLOUDRON_APP_DOMAIN:-}" ]; then + echo "=> Configuring homeserver and appservice settings" + BASE_DOMAIN=$(echo "$CLOUDRON_APP_DOMAIN" | cut -d. -f2-) + + # Update homeserver configuration + yq eval ".homeserver.address = \"https://matrix.$BASE_DOMAIN\"" -i "$CONFIG_PATH" 2>/dev/null || echo "=> Warning: Could not configure homeserver address" + yq eval ".homeserver.domain = \"$BASE_DOMAIN\"" -i "$CONFIG_PATH" 2>/dev/null || echo "=> Warning: Could not configure homeserver domain" + + # Update appservice configuration + yq eval ".appservice.address = \"https://$CLOUDRON_APP_DOMAIN\"" -i "$CONFIG_PATH" 2>/dev/null || echo "=> Warning: Could not configure appservice address" + fi + + chown cloudron:cloudron "$CONFIG_PATH" "$REGISTRATION_PATH" 2>/dev/null || true + echo "=> Configuration applied successfully" fi - - # Set log file path - yq eval ".logging.handlers.file.filename = \"/app/data/mautrix-whatsapp.log\"" -i "$CONFIG_PATH" - - chown cloudron:cloudron "$CONFIG_PATH" "$REGISTRATION_PATH" - - echo "=> Initial configuration complete" - echo "=> IMPORTANT: Please review $CONFIG_PATH and configure your Matrix homeserver settings" - echo "=> You will need to:" - echo " 1. Copy $REGISTRATION_PATH to your Matrix homeserver" - echo " 2. Update your homeserver configuration to include the registration file" - echo " 3. Restart your Matrix homeserver" - echo " 4. Restart this bridge app" - echo " 5. Authenticate with WhatsApp using QR code scanning" else echo "=> Using existing configuration" # Fix configuration in existing config if needed