this repo has no description
1# Tranquil PDS
2
3A Personal Data Server for the AT Protocol.
4
5Bluesky 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.
6
7This particular PDS thrives under harsh conditions. It is a dandelion growing through the cracks in the sidewalk concrete.
8
9It 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.
10
11Another excellent PDS is [Cocoon](https://github.com/haileyok/cocoon), written in go.
12
13## What's different about Tranquil PDS
14
15This software isn't an afterthought by a company with limited resources.
16
17It 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.
18
19The 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.
20
21## Quick Start
22
23```bash
24cp .env.example .env
25podman compose up -d
26just run
27```
28
29## Configuration
30
31See `.env.example` for all configuration options.
32
33## Development
34
35Run `just` to see available commands.
36
37```bash
38just test
39just lint
40```
41
42## Production Deployment
43
44### Quick Deploy (Docker/Podman Compose)
45
46Edit `.env.prod` with your values. Generate secrets with `openssl rand -base64 48`.
47
48```bash
49cp .env.prod.example .env.prod
50podman-compose -f docker-compose.prod.yml up -d
51```
52
53### Installation Guides
54
55| Guide | Best For |
56|-------|----------|
57| [Debian](docs/install-debian.md) | Debian 13+ with systemd |
58| [Alpine](docs/install-alpine.md) | Alpine 3.23+ with OpenRC |
59| [OpenBSD](docs/install-openbsd.md) | OpenBSD 7.8+ with rc.d |
60| [Containers](docs/install-containers.md) | Podman with quadlets or OpenRC |
61| [Kubernetes](docs/install-kubernetes.md) | You know what you're doing |
62
63## Thanks
64
65This 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.
66
67## License
68
69TBD