This integration automatically mounts the Decap CMS admin dashboard to /admin
and custom OAuth authentication backend routes to /oauth
, /oauth/callback
using GitHub as the provider.
This way, you aren't vendor-locked to Netlify
and your app can be deployed anywhere that supports SSR.
npx astro add astro-decap-cms-oauth
npm install astro-decap-cms-oauth
Add the integration and set output to server
or hybrid
in your astro.config.mjs
file:
import { defineConfig } from "astro/config";
import decapCmsOauth from "astro-decap-cms-oauth";
export default defineConfig({
...,
integrations: [decapCmsOauth()],
output: "server",
});
-
Make sure Astro is in SSR mode (
output: "server"
set inastro.config.mjs
) -
Put your
config.yml
file inpublic/admin/config.yml
(see Decap CMS Docs for more info)
backend:
name: github
branch: main # change this to your branch
repo: dorukgezici/astro-decap-cms-oauth # change this to your repo
site_domain: astro-decap-cms-oauth.vercel.app # change this to your domain
base_url: https://astro-decap-cms-oauth.vercel.app # change this to your prod URL
auth_endpoint: oauth # the oauth route provided by the integration
- Set up GitHub OAuth app
On GitHub, go to Settings > Developer Settings > OAuth apps > New OAuth app. Or use this direct link.
Homepage URL: This must be the prod URL of your application.
Authorization callback URL: This must be the prod URL of your application followed by /oauth/callback
.
- Set env variables
OAUTH_GITHUB_CLIENT_ID=
OAUTH_GITHUB_CLIENT_SECRET=
# optional
PUBLIC_DECAP_CMS_VERSION=
export interface DecapCMSOptions {
decapCMSVersion?: string;
adminDisabled?: boolean;
adminRoute?: string;
oauthDisabled?: boolean;
oauthLoginRoute?: string;
oauthCallbackRoute?: string;
}
const defaultOptions: DecapCMSOptions = {
decapCMSVersion: "3.3.3",
adminDisabled: false,
adminRoute: "/admin",
oauthDisabled: false,
oauthLoginRoute: "/oauth",
oauthCallbackRoute: "/oauth/callback",
};
To override default version of Decap CMS used, set PUBLIC_DECAP_CMS_VERSION
env variable (takes precedence) or decapCMSVersion
in astro.config.mjs
.
To disable injecting Decap CMS admin route, set adminDisabled
to true
in astro.config.mjs
.
To disable injecting OAuth routes, set oauthDisabled
to true
in astro.config.mjs
.
import { defineConfig } from "astro/config";
import decapCmsOauth from "astro-decap-cms-oauth";
export default defineConfig({
...,
integrations: [decapCmsOauth({ decapCMSVersion: "3.3.3", adminDisabled: false, oauthDisabled: true })],
output: "server",
});