Zum Inhalt springen

Konfiguration

Alle Optionen der Setzkasten-Integration in astro.config.mjs auf einen Blick.

Integration in astro.config.mjs

Setzkasten wird als Astro-Integration eingebunden. Die wichtigsten Optionen sind adminPath, storage, ein Auth-Provider (github oder google) und optional ein deployHook.

astro.config.mjs
import { defineConfig } from 'astro/config'
import setzkasten from '@setzkasten-cms/astro'

export default defineConfig({
  output: 'server',
  integrations: [
    setzkasten({
      adminPath: '/admin',
      storage: {
        kind: 'github',
        owner: 'dein-user',
        repo: 'deine-site',
        branch: 'main',
        contentPath: 'content',
        assetsPath: 'public/assets',
      },
      github: {
        clientId: process.env.GITHUB_CLIENT_ID,
        clientSecret: process.env.GITHUB_CLIENT_SECRET,
      },
      deployHook: {
        url: process.env.DEPLOY_HOOK_URL,
        secret: process.env.DEPLOY_HOOK_SECRET,
      },
    }),
  ],
})

storage-Optionen

Der storage-Block definiert, wo Setzkasten Inhalte liest und schreibt. Aktuell wird ausschliesslich der GitHub-Adapter unterstuetzt.

astro.config.mjs
storage: {
  kind: 'github',
  owner: 'dein-user',       // GitHub User oder Organisation
  repo: 'deine-site',        // Repository-Name
  branch: 'main',             // Branch fuer Content-Commits
  contentPath: 'content',     // Pfad zu JSON-Dateien (Standard: content)
  assetsPath: 'public/assets', // Pfad fuer hochgeladene Bilder
}
Option Typ Beschreibung
kind 'github' Storage-Adapter (aktuell nur GitHub)
owner string GitHub User oder Organisation
repo string Repository-Name
branch string Branch fuer Content-Commits (Standard: main)
contentPath string Pfad zu JSON-Dateien (Standard: content)
assetsPath string Pfad fuer hochgeladene Bilder (Standard: public/assets)

Auth-Provider

Setzkasten unterstuetzt GitHub OAuth und Google OAuth als Login-Methoden. Du kannst einen oder beide Provider gleichzeitig nutzen. Bei Google muss zusaetzlich allowedEmails gesetzt werden.

GitHub OAuth

astro.config.mjs
github: {
  clientId: process.env.GITHUB_CLIENT_ID,
  clientSecret: process.env.GITHUB_CLIENT_SECRET,
}

Google OAuth

astro.config.mjs
google: {
  clientId: process.env.GOOGLE_CLIENT_ID,
  clientSecret: process.env.GOOGLE_CLIENT_SECRET,
},
allowedEmails: ['du@example.com', 'team@example.com']

Hinweis: Bei GitHub OAuth wird automatisch geprueft, ob der User Schreibrechte auf das konfigurierte Repository hat. Bei Google OAuth wird ausschliesslich die allowedEmails-Liste verwendet.

Deploy Hook

Mit einem Deploy Hook kann Setzkasten nach jedem Content-Commit automatisch einen neuen Build ausloesen. Die URL haengt von deinem Hosting-Provider ab.

Vercel

astro.config.mjs
deployHook: {
  url: 'https://api.vercel.com/v1/integrations/deploy/prj_xxxxx/yyyyy',
}

Netlify

astro.config.mjs
deployHook: {
  url: 'https://api.netlify.com/build_hooks/xxxxxx',
}

Cloudflare Pages

astro.config.mjs
deployHook: {
  url: 'https://api.cloudflare.com/client/v4/pages/webhooks/xxxxx',
  secret: process.env.DEPLOY_HOOK_SECRET,
}

Vollstaendiges Konfigurationsbeispiel

Ein komplettes Setup mit GitHub-Storage, GitHub OAuth und Vercel Deploy Hook:

astro.config.mjs
import { defineConfig } from 'astro/config'
import setzkasten from '@setzkasten-cms/astro'

export default defineConfig({
  output: 'server',
  integrations: [
    setzkasten({
      adminPath: '/admin',
      storage: {
        kind: 'github',
        owner: 'dein-user',
        repo: 'deine-site',
        branch: 'main',
        contentPath: 'content',
        assetsPath: 'public/assets',
      },
      github: {
        clientId: process.env.GITHUB_CLIENT_ID,
        clientSecret: process.env.GITHUB_CLIENT_SECRET,
      },
      deployHook: {
        url: process.env.DEPLOY_HOOK_URL,
        secret: process.env.DEPLOY_HOOK_SECRET,
      },
    }),
  ],
})