Host your own Bluesky Personal Data Server (PDS) tutorial
Personal Data Servers are the persistent data stores of the Bluesky network. It houses a user's data, stores credentials, and if a user is kicked off the Bluesky network the Personal Data Server admin handles the deletion.
However, the Bluesky network -- or more accurately, the network upon which Bluesky is built -- is completely decentralized. That means anyone can host their own Personal Data Server (PDS) and connect it to the network.
A fully decentralized architecture
The implications of this decentralization are significant.
No single government can simply shut down the Bluesky network. If a PDS in one country is shut down, anyone can spin up a new one somewhere else.
Furthermore, it grants users full control of their data and their account. If I connect my own PDS to the network, and I have full admin rights to my node, nobody else can delete my users or my data, or take control of my system.
To really understand how Personal Data Servers, the AT Protocol and the various other infrastructure components that make Bluesky work, you really need to set up a PDS of your own, connect it to the network and log in to Bluesky from your own personal node. This Bluesky PDS tutorial shows you how to do all of that.
How to install your own Bluesky PDS instance
The source of truth for PDS installation is the GitHub Readme, as the process is likely to change periodically as the technology matures. However, the basic steps outlined in this tutorial include the following:
- Ensure you have a domain name you can map to a static IP address.
- Run the PDS installation script on an Ubuntu 22 server (the only Ubuntu version it supports).
- Install WebSocket support on your server.
- Use the pdsadmin tool to create a new account.
- Log in to the Bluesky network with your custom domain.

You can complete the process from start to finish in as little as 10 minutes. After that, your fully federated node acts as a first-class citizen on the Bluesky app, with the only difference that you are in full control of the data stored on your server.
Cameron McKenzie has been a Java EE software engineer for 20 years. His current specialties include Agile development; DevOps; Spring; and container-based technologies such as Docker, Swarm and Kubernetes.