Open source · AGPL-3.0

Provozujte Peapod ve vlastní infrastruktuře

Peapod je open-source dashboard s CLI pro soukromé týmové statistiky využití AI nástrojů. Zdrojový kód, databáze i přístupové údaje mohou zůstat kompletně pod vaší správou.

Než začnete

Co budete potřebovat

Self-hosted instance kombinuje webový dashboard, Google OAuth, PostgreSQL databázi a CLI sestavenou s vaším vlastním podpisovým klíčem.

Docker Compose
Docker s Compose pluginem; Compose spustí web i persistentní PostgreSQL.
Google OAuth
Web OAuth klient pro vaši Workspace doménu a callback URL nasazené instance.
Ed25519 identita
Vlastní produkční klíč pro sestavení a ověřování podepsané CLI.
PostgreSQL
Produkční PostgreSQL s pravidelnými zálohami a aplikační rolí bez SUPERUSER/BYPASSRLS.

Rychlý start

Od repozitáře k běžící instanci

Nejdřív nakonfigurujte OAuth a tajné hodnoty v .env. Produkční image záměrně odmítne vývojový podpisový klíč z ukázkové konfigurace.

  1. 1

    Naklonujte repozitář

    Stáhněte zdrojový kód a zkopírujte výchozí konfiguraci.

  2. 2

    Doplňte vlastní hodnoty

    Nastavte PostgreSQL, režim registrace, OAuth, URL, tajné hodnoty a produkční Ed25519 identitu.

  3. 3

    Spusťte a ověřte

    Sestavte službu přes Docker Compose a zkontrolujte health endpoint.

Docker Compose
Terminal
git clone https://github.com/MateeDevs/peapod.git
cd peapod
cp .env.example .env

# Configure OAuth, secrets, your domain, and a production Ed25519 identity in .env
docker compose up -d
curl http://localhost:3000/api/health

Konfigurace

Povinné skupiny proměnných

Úplný seznam a vysvětlení je v .env.example a README. Na webu záměrně nezobrazujeme žádné reálné tajné hodnoty.

Autentizace a registrace
AUTH_GOOGLE_ID, AUTH_GOOGLE_SECRET, AUTH_SECRET, REGISTRATION_MODE
Google OAuth klient, náhodný Auth.js secret a režim open, bootstrap nebo invite-only.
Veřejné URL
AUTH_URL, REPORT_API_URL, AUTH_TRUST_HOST
HTTPS adresa dashboardu, cílová reportovací API adresa a důvěra v host hlavičky.
Reporty a podpisy
CLI_REPORT_PUBLIC_KEYS, CLI_REPORT_SIGNING_*, CLI_REPORT_MIN_VERSION
Veřejná i privátní část produkční CLI identity; reportovací zařízení dostávají vlastní revokovatelný credential.
Databáze a pozvánky
DATABASE_URL, DASHBOARD_TIME_ZONE, SMTP_URL, EMAIL_FROM
PostgreSQL připojení, výchozí časová zóna a volitelné SMTP pro firemní pozvánky.

Nasazení

Vyberte si způsob provozu

Docker Compose
Nejkratší cesta pro vlastní VM nebo server. Compose sestaví web i podepsanou Apple Silicon CLI a uloží databázi do lokálního volume.
  • Nastavte všechny povinné hodnoty v .env
  • Pravidelně zálohujte PostgreSQL a otestujte obnovu
  • Použijte aplikační DB roli bez SUPERUSER/BYPASSRLS
Railway
Oficiální template připraví webovou službu, PostgreSQL, veřejnou doménu a healthcheck. Do publikování template použijte přesný maintainer runbook.
  • PostgreSQL je připojené přes Railway reference
  • Databáze má zapnuté automatické zálohy
  • OAuth a vlastní Ed25519 klíče doplní uživatel

Railway krok za krokem

Připravte si hodnoty před nasazením

Template automatizuje infrastrukturu a bezpečné náhodné secrets. Google OAuth a vlastní CLI podpisovou identitu ale musíte dodat vy.

  1. 1

    Vygenerujte podpisovou identitu

    Spusťte lokální helper a bezpečně uložte tři vypsané Railway proměnné.

  2. 2

    Otevřete template nebo runbook

    Po publikování použijte přímé tlačítko. Do té doby postupujte podle přesné konfigurace pro správce.

  3. 3

    Nastavte Google callback

    Do OAuth klienta přidejte callback s veřejnou HTTPS doménou přidělenou Railway.

  4. 4

    Ověřte data a zálohy

    Zkontrolujte health endpoint, odešlete report a ověřte PostgreSQL backup a obnovu.

Příprava a kontrola
Tyto hodnoty spusťte nebo doplňte mimo repozitář.
bun run generate:railway-keys

# Add this exact callback to your Google Web OAuth client:
https://<railway-domain>/api/auth/callback/google

# Verify the deployed service:
curl https://<railway-domain>/api/health

Existující instalace

Přeneste SQLite data do PostgreSQL

Původní SQLite databáze slouží pouze jako read-only migrační zdroj. Import vytvoří organizaci, historické reportery a bezpečné nároky na členství podle ověřených e-mailů.

  1. 1

    Uzavřete zápisy

    Zastavte login i ingest a vytvořte konzistentní kopii SQLite po WAL checkpointu.

  2. 2

    Proveďte dry-run

    Ověřte zdrojové schéma, integritu, e-maily, časovou zónu a kolize bez zápisu do PostgreSQL.

  3. 3

    Importujte a ověřte

    Spusťte idempotentní ostrý import a porovnejte počty řádků, reportery, business totals i vzorky klíčů.

  4. 4

    Dokončete cutover

    Nasaďte aplikaci, ověřte OAuth, historická data, pozvánku a nový Peapod CLI report, až potom obnovte provoz.

Dry-run a verifikace
Použijte oddělené MIGRATION_DATABASE_URL s oprávněním potřebným pro import.
bun run migrate:sqlite-to-postgres -- \
  --sqlite ./data/matee.db \
  --database-url "$MIGRATION_DATABASE_URL" \
  --organization-name "Example" \
  --organization-slug example \
  --timezone Europe/Prague \
  --owner-email owner@example.com \
  --dry-run

# Remove --dry-run only after reviewing the result, then verify:
bun run verify:sqlite-postgres -- \
  --sqlite ./data/matee.db \
  --database-url "$MIGRATION_DATABASE_URL" \
  --organization-slug example

Produkční checklist

Před prvním ostrým reportem

Před prvním ostrým reportem
  • OAuth callback používá veřejnou HTTPS doménu instance.
  • GET /api/health vrací {"ok":true}.
  • PostgreSQL má pravidelné zálohy a prakticky ověřenou obnovu.
  • Aplikační DB role nemá SUPERUSER ani BYPASSRLS a tenant RLS je vynucené.
  • Produkční privátní klíč není v repozitáři ani v runtime image.
  • Po restartu nebo redeployi zůstávají dříve přijaté reporty dostupné.

Další zdroje

Pokračujte v repozitáři

README
Kompletní popis produktu, CLI, soukromí a administrace.
.env.example
Aktuální seznam podporovaných proměnných prostředí.
GitHub Issues
Hlášení chyb, návrhy a diskuse o self-hostingu.
Zpět na hlavní stránku