Self-hosting
PodPeopleDB is a single binary with an embedded SQLite database. Run it next to Pinepods if you'd like your own copy, or if you'd rather your server never talk to podpeopledb.com.
Docker Compose
services:
podpeopledb:
image: madeofpendletonwool/podpeople_db:latest
ports:
- "8085:8085"
environment:
BASE_URL: https://people.example.com
ADMIN_USERNAME: admin
ADMIN_PASSWORD: change-me
SEARCH_API_URL: https://search.pinepods.online
# Optional: get a push notification for every contribution
# NTFY_URL: https://ntfy.sh
# NTFY_TOPIC: your-secret-topic
volumes:
- ./podpeople-data:/app/podpeople-data
restart: unless-stopped
Then point Pinepods at it with PEOPLE_API_URL=https://people.example.com.
Settings
| Variable | Default | What it does |
|---|---|---|
BASE_URL | http://localhost:8085 | Public address. Session cookies are marked Secure when it's https. |
DB_PATH | /app/podpeople-data/podpeople-v2.sqlite | The database file. |
ADMIN_USERNAME / ADMIN_PASSWORD | admin / admin | First admin, created on first boot only. |
SEARCH_API_URL | https://search.pinepods.online | Podcast Index proxy used to look podcasts up. |
NTFY_URL / NTFY_TOPIC | off | Push a notification for each contribution. |
RECRAWL_HOURS | 24 | How often feeds are re-read. |
SUBMISSIONS_PER_HOUR | 120 | Contributions allowed per IP per hour. |
CRAWLER_ENABLED | true | Turn background crawling off (e.g. read-only mirrors). |
IP_HASH_SALT | built-in | Set a random value: IPs are only stored as salted hashes, for rate limiting and abuse cleanup. |
Upgrading from v1
Mount the same data folder. On first start, v2 finds the old podpeopledb.sqlite and imports it into a new podpeople-v2.sqlite: people keep their ids (so links and Pinepods subscriptions keep working), pending submissions land in the review queue, and admin passwords carry over. The old file is never modified, so rolling back is just running the old image again.
Seeding a mirror
In the admin area, Data → Import accepts a JSON dump from /api/v2/dump and merges it into your database. Keep it current with /api/v2/changes.