Monorepo for Aesthetic.Computer aesthetic.computer
at main 243 lines 4.8 kB view raw view rendered
1# ATProto PDS Management 2 3Quick reference for managing the aesthetic.computer Personal Data Server (PDS). 4 5## Quick Commands 6 7### Access PDS Admin Console 8 9```fish 10# Drop into interactive SSH shell on PDS server 11ac-pds 12 13# Run pdsadmin commands directly 14ac-pds account create # Create a new account 15ac-pds account list # List all accounts 16ac-pds create-invite-code # Generate an invite code 17ac-pds update # Update PDS to latest version 18``` 19 20## Server Details 21 22- **Hostname**: `pds.aesthetic.computer` 23- **Wildcard**: `*.pds.aesthetic.computer` 24- **Droplet**: `aesthetic-computer-pds` (DigitalOcean NYC3) 25- **IP**: `138.197.35.160` 26- **Storage**: `pds-blobs-aesthetic-computer` (DigitalOcean Spaces) 27- **Admin Email**: `mail@aesthetic.computer` 28 29## Common Tasks 30 31### Create Your First Account 32 33```fish 34# Interactive mode 35ac-pds 36# Then on server: 37pdsadmin account create 38 39# Or directly from dev container: 40ac-pds account create 41``` 42 43You'll be prompted for: 44- Email address 45- Handle (e.g., `you.pds.aesthetic.computer`) 46- Password 47 48### Generate Invite Code 49 50```fish 51ac-pds create-invite-code 52``` 53 54### Check PDS Health 55 56```fish 57# From dev container 58curl https://pds.aesthetic.computer/xrpc/_health 59 60# Should return: {"version":"0.4.x"} 61``` 62 63### Check Service Status 64 65```fish 66ac-pds 67# Then on server: 68systemctl status pds 69docker ps 70``` 71 72### View PDS Logs 73 74```fish 75ac-pds 76# Then on server: 77docker logs pds 78journalctl -u pds -f 79``` 80 81### Update PDS 82 83```fish 84ac-pds update 85``` 86 87## Configuration 88 89### PDS Environment File 90 91Located at: `/pds/pds.env` on server 92 93Key settings: 94- `PDS_HOSTNAME`: Domain name 95- `PDS_EMAIL_SMTP_URL`: SMTP settings (Gmail configured) 96- `PDS_EMAIL_FROM_ADDRESS`: Email sender 97- `PDS_DATA_DIRECTORY`: SQLite database location 98- `PDS_BLOBSTORE_*`: DigitalOcean Spaces configuration 99 100To edit: 101```fish 102ac-pds 103nano /pds/pds.env 104systemctl restart pds 105``` 106 107### Spaces Credentials (Blob Storage) 108 109Already configured in `/pds/pds.env`: 110- Region: `nyc3` 111- Bucket: `pds-blobs-aesthetic-computer` 112- Endpoint: `https://nyc3.digitaloceanspaces.com` 113 114## Bluesky App Integration 115 1161. Open [Bluesky app](https://bsky.app) or mobile app 1172. Click "Sign in" → "Hosting Provider" 1183. Enter: `https://pds.aesthetic.computer` 1194. Use your account credentials or invite code 120 121Note: First time subdomain certificates take 10-30s to provision. 122 123## Deployment 124 125See `/at/pds/` directory for: 126- `QUICKSTART.md` - 15-minute deployment guide 127- `DEPLOYMENT.md` - Complete setup instructions 128- `MAINTENANCE.md` - Operations guide 129- `deployment/digitalocean/` - Automated deployment scripts 130 131### Redeploy from Scratch 132 133```fish 134cd /workspaces/aesthetic-computer/at/pds/deployment/digitalocean 135fish deploy.fish 136``` 137 138## Troubleshooting 139 140### DNS Not Resolving 141 142```fish 143# Check DNS propagation 144dig pds.aesthetic.computer 145dig random.pds.aesthetic.computer 146 147# Should both return: 138.197.35.160 148``` 149 150### PDS Not Responding 151 152```fish 153ac-pds 154systemctl status pds 155docker ps 156docker logs pds 157``` 158 159### Email Not Sending 160 161Check SMTP configuration in `/pds/pds.env`: 162```fish 163ac-pds 164grep SMTP /pds/pds.env 165systemctl restart pds 166``` 167 168### Spaces Connection Issues 169 170```fish 171ac-pds 172grep BLOBSTORE /pds/pds.env 173# Verify credentials match vault: ~/aesthetic-computer/aesthetic-computer-vault/at/deploy.env 174``` 175 176## Backup & Recovery 177 178### Manual Backup 179 180```fish 181ac-pds 182/pds/pds-backup.sh 183# Backups stored in: pds-blobs-aesthetic-computer/backups/ 184``` 185 186### Restore from Backup 187 188```fish 189ac-pds 190# Stop PDS 191systemctl stop pds 192 193# Restore databases 194aws s3 cp s3://pds-blobs-aesthetic-computer/backups/latest/accounts.sqlite /pds/ 195aws s3 cp s3://pds-blobs-aesthetic-computer/backups/latest/pds.sqlite /pds/ 196 197# Restart 198systemctl start pds 199``` 200 201## Security 202 203- SSH access via key authentication only (`~/.ssh/aesthetic_pds`) 204- Firewall configured for ports 22, 80, 443 only 205- Let's Encrypt SSL/TLS via Caddy (auto-renewed) 206- SMTP password stored in vault, not committed to git 207 208## Monitoring 209 210### Health Check Script 211 212Located at: `/at/pds/scripts/health-check.sh` 213 214```fish 215cd /workspaces/aesthetic-computer/at/pds/scripts 216bash health-check.sh 217``` 218 219### Metrics to Watch 220 221- Disk usage: `df -h` on server 222- Memory: `free -h` 223- Docker status: `docker stats pds` 224- Log size: `du -sh /pds/*.log` 225 226## Cost 227 228- Droplet: $6/month (1GB RAM, 1 vCPU, 25GB SSD) 229- Spaces: $5/month (250GB storage, 1TB transfer) 230- **Total: ~$11/month** 231 232## References 233 234- Official PDS Docs: https://github.com/bluesky-social/pds 235- ATProto Specs: https://atproto.com/ 236- Discord: https://discord.gg/e7hpHxRfBP (AT Protocol PDS Admins) 237 238## Related Tools 239 240- Account management: `/at/post-to-bluesky.mjs` 241- Painting sharing: `/at/share-latest-painting.mjs` 242- Profile queries: `/at/query-profile.mjs` 243- Post management: `/at/delete-all-posts.mjs`