---
title: "Voraussetzungen"
description: "Konten, Node, PostgreSQL und Env-Bedingungen vor der Installation eines Ring-Platform-Klons, abgeglichen mit install.sh und env.local.template"
locale: "de"
---
# Voraussetzungen

> **Info**
> **Vor der [Installation](/docs/getting-started/installation.md):** Du brauchst einen Rechner, der **Node.js 20+** ausführen kann, eine **PostgreSQL**-Instanz für Arbeit mit Produktionsparität und (für die Anmeldung von Testern) mindestens einen Auth.js-Weg. Die Versionen unten entsprechen `install.sh`, `INSTALL.md` und `env.local.template`, nicht der alten Anleitung für Node 18. Nutze die Tabs **Gründer** / **Entwickler** in der Seitenleiste, um diese Seite zu filtern.

Ring Platform ist eine **Next.js 16 + React 19**-App mit einem **verpflichtenden** `DB_BACKEND_MODE`. Lokale Klone und Klone mit Produktionsparität nutzen **PostgreSQL als Primärdatenbank** (`k8s-postgres-fcm`). Nur Firestore (`firebase-full`) ist ein schmalerer Prototyp-Weg.

## Vergleich der Deploy-Ziele

| Weg | Für wen | Was du mitbringen musst | Was entfällt |
|------|-----|---------------------|-------|
| **OSS-Self-Hosting** (GitHub + `install.sh`) | Indie / beauftragter Integrator | Node 20+, Git, Postgres (oder Docker), `.env.local`, OAuth oder Ring Mailer | Verwaltetes k8s / Übergabe an Siedler |
| **Von Ringdom verwaltet** (schlüsselfertiges Hosting) | Gründer / Siedler | Domain + Siedler-Briefing; Cluster-Secrets nach der Übergabe | Der Großteil dieser Checkliste lokal |
| **Prototyp mit `firebase-full`** | Schneller UI-Test | Firebase-Projekt + Node 20+ | Tiefe von ERP / PaymentConductor / News Kingdom auf Postgres |

> **Tip**
> Standard für ring-platform.org und Klon-Parität: **`DB_BACKEND_MODE=k8s-postgres-fcm`**. Siehe [Backend-Modi](/docs/architecture/backend-modes-and-databases.md) und [Datenbankauswahl](/docs/customization/database-selection.md).

## Auf einen Blick

| Anforderung | Geprüfte Basis | Quelle / Hinweise |
|-------------|-------------------|----------------|
| **Node.js** | **v20+** (v22+ empfohlen) | `install.sh` bricht unter 20 ab; `INSTALL.md` empfiehlt 22+ |
| **npm** | **10+** | `INSTALL.md`; der Installer führt `npm install` aus |
| **Git** | Aktuell | Klone [connectplatform/ring](https://github.com/connectplatform/ring) |
| **PostgreSQL** | **14+** (Docker-Image **16**; Homebrew **18** ist in der Doku verbreitet) | Datenbank `ring_platform`, Benutzer `ring_user` (`env.local.template`) |
| **PostGIS** | Nötig für ein frisches `data/schema.sql` | Der Schema-Header aktiviert `CREATE EXTENSION postgis` (v4.1.0+) |
| **Ports** | `3000` (App), `5432` (Postgres) | Eigener Server: `node --import tsx server.ts` über `npm run dev` |
| **Redis** | Optional | `REDIS_URL`: Rate-Limit / set-nx fallen ohne Wert auf den Prozessspeicher zurück |
| **Festplatte / RAM** | Ein komfortabler Laptop | Nur eine weiche Empfehlung für Betreiber, kein gemessenes SLA |

### For founders

## Was Gründer vor der Ringization brauchen

Du bereitest einen **White-Label-Klon** vor: Branding in `ring-config.json`, Secrets in `.env.local` und (für Produktionsfunktionen) Postgres mit angewendetem `data/schema.sql`.

### MVP oder produktionsreif

  
- **[UI lokal erkunden](/docs/getting-started/installation.md)** — Node 20+, `install.sh --quick`, Postgres **oder** ein kurzlebiges `firebase-full`. Siehe [Datenbankauswahl](/docs/customization/database-selection.md).

  
- **[Klon mit Produktionsparität](/docs/getting-started/migrations.md)** — **Postgres als Primärdatenbank** + `data/schema.sql` (v4.1+) + Kingdom-Migrationen: Shop, PaymentConductor, Tiefe von News Kingdom.

  
- **[Anmeldung für Tester](/docs/features/authentication.md)** — Mindestens ein Auth.js-Weg: Google OAuth, Apple oder Ring Mailer (`SMTP_*` oder `EMAIL_MODE=ethereal`).

  
- **[Zahlungen später](/docs/features/payment-conductor.md)** — Zugangsdaten für WayForPay / Stripe. **Nicht** nötig für das erste `npm run dev`; vor dem Checkout ergänzen.

### Checkliste der Konten (Gründer)

| Konto / Artefakt | Wann erforderlich |
|--------------------|---------------|
| GitHub-Klon von `connectplatform/ring` | Immer beim OSS-Self-Hosting |
| PostgreSQL (lokales Docker, Homebrew oder gehostet) | Postgres-Modi (`k8s-postgres-fcm`, `supabase-fcm`) |
| Google-Cloud-OAuth-Client **oder** Apple Sign In **oder** SMTP / Ethereal | Vor der echten Anmeldung von Testern |
| Firebase-Projekt (FCM-Schlüssel) | Optional bis zu Push-Benachrichtigungen |
| WayForPay / Stripe | Erst vor dem Checkout über PaymentConductor |
| Übergabe an Ringdom-Siedler | Wenn du Self-Hosting auslässt und verwaltetes Hosting nutzt |

### Ehrliches Zeitbudget (ungefähr)

| Weg | Typischer erster Durchgang | Ergebnis |
|------|--------------------|---------|
| `./install.sh --quick` + vorhandenes Postgres | Einige Dutzend Minuten | Env-Gerüst; Schema und OAuth musst du noch anwenden |
| Vollständiger Bootstrap mit Postgres als Primärdatenbank | Eine Sitzung von etwa einer Stunde | Entspricht einem lokalen Stack im Stil von ring-platform.org |
| Prototyp mit `firebase-full` | Kürzerer Test | Ohne die Tiefe von ERP / Conductor |

Die Zeiten hängen vom Rechner und von der Einrichtung der Zugangsdaten ab. Betrachte sie als Planungsrahmen, nicht als SLA.

> **Warning**
> **Von Ringdom verwaltetes Hosting** erspart den Großteil dieser Checkliste: Siedler erhalten einen fertig konfigurierten Cluster. Wer aus GitHub selbst hostet, folgt dieser Seite ([OSS oder Enterprise](/docs/development/oss-vs-enterprise.md)).

### For developers

## Toolchain

### Node.js und Paketmanager

{`node --version   # v20.0.0+ (v22+ recommended in INSTALL.md)
npm --version    # 10+`}

`install.sh` bricht früh ab, wenn Node unter v20 liegt. Nutze nvm, fnm oder die offiziellen Installer; siehe `INSTALL.md`. Der Installer-Weg im öffentlichen Baum ist **npm**. Andere Paketmanager sind nicht die dokumentierte Referenz für die Installation.

### PostgreSQL + PostGIS

Standardverbindung (aus `env.local.template`):

{`DB_BACKEND_MODE=k8s-postgres-fcm
DB_HOST=localhost
DB_PORT=5432
DB_NAME=ring_platform
DB_USER=ring_user
DB_PASSWORD=ring_password_2024
# or: DATABASE_URL=postgresql://ring_user:ring_password_2024@localhost:5432/ring_platform`}

Schnelle Datenbank mit Docker (entspricht dem Image-Tag in `docker-compose.template.yml`):

{`docker run -d --name ring-postgres-dev \\
  -e POSTGRES_USER=ring_user \\
  -e POSTGRES_PASSWORD=ring_password_2024 \\
  -e POSTGRES_DB=ring_platform \\
  -p 5432:5432 \\
  postgres:16-alpine`}

Ein frisches `data/schema.sql` (Header **4.1.0**) führt `CREATE EXTENSION` für `uuid-ossp`, `pgcrypto` und **`postgis`** aus. Nutze beim Anwenden des Schemas am besten ein Image mit PostGIS oder Homebrew `postgresql@18` + `postgis`. Siehe [Datenbankmigrationen](/docs/getting-started/migrations.md).

### Backend-Modus (verpflichtend)

Setze **`DB_BACKEND_MODE`** vor dem ersten Start (`lib/database/backend-mode-config.ts`, ohne stillen Standardwert zur Laufzeit):

| Wert | Wann |
|-------|------|
| `k8s-postgres-fcm` | **Standardweg**: App-Daten in Postgres + optionaler FCM-Push |
| `supabase-fcm` | Postgres auf Supabase + optionales FCM |
| `firebase-full` | Nur Prototyp mit Firestore |

**`DATABASE_MODE` wurde entfernt**: nicht setzen. Im Detail: [Backend-Modi](/docs/architecture/backend-modes-and-databases.md).

### Minimale Umgebungsvariablen

{`cp env.local.template .env.local
# install.sh generates AUTH_SECRET and WALLET_ENCRYPTION_KEY

AUTH_SECRET=...                    # required: npx @better-auth/cli secret
DB_BACKEND_MODE=k8s-postgres-fcm
DB_* or DATABASE_URL               # required for postgres modes

# At least one sign-in path:
AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET
# and/or AUTH_APPLE_*
# and/or Ring Mailer: EMAIL_MODE=ethereal or SMTP_HOST + SMTP_USER + SMTP_PASSWORD
# (email_login_tokens table, migration 038 / included in flattened schema.sql)`}

In `auth.ts` registrierte Anbieter: Credentials von **Ring Mailer** (`email-otp`, `email-magic`, `credentials`), **Google** OAuth, **Google One Tap**, **Apple** sowie Wallet-/Krypto-Credentials. GitHub-/Discord-OAuth sind **nicht** in der Standardliste der Anbieter. **Resend / `AUTH_RESEND_KEY` gehören nicht zur Mailer-Referenz** (nutze `SMTP_*` / Ethereal).

Optional für spätere Funktionen:

- `BLOB_READ_WRITE_TOKEN`: Uploads zu Vercel Blob  
- `WAYFORPAY_*` / `STRIPE_*`: PaymentConductor  
- `NEXT_PUBLIC_FIREBASE_*` + Admin-Dienstkonto: FCM-Push (nicht die Firestore-Datenbank bei Postgres als Primärdatenbank)  
- `OPENAI_API_KEY` / `ANTHROPIC_API_KEY`: AI Matcher / Email CRM  
- `REDIS_URL`: optional; ohne Wert gilt der Fallback im Prozessspeicher  

Committe `.env.local` niemals. Siehe [Umgebungskonfiguration](/docs/deployment/environment.md).

### Validierungs-Checkliste

### System

{`node --version && npm --version
curl -fsS -o /dev/null https://registry.npmjs.org/ || echo "npm registry unreachable"`}

### Datenbank

{`psql "$DATABASE_URL" -c "SELECT version();"
# or:
docker exec ring-postgres-dev psql -U ring_user -d ring_platform -c "SELECT 1;"`}

### Health (nach der Installation)

{`curl -sS http://localhost:3000/api/health | jq .status`}

Erwartet wird `"healthy"`, wenn `AUTH_SECRET` gesetzt ist (`app/api/health/route.ts` behandelt ein fehlendes `AUTH_SECRET` als kritisch). Siehe [Monitoring](/docs/deployment/monitoring.md).

### Optional: Docker-Compose-Stack

`install.sh` kann `docker-compose.yml` aus `docker-compose.template.yml` erzeugen (App + **postgres:16-alpine** + **redis:7-alpine**, dazu ein optionales Monitoring-Profil). Für das `npm run dev` am ersten Tag reicht ein einzelner Postgres-Container (oder Homebrew). Redis bleibt optional.

## Empfohlener Weg

Folge dem Ablauf des Hubs Erste Schritte: diese Checkliste erfüllen → `install.sh` ausführen → Schema anwenden → Smoke-Test.

1. Prüfe Node 20+ und einen Plan für Postgres (Docker 16 oder Homebrew 18 + PostGIS).
2. Weiter mit der [Installation](/docs/getting-started/installation.md) (`./install.sh --quick` oder manuelles Env).
3. Wende die [Datenbankmigrationen](/docs/getting-started/migrations.md) an, danach den [Ersten Erfolg](/docs/getting-started/first-success.md).

## Manueller Weg

### Konten und Ports erfassen

Entscheide zwischen OSS-Self-Hosting und Verwaltung durch Ringdom. Gib **3000** und **5432** frei (oder setze `DB_PORT` / den App-`PORT` bewusst).

### Postgres mit PostGIS bereitstellen

Lege die Datenbank `ring_platform` / den Benutzer `ring_user` an (oder passe sie an deine `DATABASE_URL` an). Prüfe, dass `CREATE EXTENSION postgis` funktioniert, bevor du `data/schema.sql` anwendest.

### Env anlegen, ohne Schlüssel zu erfinden

Kopiere `env.local.template` → `.env.local` (oder überlasse das `install.sh`). Setze `DB_BACKEND_MODE`, erzeuge `AUTH_SECRET` / `WALLET_ENCRYPTION_KEY` und füge einen Auth-Weg hinzu. Füge keine Produktions-Secrets in Doku oder Git ein.

## Häufige Fragen

### Auswirkungen

#### Startet mein Klon ohne Google OAuth?

Ja, der Prozess startet: Zuerst zählen `AUTH_SECRET` + `DB_BACKEND_MODE`. Für die Anmeldung von Testern brauchst du trotzdem **mindestens einen** Anbieter: Google, Apple oder Ring Mailer (Ethereal/SMTP).

#### Brauche ich Firebase am ersten Tag?

Nicht für App-Daten mit Postgres als Primärdatenbank. Firebase Admin / `NEXT_PUBLIC_FIREBASE_*` sind wichtig, wenn du **FCM-Push** aktivierst oder `firebase-full` wählst.

#### Brauche ich Redis?

Nein, nicht für ein lokales `npm run dev` mit einer einzigen Replik. Setze `REDIS_URL`, wenn Rate-Limit / set-nx über mehrere Prozesse geteilt werden sollen.

### Betrieb

#### Wird Node 18 noch unterstützt?

Nein. `install.sh` verlangt **Node 20+**. Laut den Fehlerbehebungsbeispielen in `INSTALL.md` ist Node 22+ vorzuziehen.

#### PostGIS ist bei `schema.sql` fehlgeschlagen?

Installiere PostGIS für dein Postgres (Homebrew `postgis` oder ein Image mit PostGIS). Das zusammengeführte Schema **4.1.0** aktiviert die Erweiterung bei einer frischen Anwendung.

#### `/api/health` ist nicht healthy?

Prüfe, ob `.env.local` ein `AUTH_SECRET` enthält. Auf den Postgres-Erkennungspfaden behandelt die Health-Route dieses Secret als kritisch. Fehlende Firebase-Variablen spielen eher bei Setups ohne Postgres eine Rolle.

#### Verwaltetes Hosting: Kann ich diese Seite überspringen?

Für den ersten Start größtenteils ja. Behalte sie als Vertrag für später, wenn du eigenes OAuth, Zahlungen oder einen Fork von Layer1 anbindest.

## Verwandte Dokumentation

  
- [getting-started/installation](/docs/getting-started/installation.md) — Nächster Schritt: install.sh ausführen und das Schema nach dieser Checkliste anwenden.

  
- [getting-started/migrations](/docs/getting-started/migrations.md) — Hängt ab von: Postgres + PostGIS vor dem Anwenden von data/schema.sql.

  
- [getting-started/first-success](/docs/getting-started/first-success.md) — Nächster Schritt: Smoke-Test nach npm run dev.

  
- [deployment/environment](/docs/deployment/environment.md) — Vertiefung: die gesamte Oberfläche von env.local.template über das Minimum für den ersten Start hinaus.

  
- [architecture/backend-modes-and-databases](/docs/architecture/backend-modes-and-databases.md) — Gleicher Ablauf: DB_BACKEND_MODE vor dem ersten Start wählen.

> **Success**
> Voraussetzungen erfüllt? Weiter mit der [Installation](/docs/getting-started/installation.md).

=20 festlegen, damit npm/yarn früh warnen. Heute erzwingt nur install.sh Node 20+."
  implementationCost={4}
  labels={['tooling']}
  voteCount={0}
/>
