Ferndesk
Subcarpetas personalizadas

Conecte su centro de ayuda a una subcarpeta personalizada mediante Cloudflare

Siga esta guía para alojar su centro de ayuda de Ferndesk en una ruta de subcarpeta personalizada (como tudominio.com/help) utilizando Cloudflare Workers como un proxy inverso.

Esto toma aproximadamente 10 minutos y requiere pocos conocimientos técnicos. Lo hemos redactado para que sea lo más fácil de seguir posible.

¿Se ha quedado atascado? Contacte con [email protected] y le ayudaremos a completar su configuración.

Prerrequisitos

  • Un espacio de trabajo de Ferndesk con acceso de administrador

  • Un dominio propio (ya apuntado a Cloudflare)

  • Familiaridad básica con el panel de Cloudflare

El plan gratuito de Cloudflare permite 100,000 solicitudes de Worker por día. Para centros de ayuda en producción con alto tráfico, considere actualizar a un plan de pago con facturación por uso.

Paso 1: Configurar la subcarpeta personalizada en Ferndesk

Primero, configure su centro de ayuda de Ferndesk para utilizar una ruta de subcarpeta personalizada.

  1. Inicie sesión en su espacio de trabajo de Ferndesk, expanda Help Center en la barra lateral izquierda y haga clic en Customize.

  2. Haga clic en Custom domain

  3. Seleccione la opción Custom sub-folder

  4. Introduzca su dominio en el campo Domain (ej. tudominio.com).

  5. Introduzca la ruta de la subcarpeta deseada en el campo Subdirectory (ej. /help o /docs).

  6. Haga clic en Configure sub-folder.

Una vez configurado, Ferndesk generará los registros DNS y la información del endpoint necesarios. Anote estos detalles; los utilizará al configurar el proxy inverso.

Paso 2: Crear un Cloudflare Worker

Ahora cree un nuevo Cloudflare Worker que actuará como proxy inverso.

  1. Inicie sesión en su panel de Cloudflare.

  2. En BUILD Compute & AI, navegue a Workers & Pages en la barra lateral izquierda.

    Panel de Cloudflare mostrando la opción de menú Workers & Pages resaltada en la barra lateral izquierda bajo la sección BUILD
  3. Haga clic en Create application en la esquina superior derecha.

    Panel de Cloudflare Workers & Pages con el botón Create application visible en la parte superior derecha
  4. En Start with Hello World!, haga clic en Get started.

  5. Asigne a su Worker un nombre descriptivo como ferndesk-reverse-proxy y haga clic en Deploy.

Paso 3: Configurar las rutas del worker

Configure la regla de enrutamiento que dirige el tráfico desde su subcarpeta personalizada al Cloudflare Worker.

  1. En la configuración del Worker, navegue a la pestaña Settings.

  2. Desplácese hasta Domains & Routes y haga clic en Add.

  3. Se abrirá una ventana modal. Seleccione la opción Route.

    Ventana modal para configurar dominios y rutas con la opción Route resaltada
  4. En el desplegable Zone, seleccione su dominio (ej. tudominio.com).

  5. En el campo Route, introduzca el patrón para la ruta de su subcarpeta. Utilice tudominio.com/help para capturar todas las solicitudes a la ruta /help y sus subrutas.

  6. Deje Failure mode establecido en Fail closed (block) por seguridad.

  7. Haga clic en Add route.

    Modal de configuración de ruta mostrando la zona establecida en tudominio.com y el patrón de ruta como *tudominio.com/help* con opciones de modo de fallo

IMPORTANTE: Debe añadir una ruta independiente para el directorio de recursos de Fern _ferndesk. Siga los pasos a continuación para completar su configuración.

Paso 3b: Añadir la ruta _ferndesk

  1. Desplácese hasta Domains & Routes y haga clic en Add.

  2. Se abrirá una ventana modal. Seleccione la opción Route.

    Ventana modal para configurar dominios y rutas con la opción Route resaltada
  3. En el desplegable Zone, seleccione su dominio (ej. tudominio.com).

  4. En el campo Route, introduzca el patrón para la ruta de su subcarpeta. Utilice tudominio.com/_ferndesk para capturar todas las solicitudes a la ruta /_ferndesk y sus subrutas.

  5. Deje Failure mode establecido en Fail closed (block) por seguridad.

  6. Haga clic en Add route.

Paso 4: Editar el código del Worker

Ahora actualice el código del Worker para manejar la lógica del proxy inverso. El Worker interceptará las solicitudes a su subcarpeta y las reenviará a Ferndesk.

  1. Haga clic en Edit code (o acceda al editor de código desde el panel del Worker).

  2. Reemplace todo el código de worker.js con el script de proxy inverso que aparece a continuación.

    // ONLY edit these
    
    const HELP_HOST = 'your-slug.hc.ferndesk.com'; // your Ferndesk help center host copied from your dashboard
    const PROXY_PREFIX = '/help'; // the path you want your help center to live on
    
    addEventListener('fetch', (event) => {
    	event.respondWith(handleRequest(event.request));
    });
    
    async function handleRequest(request) {
    	const originalUrl = new URL(request.url);
    
    
    	if (originalUrl.pathname.endsWith('/') && originalUrl.pathname !== '/') {
    		originalUrl.pathname = originalUrl.pathname.slice(0, -1);
    		return Response.redirect(originalUrl.toString(), 301);
    	}
    
    
    	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) || '/';
    	}
    
    	const proxyRequest = new Request(upstreamUrl.toString(), request);
    
    	// CRITICAL: Needed to resolve requests correctly
    	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);
    
    
    	return fetch(proxyRequest);
    }

    Reemplace HELP_HOST con el dominio real de Ferndesk proporcionado cuando configuró su subcarpeta personalizada. Reemplace PROXY_PREFIX si está utilizando una ruta de subcarpeta diferente (ej. /docs en lugar de /help).

  3. Haga clic en Deploy para publicar sus cambios.

Paso 5: Verificar la configuración

Pruebe que su centro de ayuda sea ahora accesible en la ruta de su subcarpeta personalizada.

  1. Abra una nueva pestaña del navegador y navegue a https://tudominio.com/help.

  2. Debería ver su centro de ayuda de Ferndesk cargado con su imagen de marca.

  3. Pruebe algunas páginas haciendo clic en los enlaces para asegurarse de que la navegación funciona correctamente.

¡Si su centro de ayuda carga correctamente y muestra su contenido, el proxy inverso está funcionando bien! Sus clientes ahora pueden acceder a su centro de ayuda en su dominio personalizado.

¿Algo ha salido mal? Contáctenos en [email protected] y le ayudaremos a completar su configuración.

Solución de problemas

Problema

Causa

Solución

Error 404 Not Found al visitar la URL

La ruta no está configurada correctamente o el Worker no se ha desplegado

Verifique que el patrón de la ruta coincida exactamente con su dominio y la ruta de la subcarpeta. Compruebe que el Worker esté desplegado y activo en la sección Domains & Routes.

Página en blanco o diseño roto

El dominio de Ferndesk en el código del Worker es incorrecto

Verifique que la variable ferndesk_host en el código de su Worker coincida con el dominio proporcionado por Ferndesk. Despliegue el código corregido.

No se cargan el CSS ni las imágenes

Las URLs relativas en la respuesta de Ferndesk no se están reescribiendo

Es posible que deba añadir una reescritura de cabeceras de respuesta para manejar los recursos relativos. Contacte con el soporte de Ferndesk para una configuración avanzada de proxy.

Solicitudes del Worker limitadas a 100,000/día

Se ha alcanzado el límite del plan gratuito de Cloudflare

Actualice su plan de Cloudflare a facturación por uso para obtener solicitudes ilimitadas más allá del nivel gratuito.

¿Te fue util?