Setzkasten als eigene App deployen
Im Single-Mode lebt der Admin im Astro-Projekt selbst (unter /admin). Im
Multi-Mode läuft Setzkasten als eigenständige App, die mehrere Website-Repos verwaltet.
Diese App ist eine kleine Astro-Site und deployt überall, wo Astro mit SSR läuft.
Template klonen
Im Repo unter templates/standalone-admin/ liegt ein fertiges Setup mit
Adapter-Stub, setzkasten.config.ts und passenden Build-Scripts.
git clone https://github.com/thosor87/setzkasten.git
cd setzkasten/templates/standalone-admin
pnpm install Konfiguration
Der Standalone-Admin läuft immer im Multi-Mode — auch wenn er nur eine Website verwaltet.
Das Config-Repo enthält die websites.json und globale Editoren-Datei.
// templates/standalone-admin/setzkasten.config.ts
import { defineConfig } from '@setzkasten-cms/core'
export default defineConfig({
storage: {
kind: 'multi',
configRepo: 'meine-agentur/setzkasten-config',
configBranch: 'main',
appId: process.env.GITHUB_APP_ID!,
installationId: process.env.GITHUB_APP_INSTALLATION_ID!,
},
auth: {
providers: ['github'],
},
}) Environment-Variablen
Alle Secrets liegen im ENV des Hostings — nicht im Repo. Der private Key der GitHub
App ist eine PKCS#8-PEM-Zeichenkette mit echten Zeilenumbrüchen
(\\n in einer Zeile, oder über die UI als mehrzeiliger Wert).
# Vercel / Netlify / Cloudflare Pages — Environment Variables
GITHUB_APP_ID=123456
GITHUB_APP_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n…"
GITHUB_APP_INSTALLATION_ID=111
GITHUB_CLIENT_ID=Iv23li…
GITHUB_CLIENT_SECRET=abc…
SETZKASTEN_LICENSE_EMAIL=du@example.com
SETZKASTEN_LICENSE_KEY=SK-PRO-XXXXXXXX-XXXXXXXX-XXXXXXXX
# Optional: nur diese Emails dürfen sich überhaupt einloggen
SETZKASTEN_ALLOWED_EMAILS=admin@example.com Hosting-Plattformen
- Vercel:
@astrojs/vercel-Adapter, Region in der Nähe des Editor-Standorts wählen. Kostenloser Hobby-Plan reicht für kleine Setups. - Netlify:
@astrojs/netlify-Adapter, Build-Commandpnpm build, Publish Directorydist. - Cloudflare Pages:
@astrojs/cloudflare-Adapter, mit Functions-Workers für die Server-Routes.
Custom Domain
Die Domain ist sichtbar in der GitHub App-Konfiguration (Callback-URL muss zu
https://<deine-admin-domain>/api/setzkasten/auth/callback zeigen).
Bei einem Domainwechsel die App-Settings mit-aktualisieren.
Cross-Origin-Iframe
Die Live-Preview lädt die kontrollierte Website per Iframe. Damit das auch
Cross-Origin funktioniert, setzt die Preview-Middleware
frame-ancestors in der CSP der Iframe-Antwort. Eigene Header dürfen das
nicht überschreiben.