···2222AWS_ACCESS_KEY_ID=minioadmin
2323AWS_SECRET_ACCESS_KEY=minioadmin
2424# =============================================================================
2525+# Backups (S3-compatible)
2626+# =============================================================================
2727+# Set to enable automatic repo backups to S3
2828+# BACKUP_S3_BUCKET=pds-backups
2929+# BACKUP_ENABLED=true
3030+# =============================================================================
2531# Valkey (for caching and distributed rate limiting)
2632# =============================================================================
2733# If not set, falls back to in-memory caching (single-node only)
+25-1
docs/install-alpine.md
···6868rc-update add minio
6969rc-service minio start
7070```
7171-Create the blob bucket (wait a few seconds for minio to start):
7171+Create the buckets (wait a few seconds for minio to start):
7272```sh
7373curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
7474chmod +x mc
7575mv mc /usr/local/bin/
7676mc alias set local http://localhost:9000 minioadmin your-minio-password
7777mc mb local/pds-blobs
7878+mc mb local/pds-backups
7879```
7980## 5. Install valkey
8081```sh
···239240```sh
240241pg_dump -U postgres pds > /var/backups/pds-$(date +%Y%m%d).sql
241242```
243243+244244+## Custom Homepage
245245+246246+Drop a `homepage.html` in `/var/lib/tranquil-pds/frontend/` and it becomes your landing page. Go nuts with it. Account dashboard is at `/app/` so you won't break anything.
247247+248248+```sh
249249+cat > /var/lib/tranquil-pds/frontend/homepage.html << 'EOF'
250250+<!DOCTYPE html>
251251+<html>
252252+<head>
253253+ <title>Welcome to my PDS</title>
254254+ <style>
255255+ body { font-family: system-ui; max-width: 600px; margin: 100px auto; padding: 20px; }
256256+ </style>
257257+</head>
258258+<body>
259259+ <h1>Welcome to my amazing zoo pen</h1>
260260+ <p>This is a <a href="https://atproto.com">AT Protocol</a> Personal Data Server.</p>
261261+ <p><a href="/app/">Sign in</a> or learn more at <a href="https://bsky.social">Bluesky</a>.</p>
262262+</body>
263263+</html>
264264+EOF
265265+```
+25-4
docs/install-containers.md
···8282sleep 10
8383```
84848585-Create the minio bucket:
8585+Create the minio buckets:
8686```bash
8787podman run --rm --pod tranquil-pds \
8888 -e MINIO_ROOT_USER=minioadmin \
8989 -e MINIO_ROOT_PASSWORD=your-minio-password \
9090 docker.io/minio/mc:RELEASE.2025-07-16T15-35-03Z \
9191- sh -c "mc alias set local http://localhost:9000 \$MINIO_ROOT_USER \$MINIO_ROOT_PASSWORD && mc mb --ignore-existing local/pds-blobs"
9191+ sh -c "mc alias set local http://localhost:9000 \$MINIO_ROOT_USER \$MINIO_ROOT_PASSWORD && mc mb --ignore-existing local/pds-blobs && mc mb --ignore-existing local/pds-backups"
9292```
93939494Run migrations:
···230230sleep 15
231231```
232232233233-Create the minio bucket:
233233+Create the minio buckets:
234234```sh
235235source /srv/tranquil-pds/config/tranquil-pds.env
236236podman run --rm --network tranquil-pds_default \
237237 -e MINIO_ROOT_USER="$MINIO_ROOT_USER" \
238238 -e MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \
239239 docker.io/minio/mc:RELEASE.2025-07-16T15-35-03Z \
240240- sh -c 'mc alias set local http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD && mc mb --ignore-existing local/pds-blobs'
240240+ sh -c 'mc alias set local http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD && mc mb --ignore-existing local/pds-blobs && mc mb --ignore-existing local/pds-backups'
241241```
242242243243Run migrations:
···350350```sh
351351podman exec tranquil-pds-db-1 pg_dump -U tranquil_pds pds > /var/backups/pds-$(date +%Y%m%d).sql
352352```
353353+354354+## Custom Homepage
355355+356356+Mount a `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.
357357+358358+```html
359359+<!DOCTYPE html>
360360+<html>
361361+<head>
362362+ <title>Welcome to my PDS</title>
363363+ <style>
364364+ body { font-family: system-ui; max-width: 600px; margin: 100px auto; padding: 20px; }
365365+ </style>
366366+</head>
367367+<body>
368368+ <h1>Welcome to my dark web popsocket store</h1>
369369+ <p>This is a <a href="https://atproto.com">AT Protocol</a> Personal Data Server.</p>
370370+ <p><a href="/app/">Sign in</a> or learn more at <a href="https://bsky.social">Bluesky</a>.</p>
371371+</body>
372372+</html>
373373+```
+25-1
docs/install-debian.md
···5959systemctl enable minio
6060systemctl start minio
6161```
6262-Create the blob bucket (wait a few seconds for minio to start):
6262+Create the buckets (wait a few seconds for minio to start):
6363```bash
6464curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
6565chmod +x mc
6666mv mc /usr/local/bin/
6767mc alias set local http://localhost:9000 minioadmin your-minio-password
6868mc mb local/pds-blobs
6969+mc mb local/pds-backups
6970```
7071## 5. Install valkey
7172```bash
···212213```bash
213214sudo -u postgres pg_dump pds > /var/backups/pds-$(date +%Y%m%d).sql
214215```
216216+217217+## Custom Homepage
218218+219219+Drop a `homepage.html` in `/var/lib/tranquil-pds/frontend/` and it becomes your landing page. Go nuts with it. Account dashboard is at `/app/` so you won't break anything.
220220+221221+```bash
222222+cat > /var/lib/tranquil-pds/frontend/homepage.html << 'EOF'
223223+<!DOCTYPE html>
224224+<html>
225225+<head>
226226+ <title>Welcome to my PDS</title>
227227+ <style>
228228+ body { font-family: system-ui; max-width: 600px; margin: 100px auto; padding: 20px; }
229229+ </style>
230230+</head>
231231+<body>
232232+ <h1>Welcome to my secret PDS</h1>
233233+ <p>This is a <a href="https://atproto.com">AT Protocol</a> Personal Data Server.</p>
234234+ <p><a href="/app/">Sign in</a> or learn more at <a href="https://bsky.social">Bluesky</a>.</p>
235235+</body>
236236+</html>
237237+EOF
238238+```
+22
docs/install-kubernetes.md
···1212The container image expects:
1313- `DATABASE_URL` - postgres connection string
1414- `S3_ENDPOINT`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `S3_BUCKET`
1515+- `BACKUP_S3_BUCKET` - bucket for repo backups (optional but recommended)
1516- `VALKEY_URL` - redis:// connection string
1617- `PDS_HOSTNAME` - your PDS hostname (without protocol)
1718- `JWT_SECRET`, `DPOP_SECRET`, `MASTER_KEY` - generate with `openssl rand -base64 48`
···20212122Health check: `GET /xrpc/_health`
22232424+## Custom Homepage
2525+2626+Mount 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.
2727+2828+```yaml
2929+apiVersion: v1
3030+kind: ConfigMap
3131+metadata:
3232+ name: pds-homepage
3333+data:
3434+ homepage.html: |
3535+ <!DOCTYPE html>
3636+ <html>
3737+ <head><title>Welcome to my PDS</title></head>
3838+ <body>
3939+ <h1>Welcome to my little evil secret lab!!!</h1>
4040+ <p><a href="/app/">Sign in</a></p>
4141+ </body>
4242+ </html>
4343+```
4444+
+25-1
docs/install-openbsd.md
···7272rcctl enable minio
7373rcctl start minio
7474```
7575-Create the blob bucket:
7575+Create the buckets:
7676```sh
7777ftp -o /usr/local/bin/mc https://dl.min.io/client/mc/release/openbsd-amd64/mc
7878chmod +x /usr/local/bin/mc
7979mc alias set local http://localhost:9000 minioadmin your-minio-password
8080mc mb local/pds-blobs
8181+mc mb local/pds-backups
8182```
8283## 5. Install redis
8384OpenBSD has redis in ports (valkey not available yet):
···251252```sh
252253pg_dump -U postgres pds > /var/backups/pds-$(date +%Y%m%d).sql
253254```
255255+256256+## Custom Homepage
257257+258258+Drop a `homepage.html` in `/var/tranquil-pds/frontend/` and it becomes your landing page. Go nuts with it. Account dashboard is at `/app/` so you won't break anything.
259259+260260+```sh
261261+cat > /var/tranquil-pds/frontend/homepage.html << 'EOF'
262262+<!DOCTYPE html>
263263+<html>
264264+<head>
265265+ <title>Welcome to my PDS</title>
266266+ <style>
267267+ body { font-family: system-ui; max-width: 600px; margin: 100px auto; padding: 20px; }
268268+ </style>
269269+</head>
270270+<body>
271271+ <h1>Welcome to my uma musume shipping site!</h1>
272272+ <p>This is a <a href="https://atproto.com">AT Protocol</a> Personal Data Server.</p>
273273+ <p><a href="/app/">Sign in</a> or learn more at <a href="https://bsky.social">Bluesky</a>.</p>
274274+</body>
275275+</html>
276276+EOF
277277+```