@instant-cms/storage-postgres
v1.0.8
Published
Instant CMS – Postgres-Storage-Adapter (Neon, Supabase, Railway, eigener Server) inkl. Bild-Ablage in der Datenbank
Maintainers
Readme
@instant-cms/storage-postgres
Postgres-Storage-Adapter für Instant CMS – für Neon, Supabase, Railway, Hostpoint-Postgres oder einen eigenen Server.
Damit läuft Instant CMS auch dort, wo es kein dauerhaftes Dateisystem gibt (Vercel, Netlify, Lambda): Inhalte und hochgeladene Bilder liegen in der Datenbank.
Installation
npm install @instant-cms/storage-postgresEinrichtung im Projekt:
CMS_DATABASE_URL="postgresql://user:[email protected]/neondb?sslmode=require" \
npx instant-cms init --postgresBei Neon die „-pooler"-URL verwenden – serverlose Instanzen öffnen sonst zu viele Verbindungen.
Verwendung
Die CLI erzeugt die passenden Dateien; von Hand sieht es so aus:
// lib/cms.ts (Next.js)
import { createCms } from "@instant-cms/next";
import { PostgresStorageAdapter } from "@instant-cms/storage-postgres";
import config from "../instant-cms.config.mjs";
export const cms = createCms({ config, storage: new PostgresStorageAdapter() });// instant-cms.config.mjs
export default {
storage: { adapter: "postgres" }, // URL kommt aus CMS_DATABASE_URL
uploads: { storage: "database", publicPath: "/api/cms/uploads" },
};Eigenschaften
- Schema-Migrationen laufen beim ersten Zugriff, abgesichert über einen Postgres-Advisory-Lock: Starten nach einem Deploy mehrere Instanzen gleichzeitig, migriert genau eine, die anderen warten.
- Inhalte als
JSONB, Versionshistorie mit Limit (50 pro Key) wie bei SQLite. - Bild-Uploads optional als
BYTEAin der Datenbank; ausgeliefert werden sie über die CMS-API mitimmutable-Cache-Header (der Dateiname ist eine UUID). - Prepared Statements mit gebundenen Parametern, LIKE-Muster werden escaped.
Dokumentation: Getting Started · Architektur · Sicherheit
Lizenz: MIT
