# SkateSpots Relay Configuration Guide ## Your Relay URL Once you have your relay running, update this file with your actual relay URL. **Current relay URL:** `TO_BE_CONFIGURED` **Options:** - Tailscale (private): `ws://skatespots-relay:3334` - Cloudflare (public): `wss://your-tunnel-url.trycloudflare.com` - Tor (private): `ws://your-onion-address.onion:3334` - Custom domain: `wss://relay.skatespots.com` ## Updating the App Once you have your relay URL, update `src/App.tsx`: ```typescript const defaultConfig: AppConfig = { relayMetadata: { relays: [ { url: 'YOUR-RELAY-URL-HERE', read: true, write: true }, { url: 'wss://relay.damus.io', read: true, write: true }, { url: 'wss://nos.lol', read: true, write: true }, ], }, }; ``` ## Event Kind Policies Your relay should enforce these policies: ### Zero Friction: - **Spots (Kind 30818):** Anyone can publish immediately ### Light Friction: - **Events (Kind 31923):** Require 1+ follower - **Comments (Kind 1):** Require 1+ follower - **Reactions (Kind 7):** Require 1+ follower ### Verification Required: - **Coaches (Kind 35001):** Require NIP-05 OR 3+ followers - **Shops (Kind 30017):** Require NIP-05 ## Testing Before going live, test that spots can be published: 1. Update relay URL in `src/App.tsx` 2. Clear browser cache 3. Try adding a spot 4. Check relay logs: `docker-compose logs -f` 5. Should see: `Event accepted: kind=30818` ## Sharing Access ### For Tailscale Network: 1. Go to: https://login.tailscale.com/admin/settings/sharing 2. Create shareable invite link 3. Share with your skate crew 4. They install Tailscale, accept invite, done! ### For Public Relay: Just share the app URL - relay works automatically: https://skate-spots.shakespeare.wtf ## Monitoring **Check relay health:** ```bash # View logs docker-compose logs -f # Check database size du -sh db/ # Count events sqlite3 db/relay.db "SELECT COUNT(*) FROM events;" # Count WoT members sqlite3 db/relay.db "SELECT COUNT(*) FROM wot;" ``` **Relay info page:** Open browser to: http://YOUR-RELAY-URL (shows stats) ## Backup **Automatic backup script (run weekly):** ```bash #!/bin/bash # backup-relay.sh DATE=$(date +%Y%m%d) BACKUP_DIR="$HOME/skatespots-relay-backups" mkdir -p $BACKUP_DIR cd $HOME/skatespots-relay # Stop relay docker-compose down # Backup database tar -czf $BACKUP_DIR/skatespots-relay-$DATE.tar.gz db/ # Start relay docker-compose up -d # Keep only last 30 days find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete echo "Backup complete: skatespots-relay-$DATE.tar.gz" ``` **Run weekly via cron:** ```bash crontab -e # Add: 0 3 * * 0 /home/umbrel/backup-relay.sh ``` ## Troubleshooting ### Spots not publishing? 1. Check relay is running: `docker ps | grep skatespots-relay` 2. Check relay logs: `docker-compose logs | tail -50` 3. Test connection: `wscat -c YOUR-RELAY-URL` 4. Verify app is using correct URL (check Settings > Nostr Relays) ### Relay using too much resources? ```bash # Check resource usage docker stats skatespots-relay # Adjust limits in docker-compose.yml: services: skatespots-relay: deploy: resources: limits: memory: 1G cpus: '0.5' ``` ### Spam appearing? ```bash # Tighten WoT settings: # Edit .env: MINIMUM_FOLLOWERS=3 # Increase from 1 to 3 # Restart relay: docker-compose restart ``` ## Next Steps 1. ✅ Deploy relay on Umbrel 2. ✅ Choose access method (Tailscale/Cloudflare/Tor) 3. ✅ Update app configuration with relay URL 4. ✅ Test spot creation 5. ✅ Invite your skate crew 6. ✅ Monitor and adjust as needed