Setup: MkDocs Material auf Cloudflare Pages mit All-Inkl-Domain
Komplettanleitung, um eine bei All-Inkl registrierte Domain mit Cloudflare Pages + Access zu nutzen. Du behältst All-Inkl als Registrar, routest aber den Traffic über Cloudflare.
Überblick
All-Inkl (Registrar)
→ Nameserver zeigen auf Cloudflare
→ Cloudflare DNS verwaltet die Domain
→ Cloudflare Pages hostet die Doku
→ Cloudflare Access schützt den Zugriff
Gesamtdauer: ca. 45 Minuten (inkl. DNS-Propagation).
Schritt 1: Domain in Cloudflare hinzufügen
- Gehe zu dash.cloudflare.com → Add a site.
- Gib deine Domain ein, z. B.
meinefirma.de. - Wähle den Free-Plan.
- Cloudflare scannt deine bestehenden DNS-Records und importiert sie automatisch. Prüfe die Liste und bestätige.
- Cloudflare zeigt dir zwei Nameserver an, z. B.:
anna.ns.cloudflare.com bob.ns.cloudflare.comDiese brauchst du im nächsten Schritt.
Schritt 2: Nameserver bei All-Inkl ändern
- Logge dich bei kas.all-inkl.com ein (KAS = Kunden-Administrations-System).
- Gehe zu Domain → deine Domain bearbeiten (Zahnrad-Icon).
- Wähle Nameserver-Einstellungen → Eigene Nameserver verwenden.
- Trage die beiden Cloudflare-Nameserver ein:
anna.ns.cloudflare.com bob.ns.cloudflare.com(Die genauen Namen stehen in deinem Cloudflare-Dashboard.) - Speichern.
Wichtig: Ab jetzt verwaltet Cloudflare alle DNS-Records für diese Domain. DNS-Einträge in der All-Inkl-Oberfläche sind nicht mehr wirksam. Falls du E-Mail über All-Inkl nutzt, musst du die MX-Records in Cloudflare anlegen (siehe unten).
Die Nameserver-Änderung kann bis zu 24 Stunden dauern, meist geht es aber in unter einer Stunde. Cloudflare schickt dir eine E-Mail, sobald die Domain aktiv ist.
Schritt 3: E-Mail-Records in Cloudflare übernehmen (falls du Mail über All-Inkl nutzt)
Wenn du E-Mail-Adressen über All-Inkl verwendest (z. B. info@meinefirma.de), müssen die entsprechenden DNS-Records in Cloudflare existieren. Cloudflare importiert sie normalerweise automatisch in Schritt 1. Prüfe trotzdem, dass folgende Records vorhanden sind:
| Typ | Name | Inhalt | Proxy |
|---|---|---|---|
| MX | meinefirma.de |
mx1.all-inkl.com (Priorität 10) |
DNS only |
| MX | meinefirma.de |
mx2.all-inkl.com (Priorität 20) |
DNS only |
| TXT (SPF) | meinefirma.de |
v=spf1 include:all-inkl.com ~all |
— |
MX-Records müssen immer DNS only sein (kein Proxy), sonst funktioniert E-Mail nicht.
Falls die Records fehlen: Cloudflare Dashboard → DNS → Records → Add record.
Schritt 4: Cloudflare Pages-Projekt anlegen
- Installiere Wrangler:
bash
npm install -g wrangler
- Logge dich ein:
bash
npx wrangler login
- Erstelle das Projekt:
bash
npx wrangler pages project create interne-doku --production-branch=main
- Notiere die Account-ID (findest du auch unter Workers & Pages im Dashboard, rechte Seitenleiste).
Schritt 5: API-Token erstellen
- Cloudflare Dashboard → My Profile → API Tokens → Create Token.
- Wähle Custom token → Get started.
- Konfiguriere:
| Feld | Wert |
|---|---|
| Token name | docs-deploy |
| Permissions | Account → Cloudflare Pages → Edit |
| Account Resources | Nur deinen Account auswählen |
- Create Token → Token sofort kopieren (wird nur einmal angezeigt).
Schritt 6: GitHub-Repository einrichten
-
Erstelle ein neues privates Repo auf GitHub.
-
Erstelle folgende Dateien:
mkdocs.yml:
site_name: Interne Dokumentation
site_url: https://docs.meinefirma.de/
theme:
name: material
language: de
features:
- navigation.instant
- navigation.top
- search.suggest
- content.code.copy
plugins:
- search:
lang: de
nav:
- Start: index.md
docs/index.md:
# Willkommen
Dies ist die interne Dokumentation.
.github/workflows/deploy.yml:
name: Deploy Docs to Cloudflare Pages
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
deployments: write
concurrency:
group: deploy-docs-${{ github.ref }}
cancel-in-progress: true
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build site
run: |
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "${PWD}:/docs" \
squidfunk/mkdocs-material:9 build --strict
- name: Deploy to Cloudflare Pages
uses: cloudflare/wrangler-action@v4
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy site --project-name=interne-doku
.gitignore:
site/
.wrangler/
renovate.json (optional, für automatische Updates):
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"]
}
Schritt 7: GitHub Secrets hinterlegen
Im Repository unter Settings → Secrets and variables → Actions:
gh secret set CLOUDFLARE_API_TOKEN
gh secret set CLOUDFLARE_ACCOUNT_ID
Oder über das GitHub-Dashboard manuell anlegen:
| Secret | Wert |
|---|---|
CLOUDFLARE_API_TOKEN |
Token aus Schritt 5 |
CLOUDFLARE_ACCOUNT_ID |
Account-ID aus Schritt 4 |
Schritt 8: Ersten Deploy auslösen
git add .
git commit -m "Initial setup"
git push
Beobachte den Workflow: GitHub → Actions → Deploy Docs to Cloudflare Pages.
Nach ca. 1 Minute ist die Seite unter https://interne-doku.pages.dev erreichbar.
Schritt 9: Custom Domain einrichten
- Im Cloudflare Dashboard die Suchleiste oben nutzen und nach dem Pages-Projekt suchen (z. B.
interne-doku). Es erscheint unter Workers & Pages. - Im Projekt: Custom domains → Set up a custom domain →
docs.meinefirma.deeingeben. - Cloudflare erstellt den CNAME-Record automatisch (da die Domain bereits bei Cloudflare liegt).
- Klicke auf Check DNS records — sollte sofort verifiziert werden.
- Prüfe unter DNS → Records, dass der CNAME-Eintrag auf Proxied steht.
Die Seite ist jetzt unter https://docs.meinefirma.de erreichbar.
Schritt 10: Cloudflare Access einrichten (Zugriffsschutz)
Ohne diesen Schritt ist die Doku öffentlich.
10.1 Zero Trust aktivieren
- Gehe zu one.dash.cloudflare.com.
- Aktiviere Zero Trust Free (kostenlos bis 50 Nutzer).
10.2 Login-Methode (Identity Provider) hinzufügen
- Im Zero Trust Dashboard die Suchleiste nutzen und nach „Login methods" oder „Authentication" suchen — die Menüstruktur ändert sich gelegentlich, die Suche ist der zuverlässigste Weg.
- Add new → eine Methode wählen:
One-time PIN (am einfachsten): Keine Konfiguration nötig. Nutzer bekommt einen Code per E-Mail.
GitHub (smootheres Login): Braucht eine GitHub OAuth App:
- GitHub → Settings → Developer settings → OAuth Apps → New OAuth App.
- Ausfüllen:
- Application name:
Cloudflare Access - Homepage URL:
https://meinefirma.de - Authorization callback URL:
https://<dein-team-name>.cloudflareaccess.com/cdn-cgi/access/callback - Den Team-Namen findest du im Zero Trust Dashboard unter Settings → General oder in der URL.
- Client ID und Client Secret (über „Generate a new client secret") kopieren.
- In Cloudflare unter Login methods → GitHub eintragen.
- PKCE und Enable Device Flow → aus lassen.
Falls du den Fehler „Unable to find your Access organization" bekommst: Der Team-Name in der Callback-URL stimmt nicht — im Zero Trust Dashboard nochmal prüfen.
10.3 Application anlegen
- Access → Applications → Add an application → Self-hosted.
- Konfiguriere:
| Feld | Wert |
|---|---|
| Application name | Interne Dokumentation |
| Application domain | docs.meinefirma.de |
| Session Duration | 1 week (nach Bedarf) |
- Klicke auf Next.
10.4 Policy anlegen
| Feld | Wert |
|---|---|
| Policy name | Team-Zugriff |
| Action | Allow |
| Include → Emails | Einzelne E-Mail-Adressen eintragen |
Einzelne Adressen sind sicherer als eine Domain-Wildcard — so hat nur Zugriff, wer explizit eingetragen ist.
- Speichern.
10.5 Auch die pages.dev-Domain absichern
Die Standard-URL interne-doku.pages.dev ist weiterhin öffentlich erreichbar. Erstelle eine zweite Access-Application mit Domain interne-doku.pages.dev und derselben Policy.
10.6 Testen
- Öffne
https://docs.meinefirma.deim Inkognito-Fenster. - Du solltest eine Login-Seite sehen.
- E-Mail eingeben → Code per Mail erhalten → einloggen.
Schritt 11: Lokale Vorschau (optional)
Docker muss laufen. Im Projektverzeichnis:
docker run --rm -it -p 8000:8000 -v "${PWD}:/docs" squidfunk/mkdocs-material:9 serve --dev-addr 0.0.0.0:8000
Browser: http://127.0.0.1:8000 — Live-Reload inklusive.
Alltag: Doku aktualisieren
# Markdown bearbeiten, dann:
git add docs/
git commit -m "Doku: Abschnitt X ergänzt"
git push
Der Workflow baut und deployt automatisch innerhalb von ca. 1 Minute.
Troubleshooting
| Problem | Lösung |
|---|---|
| Nameserver-Änderung bei All-Inkl greift nicht | Kann bis zu 24h dauern. Status prüfen: dig meinefirma.de NS |
| E-Mail funktioniert nicht mehr | MX-Records in Cloudflare prüfen, müssen auf DNS only stehen |
Authentication error beim Deploy |
API-Token hat nicht die Berechtigung „Cloudflare Pages — Edit" |
Project not found |
Projektname im Workflow stimmt nicht mit Cloudflare überein |
| Build bricht ab | --strict ist aktiv — Warnungen im Log beheben |
| Safari findet den Server nicht | Safari komplett beenden (Cmd+Q) und neu öffnen (DNS-Cache) |
| Seite öffentlich erreichbar | Access-Application prüfen, auch *.pages.dev absichern |
| Custom Domain zeigt SSL-Fehler | Ein paar Minuten warten, Cloudflare stellt das Zertifikat automatisch aus |