Skip to content

๐Ÿฆ‹ 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 /pds regularly. This directory contains your cryptographic keys โ€” loss means you cannot rotate your DID and may lose your identity permanently.