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"