A community based topic aggregation platform built on atproto
1#!/bin/bash 2 3# Script: 1-create-pds-account.sh 4# Purpose: Create a PDS account for your aggregator 5# 6# This script helps you create an account on a PDS (Personal Data Server). 7# The PDS will automatically create a DID:PLC for you. 8 9set -e 10 11echo "================================================" 12echo "Step 1: Create PDS Account for Your Aggregator" 13echo "================================================" 14echo "" 15 16# Get PDS URL 17read -p "Enter PDS URL (default: https://bsky.social): " PDS_URL 18PDS_URL=${PDS_URL:-https://bsky.social} 19 20# Get credentials 21read -p "Enter desired handle (e.g., mynewsbot.bsky.social): " HANDLE 22read -p "Enter email: " EMAIL 23read -sp "Enter password: " PASSWORD 24echo "" 25 26# Validate inputs 27if [ -z "$HANDLE" ] || [ -z "$EMAIL" ] || [ -z "$PASSWORD" ]; then 28 echo "Error: All fields are required" 29 exit 1 30fi 31 32echo "" 33echo "Creating account on $PDS_URL..." 34 35# Create account via com.atproto.server.createAccount 36RESPONSE=$(curl -s -X POST "$PDS_URL/xrpc/com.atproto.server.createAccount" \ 37 -H "Content-Type: application/json" \ 38 -d "{ 39 \"handle\": \"$HANDLE\", 40 \"email\": \"$EMAIL\", 41 \"password\": \"$PASSWORD\" 42 }") 43 44# Check if successful 45if echo "$RESPONSE" | jq -e '.error' > /dev/null 2>&1; then 46 echo "Error creating account:" 47 echo "$RESPONSE" | jq '.' 48 exit 1 49fi 50 51# Extract DID and access token 52DID=$(echo "$RESPONSE" | jq -r '.did') 53ACCESS_JWT=$(echo "$RESPONSE" | jq -r '.accessJwt') 54REFRESH_JWT=$(echo "$RESPONSE" | jq -r '.refreshJwt') 55 56if [ -z "$DID" ] || [ "$DID" = "null" ]; then 57 echo "Error: Failed to extract DID from response" 58 echo "$RESPONSE" | jq '.' 59 exit 1 60fi 61 62echo "" 63echo "✓ Account created successfully!" 64echo "" 65echo "=== Save these credentials ====" 66echo "DID: $DID" 67echo "Handle: $HANDLE" 68echo "PDS URL: $PDS_URL" 69echo "Email: $EMAIL" 70echo "Password: [hidden]" 71echo "Access JWT: $ACCESS_JWT" 72echo "Refresh JWT: $REFRESH_JWT" 73echo "===============================" 74echo "" 75 76# Save to config file 77CONFIG_FILE="aggregator-config.env" 78cat > "$CONFIG_FILE" <<EOF 79# Aggregator Account Configuration 80# Generated: $(date) 81 82AGGREGATOR_DID="$DID" 83AGGREGATOR_HANDLE="$HANDLE" 84AGGREGATOR_PDS_URL="$PDS_URL" 85AGGREGATOR_EMAIL="$EMAIL" 86AGGREGATOR_PASSWORD="$PASSWORD" 87AGGREGATOR_ACCESS_JWT="$ACCESS_JWT" 88AGGREGATOR_REFRESH_JWT="$REFRESH_JWT" 89EOF 90 91echo "✓ Configuration saved to $CONFIG_FILE" 92echo "" 93echo "IMPORTANT: Keep this file secure! It contains your credentials." 94echo "" 95echo "Next step: Run ./2-setup-wellknown.sh"