#!/bin/bash # FCM Setup Script for Sojorn Server # Run this on the server after uploading your firebase-service-account.json set -e echo "=== Sojorn FCM Setup Script ===" echo "" # Check if running as root or with sudo if [ "$EUID" -eq 0 ]; then echo "Please run as regular user (patrick), not root" exit 1 fi # Check if firebase service account JSON exists in /tmp if [ ! -f "/tmp/firebase-service-account.json" ]; then echo "ERROR: /tmp/firebase-service-account.json not found" echo "" echo "Please upload it first:" echo "scp -i \"C:\\Users\\Patrick\\.ssh\\mpls.pem\" \"path\\to\\firebase-service-account.json\" patrick@194.238.28.122:/tmp/firebase-service-account.json" exit 1 fi echo "✓ Found firebase-service-account.json in /tmp" # Move to /opt/sojorn echo "Moving firebase-service-account.json to /opt/sojorn..." sudo mv /tmp/firebase-service-account.json /opt/sojorn/firebase-service-account.json # Set permissions echo "Setting permissions..." sudo chmod 600 /opt/sojorn/firebase-service-account.json sudo chown patrick:patrick /opt/sojorn/firebase-service-account.json # Verify if [ -f "/opt/sojorn/firebase-service-account.json" ]; then echo "✓ Firebase service account JSON installed" ls -lh /opt/sojorn/firebase-service-account.json else echo "✗ Failed to install firebase-service-account.json" exit 1 fi # Check if .env exists if [ ! -f "/opt/sojorn/.env" ]; then echo "ERROR: /opt/sojorn/.env not found" echo "Please create it first" exit 1 fi # Check if FIREBASE_CREDENTIALS_FILE is already in .env if grep -q "FIREBASE_CREDENTIALS_FILE" /opt/sojorn/.env; then echo "✓ FIREBASE_CREDENTIALS_FILE already in .env" else echo "Adding FIREBASE_CREDENTIALS_FILE to .env..." echo "" | sudo tee -a /opt/sojorn/.env > /dev/null echo "# Firebase Cloud Messaging" | sudo tee -a /opt/sojorn/.env > /dev/null echo "FIREBASE_CREDENTIALS_FILE=/opt/sojorn/firebase-service-account.json" | sudo tee -a /opt/sojorn/.env > /dev/null echo "✓ Added FIREBASE_CREDENTIALS_FILE to .env" fi # Prompt for VAPID key if not set if ! grep -q "FIREBASE_WEB_VAPID_KEY" /opt/sojorn/.env; then echo "" echo "VAPID key not found in .env" echo "Get it from: https://console.firebase.google.com/project/sojorn-a7a78/settings/cloudmessaging" echo "" read -p "Enter your FIREBASE_WEB_VAPID_KEY (or press Enter to skip): " vapid_key if [ ! -z "$vapid_key" ]; then echo "FIREBASE_WEB_VAPID_KEY=$vapid_key" | sudo tee -a /opt/sojorn/.env > /dev/null echo "✓ Added FIREBASE_WEB_VAPID_KEY to .env" else echo "⚠ Skipped VAPID key - you'll need to add it manually later" fi else echo "✓ FIREBASE_WEB_VAPID_KEY already in .env" fi echo "" echo "=== Configuration Summary ===" echo "Service Account JSON: /opt/sojorn/firebase-service-account.json" sudo cat /opt/sojorn/.env | grep FIREBASE || echo "No FIREBASE vars found" echo "" echo "=== Restarting Go Backend ===" cd /home/patrick/sojorn-backend sudo systemctl restart sojorn-api sleep 2 sudo systemctl status sojorn-api --no-pager echo "" echo "=== Checking Logs ===" echo "Looking for FCM initialization..." sudo journalctl -u sojorn-api --since "30 seconds ago" | grep -i "push\|fcm\|firebase" || echo "No FCM logs found yet" echo "" echo "✓ FCM Setup Complete!" echo "" echo "Next steps:" echo "1. Update Flutter app with your VAPID key in firebase_web_config.dart" echo "2. Hot restart the Flutter app" echo "3. Check browser console for 'FCM token registered'" echo "" echo "To view live logs: sudo journalctl -u sojorn-api -f"