Publier votre documentation dans un sous-dossier avec Cloudflare
Suivez ce guide pour héberger votre centre d’aide Ferndesk dans un sous-dossier personnalisé (comme yourdomain.com/help) en utilisant Cloudflare Workers comme proxy inverse.
Cette opération prend environ 10 minutes et nécessite peu de connaissances techniques. Nous avons conçu ce guide pour qu’il soit aussi facile à suivre que possible.
Vous êtes bloqué ? Contactez [email protected] et nous vous aiderons à terminer votre configuration.
Prérequis
Un espace de travail Ferndesk avec un accès administrateur
Un domaine dont vous êtes propriétaire (déjà configuré sur Cloudflare)
Une connaissance de base du tableau de bord Cloudflare
La configuration d’un sous-dossier personnalisé nécessite l’enregistrement d’un mode de paiement actif.
L’offre gratuite de Cloudflare autorise 100 000 requêtes Worker par jour. Pour les centres d’aide en production à fort trafic, envisagez de passer à une offre payante avec facturation à l’utilisation.
Étape 1 : Configurer le sous-dossier personnalisé dans Ferndesk
Commencez par configurer votre centre d’aide Ferndesk pour utiliser un chemin de sous-dossier personnalisé.
Connectez-vous à votre espace de travail Ferndesk, développez Centre d’aide dans la barre latérale gauche, puis cliquez sur Personnaliser.
Cliquez sur Domaine personnalisé
Sélectionnez l’option Sous-dossier personnalisé
Saisissez votre domaine dans le champ Domaine (par exemple,
yourdomain.com).Saisissez le chemin de sous-dossier souhaité dans le champ Sous-répertoire (par exemple,
/helpou/docs).Cliquez sur Configurer le sous-dossier.
Une fois la configuration terminée, Ferndesk générera les enregistrements DNS et les informations de point de terminaison nécessaires. Notez ces informations : vous les utiliserez lors de la configuration du proxy inverse.
Étape 2 : Créer un Cloudflare Worker
Créez maintenant un nouveau Cloudflare Worker qui fera office de proxy inverse.
Connectez-vous à votre tableau de bord Cloudflare.
Sous BUILD → Calcul et IA, accédez à Workers & Pages depuis la barre latérale gauche .
Cliquez sur Créer une application dans l’angle supérieur droit.
Sous Commencer avec Hello World!, cliquez sur Commencer.
Donnez à votre Worker un nom descriptif, comme
ferndesk-reverse-proxy, puis cliquez sur Déployer.
Étape 3 : Configurer les routes du Worker
Configurez la règle de routage qui redirige le trafic de votre sous-dossier personnalisé vers le Cloudflare Worker.
Dans les paramètres du Worker, ouvrez l’onglet Paramètres.
Faites défiler la page jusqu’à Domaines et routes, puis cliquez sur Ajouter.
Une fenêtre modale s’ouvre. Sélectionnez l’option Route.
Dans la liste déroulante Zone, sélectionnez votre domaine (par exemple,
yourdomain.com).Dans le champ Route, saisissez le modèle correspondant au chemin de votre sous-dossier. Utilisez
yourdomain.com/helppour intercepter toutes les requêtes vers le chemin/helpet ses sous-chemins.Pour des raisons de sécurité, laissez Mode d’échec défini sur Échec fermé (bloquer).
Cliquez sur Ajouter une route.
IMPORTANT : vous devez ajouter une route distincte pour le répertoire d’assets _ferndesk. Suivez les étapes ci-dessous pour terminer votre configuration.
Étape 3b : Ajouter la route _ferndesk
Faites défiler la page jusqu’à Domaines et routes, puis cliquez sur Ajouter.
Une fenêtre modale s’ouvre. Sélectionnez l’option Route.
Dans la liste déroulante Zone, sélectionnez votre domaine (par exemple,
yourdomain.com).Dans le champ Route, saisissez le modèle correspondant au chemin de votre sous-dossier. Utilisez
yourdomain.com/_ferndeskpour intercepter toutes les requêtes vers le chemin/_ferndesket ses sous-chemins.Pour des raisons de sécurité, laissez Mode d’échec défini sur Échec fermé (bloquer).
Cliquez sur Ajouter une route.
Étape 4 : Modifier le code du Worker
Mettez maintenant à jour le code du Worker pour gérer la logique du proxy inverse. Le Worker interceptera les requêtes vers votre sous-dossier et les transmettra à Ferndesk.
Cliquez sur Modifier le code (ou accédez à l’éditeur de code depuis le tableau de bord du Worker).
Remplacez entièrement le code de
worker.jspar le script de proxy inverse ci-dessous.const HELP_HOST = 'your-company.hc.ferndesk.com'; // your Ferndesk help domain const PROXY_PREFIX = '/help'; // the subfolder you chose in Ferndesk const PROXY_VERSION = '2'; addEventListener('fetch', (event) => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const originalUrl = new URL(request.url); // Keep canonical trailing-slash behaviour on the edge if (originalUrl.pathname.endsWith('/') && originalUrl.pathname !== '/') { originalUrl.pathname = originalUrl.pathname.slice(0, -1); return Response.redirect(originalUrl.toString(), 301); } // Only intercept the help subtree (and the help assets) if ( originalUrl.pathname !== PROXY_PREFIX && !originalUrl.pathname.startsWith(`${PROXY_PREFIX}/`) && !originalUrl.pathname.startsWith('/_ferndesk/') ) { return fetch(request); } // Build the upstream request with the prefix removed const upstreamUrl = new URL(originalUrl.toString()); upstreamUrl.hostname = HELP_HOST; if (upstreamUrl.pathname === PROXY_PREFIX) { upstreamUrl.pathname = '/'; } else if (upstreamUrl.pathname.startsWith(`${PROXY_PREFIX}/`)) { upstreamUrl.pathname = upstreamUrl.pathname.slice(PROXY_PREFIX.length) || '/'; } // Enables edge caching: tells Ferndesk this render belongs to your // subfolder so it gets its own cache entry. upstreamUrl.searchParams.set('__bp', PROXY_PREFIX); const proxyRequest = new Request(upstreamUrl.toString(), request); // Let the help app know we are hosted under the subfolder proxyRequest.headers.set('X-Ferndesk-Base-Path', PROXY_PREFIX); proxyRequest.headers.set('X-Forwarded-Host', originalUrl.host); proxyRequest.headers.set('X-Ferndesk-Original-Host', originalUrl.host); proxyRequest.headers.set('X-Ferndesk-Proxy-Version', PROXY_VERSION); // Handle redirects ourselves so renamed articles redirect visitors on // this domain instead of being followed silently. const response = await fetch(proxyRequest, { redirect: 'manual' }); if (response.status >= 300 && response.status < 400) { return rewriteRedirect(response, originalUrl); } return response; } // Translates an upstream redirect (on the Ferndesk help host) back onto // this site's host and subfolder. External redirects pass through as-is. function rewriteRedirect(response, originalUrl) { const location = response.headers.get('location'); if (!location) return response; const target = new URL(location, `https://${HELP_HOST}`); if (target.hostname !== HELP_HOST) return response; target.protocol = 'https:'; target.host = originalUrl.host; target.searchParams.delete('__bp'); const alreadyPrefixed = target.pathname === PROXY_PREFIX || target.pathname.startsWith(`${PROXY_PREFIX}/`); if (!alreadyPrefixed) { target.pathname = target.pathname === '/' ? PROXY_PREFIX : PROXY_PREFIX + target.pathname; } // Response headers from fetch are immutable; copy to edit Location. const rewritten = new Response(response.body, response); rewritten.headers.set('location', target.toString()); return rewritten; }Remplacez
HELP_HOSTpar le domaine Ferndesk réel fourni lors de la configuration de votre sous-dossier personnalisé. RemplacezPROXY_PREFIXsi vous utilisez un autre chemin de sous-dossier (par exemple,/docsau lieu de/help).Vous avez déjà configuré votre sous-dossier il y a quelque temps ? Remplacez simplement le code de votre Worker par la version ci-dessus. Tout continuera à fonctionner exactement comme avant, et les pages de votre centre d’aide commenceront à être servies depuis notre réseau edge, avec un temps de chargement généralement inférieur à 100 ms.
Cliquez sur Déployer pour publier vos modifications.
Étape 5 : Vérifier la configuration
Vérifiez que votre centre d’aide est désormais accessible à l’adresse de votre sous-dossier personnalisé.
Ouvrez un nouvel onglet de navigateur et accédez à
https://yourdomain.com/help.Votre centre d’aide Ferndesk devrait s’afficher avec votre image de marque.
Testez quelques pages en cliquant sur des liens afin de vérifier que la navigation fonctionne correctement.
Si votre centre d’aide se charge correctement et affiche votre contenu, le proxy inverse fonctionne comme prévu ! Vos clients peuvent désormais accéder à votre centre d’aide via votre domaine personnalisé.
Un problème est survenu ? Contactez-nous à l’adresse [email protected] et nous vous aiderons à terminer votre configuration.
Dépannage
Problème | Cause | Solution |
|---|---|---|
Erreur 404 Not Found lors de l’accès à l’URL | La route n’est pas configurée correctement ou le Worker n’est pas déployé | Vérifiez que le modèle de route correspond exactement à votre domaine et au chemin de votre sous-dossier. Vérifiez que le Worker est déployé et actif dans la section Domaines et routes. |
Page blanche ou mise en forme incorrecte | Le domaine Ferndesk dans le code du Worker est incorrect | Vérifiez que la variable |
Le CSS et les images ne se chargent pas | Les URL relatives de la réponse Ferndesk ne sont pas réécrites | Vous devrez peut-être ajouter une réécriture des en-têtes de réponse pour gérer les assets relatifs. Contactez le support Ferndesk pour une configuration avancée du proxy. |
Requêtes Worker limitées à 100 000 par jour | La limite de débit de l’offre gratuite Cloudflare a été atteinte | Passez à une offre Cloudflare avec facturation à l’utilisation pour bénéficier de requêtes illimitées au-delà du niveau gratuit. |