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

VariableDefaultWhat it does
BASE_URLhttp://localhost:8085Public address. Session cookies are marked Secure when it's https.
DB_PATH/app/podpeople-data/podpeople-v2.sqliteThe database file.
ADMIN_USERNAME / ADMIN_PASSWORDadmin / adminFirst admin, created on first boot only.
SEARCH_API_URLhttps://search.pinepods.onlinePodcast Index proxy used to look podcasts up.
NTFY_URL / NTFY_TOPICoffPush a notification for each contribution.
RECRAWL_HOURS24How often feeds are re-read.
SUBMISSIONS_PER_HOUR120Contributions allowed per IP per hour.
CRAWLER_ENABLEDtrueTurn background crawling off (e.g. read-only mirrors).
IP_HASH_SALTbuilt-inSet 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.