#!/bin/bash ## Bootstrap the local dev environment. ## Run after `docker compose -f docker-compose.dev.yaml up -d` set -euo pipefail HOMESERVER="http://localhost:8008" USERNAME="sol" PASSWORD="soldevpassword" SERVER_NAME="sunbeam.local" echo "Waiting for Tuwunel..." until curl -sf "$HOMESERVER/_matrix/client/versions" > /dev/null 2>&1; do sleep 1 done echo "Tuwunel is ready." echo "Registering @sol:$SERVER_NAME..." RESPONSE=$(curl -s -X POST "$HOMESERVER/_matrix/client/v3/register" \ -H "Content-Type: application/json" \ -d "{ \"username\": \"$USERNAME\", \"password\": \"$PASSWORD\", \"auth\": {\"type\": \"m.login.dummy\"} }") ACCESS_TOKEN=$(echo "$RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin).get('access_token',''))" 2>/dev/null || true) DEVICE_ID=$(echo "$RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin).get('device_id',''))" 2>/dev/null || true) if [ -z "$ACCESS_TOKEN" ]; then echo "Registration failed (user may already exist). Trying login..." RESPONSE=$(curl -s -X POST "$HOMESERVER/_matrix/client/v3/login" \ -H "Content-Type: application/json" \ -d "{ \"type\": \"m.login.password\", \"identifier\": {\"type\": \"m.id.user\", \"user\": \"$USERNAME\"}, \"password\": \"$PASSWORD\" }") ACCESS_TOKEN=$(echo "$RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])") DEVICE_ID=$(echo "$RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin)['device_id'])") fi echo "" echo "Add these to your .env or export them:" echo "" echo "export SOL_MATRIX_ACCESS_TOKEN=\"$ACCESS_TOKEN\"" echo "export SOL_MATRIX_DEVICE_ID=\"$DEVICE_ID\"" echo "" echo "Then restart Sol: docker compose -f docker-compose.dev.yaml restart sol"