Monorepo for Aesthetic.Computer
aesthetic.computer
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`