๐ฆ Bluesky PDS
Host: Homelab ยท Compose:
Homelab/Bluesky/compose.yaml
Stack name:bluesky
1. Overview
A self-hosted Bluesky Personal Data Server (PDS) running the AT Protocol. This allows you to own your Bluesky identity and data under a custom domain (slashd0t.com). Caddy acts as the local TLS reverse proxy, while Dockflare/Cloudflare Tunnel handles external access.
2. Architecture & Services
| Service | Image | Port | Role |
|---|---|---|---|
caddy |
caddy:2.11 |
โ (internal) | Local reverse proxy / TLS terminator for the PDS |
pds |
bluesky-social/pds:0.4.5001 |
โ (internal) | AT Protocol Personal Data Server |
3. Networking
internalโ Bridge network connecting Caddy and PDS.cloudflare-netโ External network connecting the PDS to the Dockflare Cloudflare tunnel, which exposes:slashd0t.comโ PDS web UI*.slashd0t.comโ PDS API (wildcard)
4. Persistent Storage
| Container | Host Path | Description |
|---|---|---|
caddy |
/pds/caddy/data |
Caddy TLS certificates and cache |
caddy |
/pds/caddy/etc/caddy |
Caddy configuration (Caddyfile) |
pds |
/pds |
All PDS data: repos, blobs, keys |
5. Environment Variables
All PDS configuration is loaded from .env alongside the compose file.
| Variable | Description |
|---|---|
PDS_HOSTNAME |
Your PDS domain (e.g. slashd0t.com) |
PDS_JWT_SECRET |
Secret for signing JWT tokens |
PDS_ADMIN_PASSWORD |
Admin password for the PDS management API |
PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX |
Private key for DID rotation |
PDS_BLOBSTORE_DISK_LOCATION |
Path inside container for blob storage |
6. Access & Usage
| Endpoint | URL |
|---|---|
| Bluesky Web | https://slashd0t.com |
| PDS API (wildcard) | https://*.slashd0t.com |
| PDS Admin API | https://slashd0t.com/xrpc/com.atproto.server.* |
# Start the stack
docker compose -f Homelab/Bluesky/compose.yaml up -d
# Check PDS health
curl https://slashd0t.com/xrpc/_health
# View PDS logs
docker compose -f Homelab/Bluesky/compose.yaml logs -f pds
7. Maintenance & Backup
# Update PDS
docker compose -f Homelab/Bluesky/compose.yaml pull
docker compose -f Homelab/Bluesky/compose.yaml up -d
# Backup (all state is in /pds on the host)
rsync -av /pds/ /backup/bluesky/
[!IMPORTANT] Back up
/pdsregularly. This directory contains your cryptographic keys โ loss means you cannot rotate your DID and may lose your identity permanently.