···11# Tranquil PDS
2233-A production-grade Personal Data Server (PDS) for the AT Protocol. Drop-in replacement for Bluesky's reference PDS, written in rust with postgres and s3-compatible blob storage.
33+A Personal Data Server for the AT Protocol.
44+55+Bluesky runs on a federated protocol called AT Protocol. Your account lives on a PDS, a server that stores your posts, profile, follows, and cryptographic keys. Bluesky hosts one for you at bsky.social, but you can run your own. Self-hosting means you control your data; you're not dependent on any company's servers, and your account + data is actually yours.
66+77+This particular PDS thrives under harsh conditions. It is a dandelion growing through the cracks in the sidewalk concrete.
88+99+It has full compatibility with Bluesky's reference PDS: same endpoints, same behavior, same client compatibility. Everything works: repo operations, blob storage, firehose, OAuth, handle resolution, account migration, the lot.
1010+1111+Another excellent PDS is [Cocoon](https://github.com/haileyok/cocoon), written in go.
1212+1313+## What's different about Tranquil PDS
1414+1515+This software isn't an afterthought by a company with limited resources.
41655-## Features
1717+It is a superset of the reference PDS, including: multi-channel communication (email, discord, telegram, signal) for verification and alerts. Built-in web UI for account management, OAuth consent, repo browsing, and admin. Granular OAuth scopes with UI support such that users choose exactly what apps can access.
61877-- Full AT Protocol support (`com.atproto.*` endpoints)
88-- OAuth 2.1 provider (PKCE, DPoP, PAR)
99-- WebSocket firehose (`subscribeRepos`)
1010-- Multi-channel notifications (email, discord, telegram, signal)
1111-- Built-in web UI for account management
1212-- Per-IP rate limiting
1919+The PDS itself is a single small binary with no node/npm runtime. It does require postgres, valkey, and s3-compatible storage, which makes setup heavier than the reference PDS's sqlite. The tradeoff is that these are battle-tested pieces of infra that we already know how to scale, back up, and monitor.
13201421## Quick Start
1522···5259| [OpenBSD](docs/install-openbsd.md) | OpenBSD 7.8+ with rc.d |
5360| [Containers](docs/install-containers.md) | Podman with quadlets or OpenRC |
5461| [Kubernetes](docs/install-kubernetes.md) | You know what you're doing |
6262+6363+## Thanks
6464+6565+This project is very grateful to [@nel.pet](https://bsky.app/profile/did:plc:h5wsnqetncv6lu2weom35lg2), [@nonbinary.computer](https://bsky.app/profile/did:plc:yfvwmnlztr4dwkb7hwz55r2g), [@juli.ee](https://bsky.app/profile/did:plc:7vimlesenouvuaqvle42yhvo), [@mary.my.id](https://bsky.app/profile/did:plc:ia76kvnndjutgedggx2ibrem), and [@baileytownsend.dev](https://bsky.app/profile/did:plc:rnpkyqnmsw4ipey6eotbdnnf) for their help and their code to lean on.
55665667## License
5768
+2-4
docs/install-debian.md
···11# Tranquil PDS Production Installation on Debian
22-> **Warning**: These instructions are untested and theoretical, written from the top of Lewis' head. They may contain errors or omissions. This warning will be removed once the guide has been verified.
33-44-This guide covers installing Tranquil PDS on Debian 13 "Trixie".
22+This guide covers installing Tranquil PDS on Debian 13.
5364## Prerequisites
75- A VPS with at least 2GB RAM and 20GB disk
86- A domain name pointing to your server's IP
99-- A **wildcard TLS certificate** for `*.pds.example.com` (user handles are served as subdomains)
77+- A wildcard TLS certificate for `*.pds.example.com` (user handles are served as subdomains)
108- Root or sudo access
119## 1. System Setup
1210```bash