Cloudflare Pages — MADACUP

🌐 MADACUP sur Cloudflare Pages — Documentation

Dernière MAJ : 16 Juin 2026 Auteur : Fefe (via ZCode) Statut : ✅ Opérationnel — sites servis à 100 % par Cloudflare


1. Vue d’ensemble

Le site MADACUP est entièrement servi par Cloudflare Pages (CDN global + SSL + edge cache). Le VPS ne sert plus madacup.online ni dev.madacup.online — uniquement les sous-domaines shop., oauth., media..

                    ┌──────────────────────────┐
   madacup.online   │   Cloudflare Pages       │
   dev.madacup.online│   (CDN edge, SSL auto)  │
         ──────────►│   madacup.pages.dev      │
                      madacup-dev.pages.dev     │
                    └──────────────────────────┘
                              ▲
                              │ déploiement
                              │
                    ┌─────────┴────────────────┐
                    │   VPS Ubuntu 24.04       │
                    │   /var/www/madacup-website    │  ← source prod
                    │   /var/www/dev.madacup.online-nexus │  ← source dev
                    │   /root/deploy-madacup.sh      │  ← script de déploiement
                    └──────────────────────────┘

2. Architecture & URLs

Projets Cloudflare Pages

Projet Branche prod URL pages.dev Custom domain Source sur VPS
madacup main https://madacup.pages.dev madacup.online /var/www/madacup-website
madacup-dev main https://madacup-dev.pages.dev dev.madacup.online /var/www/dev.madacup.online-nexus

Account Cloudflare

Élément Valeur
Account Fenohery
Account ID f30dd0d409679ae65e841302cc0caa8c
Zone madacup.online 062eb8c3e10c8fe2ec9fdd1f9fd18047
Nameservers blakely.ns.cloudflare.com, kianchau.ns.cloudflare.com
Dashboard https://dash.cloudflare.com → Workers & Pages

DNS madacup.online

Enregistrement Type Cible Proxy
madacup.online (apex) CNAME madacup.pages.dev 🟠 proxied
dev.madacup.online CNAME madacup-dev.pages.dev 🟠 proxied
*.madacup.online (wildcard) A 173.212.232.124 (VPS) ⚪ DNS only
media.madacup.online A 173.212.232.124 🟠 proxied
shop.madacup.online (wildcard) VPS Nginx
oauth.madacup.online (wildcard) VPS Nginx
MX, TXT (mail) Zoho / SPF / Google ⚪ DNS only

3. Déploiement — /root/deploy-madacup.sh

Usage

./deploy-madacup.sh              # déploie prod + dev (défaut)
./deploy-madacup.sh prod         # déploie seulement la prod
./deploy-madacup.sh dev          # déploie seulement le dev
./deploy-madacup.sh --check      # vérifie l'état HTTP sans déployer

Ce que fait le script

  1. Préflight — vérifie le token Cloudflare (/root/.secrets/cf-api-token-full.txt) et wrangler
  2. Staging propre — copie la source vers /tmp/deploy-madacup-<env>/ en excluant :
  3. Garde-fou sécurité — si un .env est détecté dans le staging → déploiement annulé
  4. Uploadwrangler pages deploy vers le projet cible
  5. Vérification HTTP — teste madacup.online, dev.madacup.online, /impressum, /datenschutz
  6. Statut API — vérifie que les custom domains sont active

Workflow type (modification du site)

# 1. Modifier les fichiers source
vim /var/www/madacup-website/index.html

# 2. Déployer
/root/deploy-madacup.sh prod

# 3. Le script vérifie le HTTP automatiquement après coup

4. Fichiers de configuration Cloudflare Pages

Ces fichiers vivent à la racine de chaque site (/var/www/madacup-website/ et /var/www/dev.madacup.online-nexus/).

_headers — Sécurité & cache

/*
  X-Frame-Options: SAMEORIGIN
  X-Content-Type-Options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin
  Permissions-Policy: geolocation=(), microphone=(), camera=()
  Cache-Control: public, max-age=3600

/assets/*    → Cache-Control: public, max-age=31536000, immutable
/css/*       → idem
/js/*        → idem
/fonts/*     → idem
/*.html      → Cache-Control: public, max-age=0, must-revalidate

_redirects — Routing

# Cloudflare Pages gère nativement les "pretty URLs"
# (/impressum → impressum.html) — ne PAS les redéfinir (boucle 308).

/*    /index.html    200      # Fallback 404 → page d'accueil

⚠️ Leçon apprise : ne jamais redéfinir /impressum → /impressum.html dans _redirects. Pages le fait déjà nativement → ça crée une boucle 308 infinie.


5. Nginx — état après migration

Vhosts désactivés (plus servis par le VPS)

Les liens symboliques ont été retirés de /etc/nginx/sites-enabled/. Les fichiers de config sont conservés dans /etc/nginx/sites-available/ (réactivables).

Vhost Statut
madacup.online ❌ désactivé (servi par Cloudflare Pages)
dev.madacup.online ❌ désactivé (servi par Cloudflare Pages)

Réactivation éventuelle (si retour VPS nécessaire) :

ln -s /etc/nginx/sites-available/madacup.online /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/dev.madacup.online /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Vhosts toujours actifs sur le VPS

Vhost Racine Rôle
shop.madacup.online /var/www/shop.madacup.online/out E-commerce Next.js
oauth.madacup.online /var/www/madacup/oauth Auth OAuth
media.madacup.online /var/www/media Médias (cartoon/webp/webm)
html (default) /var/www/html Page par défaut Nginx

6. Credentials & secrets

Fichier Rôle Permissions
/root/.secrets/cf-api-token-full.txt Token Cloudflare (full access) 600
/root/.secrets/cf-api-token-madacup.txt Token Cloudflare (Madacup only) 600
/var/www/madacup-website/.env Clé Stripe (LIVE) 🔒 jamais déployé
/var/www/dev.madacup.online-nexus/.env Clé Stripe (dev) 🔒 jamais déployé

🔴 Les tokens Cloudflare proviennent de vps-tailscale (144.91.96.120) via le script /root/pull-okf.sh. La source de vérité est sur ce VPS principal.

Récupérer le token Cloudflare si absent du VPS

mkdir -p /root/.secrets
scp root@144.91.96.120:/root/.secrets/cf-api-token-full.txt /root/.secrets/
chmod 600 /root/.secrets/cf-api-token-full.txt

7. Stack technique


8. Dépannage

ERR_QUIC_PROTOCOL_ERROR sur madacup.online

Cause probable : le WHOIS du domaine est en vérification chez Namecheap → les NS basculent vers failed-whois-verification.namecheap.com → le DNS Cloudflare n’est plus consulté.

Diagnostic :

dig NS madacup.online +short
# Si on voit "failed-whois-verification.namecheap.com" → aller valider le WHOIS chez Namecheap

Fix : Dashboard Namecheap → valider les infos de contact WHOIS du domaine.

Boucle de redirection 308 sur /impressum

Cause : règle _redirects redondante avec les pretty URLs natifs de Pages.

Fix : s’assurer que _redirects ne contient que le fallback :

/*    /index.html    200

Custom domain stuck en pending

Cause : DNS pas encore propagé, ou certificat SSL en cours d’émission.

Diagnostic :

/root/deploy-madacup.sh --check

Fix : attendre 2-15 min (propagation + SSL). Vérifier sur le dashboard Cloudflare → Pages → Custom domains.

Vérifier qui sert le site

curl -sI https://madacup.online | grep -iE 'server|cf-ray'
# Doit renvoyer : server: cloudflare + cf-ray: xxx-XXX

9. Historique