Zum Inhalt springen

Bereitstellung

Das generierte Projekt enthält eine Dockerfile und eine docker-compose.yml. Dies ist der einfachste Weg zur Bereitstellung:

services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: rebase
POSTGRES_PASSWORD: rebase
POSTGRES_DB: rebase
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
app:
build: ./backend
ports:
- "3001:3001"
environment:
DATABASE_URL: postgresql://rebase:rebase@postgres:5432/rebase
JWT_SECRET: ${JWT_SECRET}
NODE_ENV: production
depends_on:
- postgres
volumes:
- uploads:/app/uploads
volumes:
pgdata:
uploads:
docker compose up -d

Stellen Sie vor der Bereitstellung in der Produktion sicher:

PunktDetails
JWT_SECRETVerwenden Sie einen kryptografisch starken Zufallsstring (≥ 32 Zeichen). Niemals über Umgebungen hinweg wiederverwenden.
DATABASE_URLVerwenden Sie eine verwaltete Postgres-Instanz (Neon, Supabase, RDS) mit aktiviertem TLS
CORSKonfigurieren Sie erlaubte Ursprünge in Ihrem Backend, wenn Frontend und Backend auf unterschiedlichen Domains liegen
SpeichervolumesHängen Sie persistente Volumes für Dateiuploads ein. Oder wechseln Sie für die Produktion zu S3.
HTTPSBeenden Sie TLS an Ihrem Reverse-Proxy (nginx, Cloudflare, Load Balancer)
RegistrierungSetzen Sie ALLOW_REGISTRATION=false, nachdem Sie Ihr Admin-Konto erstellt haben

In der Produktion kann das Backend das Frontend als statische SPA bereitstellen:

import { serveSPA } from "@rebasepro/server-core";
// After initializeRebaseBackend()
import path from "path";
// After initializeRebaseBackend()
serveSPA(app, { frontendPath: path.resolve(process.cwd(), "../frontend/dist") });

Erstellen Sie zuerst das Frontend:

cd frontend && pnpm build

Auf diese Weise müssen Sie nur einen Server bereitstellen, der sowohl SPA als auch API verwaltet.

  1. Pushen Sie Ihren Code in ein Git-Repository
  2. Verbinden Sie das Repository mit Ihrer Cloud-Plattform
  3. Legen Sie Umgebungsvariablen fest (DATABASE_URL, JWT_SECRET, etc.)
  4. Die enthaltene Dockerfile wird automatisch erkannt
# Build the container
docker build -t gcr.io/YOUR_PROJECT/rebase-backend ./backend
# Push to Container Registry
docker push gcr.io/YOUR_PROJECT/rebase-backend
# Deploy
gcloud run deploy rebase-backend \
--image gcr.io/YOUR_PROJECT/rebase-backend \
--set-env-vars DATABASE_URL=...,JWT_SECRET=... \
--allow-unauthenticated

Wenn Sie Rebase unter einem Unterpfad (z. B. /admin) ausführen möchten:

Frontend — Aktualisieren Sie den basename des BrowserRouter:

<BrowserRouter basename="/admin">
<App />
</BrowserRouter>

Backend — Aktualisieren Sie den Basispfad:

await initializeRebaseBackend({
// ...
basePath: "/admin/api"
});