
Self-hosting Bluesky PDS the easy way
Yulei ChenBluesky is a decentralized social network built on the AT Protocol. By default, your account lives on Bluesky's servers. But the protocol is designed so you can run your own Personal Data Server (PDS) and truly own your identity, your data, and your social graph. No more depending on a single company to keep your account alive.
Sliplane makes running your own PDS painless. With a one-click preset, you get a fully configured Bluesky PDS with persistent storage, automatic HTTPS, and zero server management.
Prerequisites
Before deploying, ensure you have a Sliplane account (free trial available) and a domain name.
Quick start
Sliplane provides one-click deployment with presets.
- Click the deploy button above
- Select a project
- Select a server. If you just signed up you get a 48-hour free trial server
- Click Deploy!
About the preset
The one-click deploy above uses Sliplane's Bluesky PDS preset. Here's what it includes:
- Official
ghcr.io/bluesky-social/pdsimage, version0.4.182(check GitHub releases for newer versions) - Persistent storage mounted to
/pdsfor your data and blob storage - Pre-configured AT Protocol network settings (PLC directory, app view, report service, crawlers)
- Auto-generated JWT secret, admin password, and PLC rotation key
- Custom startup command that installs
pdsadminfor account management - Health check on
/xrpc/_health
Next steps
Once your PDS is running, you can access it at the domain Sliplane provides (e.g. bluesky-pds-xxxx.sliplane.app).
Add your domain
You need to add your own domain before using the PDS. Go to your Sliplane service dashboard, open Domains, and click Add Domain. Enter your domain, then add one of the provided DNS records at your DNS provider.
Please note that you also need to add a A record points to *.yourdomain.com for all your subdomains.
Creating accounts
To create a new account on your PDS, SSH into the container and use the goat admin command.
In your Sliplane service dashboard, open SSH, attach an SSH key, and copy the SSH command Sliplane provides. It will look like this:
ssh -p 22222 service_xxxx@xxx.sliplane.app
Once you are connected, create the account:
goat pds admin account create --admin-password `PDS_ADMIN_PASSWORD` --handle newuser.pds.net --email new-user@email.com --password new-password
You can find PDS_ADMIN_PASSWORD in your service's environment variables. Replace newuser.pds.net, new-user@email.com, and new-password with your own values. For more details on adding SSH keys, see the Sliplane docs - Direct SSH Connection.
Login to Bluesky
Once your account is created, open Bluesky and sign in with Custom Provider. Enter your PDS domain, then log in with the handle and password you created above.
Logging
The PDS logs to stdout by default, which works perfectly with Sliplane's built-in log viewer. The LOG_ENABLED variable is set to true in the preset. For general Docker logging tips, check out our post on how to use Docker logs.
Cost comparison
Here's how hosting a Bluesky PDS compares across providers:
| Provider | vCPU Cores | RAM | Disk | Estimated Monthly Cost | Notes |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 | charge per server |
| Render | 1 | 2 GB | 40 GB | ~$35-$45 | VM Small |
| Fly.io | 2 | 2 GB | 40 GB | ~$20-$25 | VM + volume |
| Railway | 2 | 2 GB | 40 GB | ~$15-$66 | Usage-based |
FAQ
How do I update Bluesky PDS?
Change the image tag in your service settings on Sliplane and redeploy. Check the Bluesky PDS GitHub releases for the latest stable version. Your data in the /pds volume persists across updates.
Can I migrate my existing Bluesky account to my PDS?
Yes, the AT Protocol supports account migration between servers. You can move your existing identity from bsky.social to your own PDS while keeping your followers, posts, and social graph. Check the AT Protocol account migration docs for the detailed process.
What resources does a PDS need?
For a personal PDS (a handful of accounts), 2 GB RAM and 2 vCPU cores are plenty. Storage depends on how much media you and your users post. The Sliplane starter server with 40 GB disk is a solid starting point. If you need more storage later, you can upgrade your server in the dashboard.