this repo has no description
1# Tranquil PDS on Kubernetes
2
3If you're reaching for kubernetes for this app, you're experienced enough to know how to spin up:
4
5- cloudnativepg (or your preferred postgres operator)
6- valkey
7- s3-compatible object storage (minio operator, or just use a managed service)
8- the app itself (it's just a container with some env vars)
9
10You'll need a wildcard TLS certificate for `*.your-pds-hostname.example.com`. User handles are served as subdomains.
11
12The container image expects:
13- `DATABASE_URL` - postgres connection string
14- `S3_ENDPOINT`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `S3_BUCKET`
15- `BACKUP_S3_BUCKET` - bucket for repo backups (optional but recommended)
16- `VALKEY_URL` - redis:// connection string
17- `PDS_HOSTNAME` - your PDS hostname (without protocol)
18- `JWT_SECRET`, `DPOP_SECRET`, `MASTER_KEY` - generate with `openssl rand -base64 48`
19- `CRAWLERS` - typically `https://bsky.network`
20and more, check the .env.example.
21
22Health check: `GET /xrpc/_health`
23
24## Custom Homepage
25
26Mount a ConfigMap with your `homepage.html` into the container's frontend directory and it becomes your landing page. Go nuts with it. Account dashboard is at `/app/` so you won't break anything.
27
28```yaml
29apiVersion: v1
30kind: ConfigMap
31metadata:
32 name: pds-homepage
33data:
34 homepage.html: |
35 <!DOCTYPE html>
36 <html>
37 <head><title>Welcome to my PDS</title></head>
38 <body>
39 <h1>Welcome to my little evil secret lab!!!</h1>
40 <p><a href="/app/">Sign in</a></p>
41 </body>
42 </html>
43```
44