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.
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
Naklonujte repozitář
Stáhněte zdrojový kód a zkopírujte výchozí konfiguraci.
- 2
Doplňte vlastní hodnoty
Nastavte PostgreSQL, režim registrace, OAuth, URL, tajné hodnoty a produkční Ed25519 identitu.
- 3
Spusťte a ověřte
Sestavte službu přes Docker Compose a zkontrolujte health endpoint.
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/healthPřed sestavením image vygenerujte vlastní Ed25519 identitu. Soukromý klíč nikdy necommitujte a uložte ho do schváleného secret storu.
Postup pro vytvoření klíčeKonfigurace
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.
Nasazení
Vyberte si způsob provozu
- Nastavte všechny povinné hodnoty v .env
- Pravidelně zálohujte PostgreSQL a otestujte obnovu
- Použijte aplikační DB roli bez SUPERUSER/BYPASSRLS
- 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
Vygenerujte podpisovou identitu
Spusťte lokální helper a bezpečně uložte tři vypsané Railway proměnné.
- 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
Nastavte Google callback
Do OAuth klienta přidejte callback s veřejnou HTTPS doménou přidělenou Railway.
- 4
Ověřte data a zálohy
Zkontrolujte health endpoint, odešlete report a ověřte PostgreSQL backup a obnovu.
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/healthExistují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
Uzavřete zápisy
Zastavte login i ingest a vytvořte konzistentní kopii SQLite po WAL checkpointu.
- 2
Proveďte dry-run
Ověřte zdrojové schéma, integritu, e-maily, časovou zónu a kolize bez zápisu do PostgreSQL.
- 3
Importujte a ověřte
Spusťte idempotentní ostrý import a porovnejte počty řádků, reportery, business totals i vzorky klíčů.
- 4
Dokončete cutover
Nasaďte aplikaci, ověřte OAuth, historická data, pozvánku a nový Peapod CLI report, až potom obnovte provoz.
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 exampleProdukční checklist
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