#language es <> <> ## BEGIN_INCLUDE == Exponer un Servicio Local a Internet usando FreedomBox == Esta guía describe cómo exponer un servicio local de tu red local a internet usando una FreedomBox que ya está expuesta a internet. === Escenario === * ''Tienes una !FreedomBox ejecutando'' con un dominio ya configurado y funcional. Puedes acceder a tu !FreedomBox usando una URL como `https://mi.sitio` . * ''Tienes otro servidor proporcionando un servicio local'' a la LAN que quieres exponer a Internet en el mismo dominio de tu !FreedomBox. El servicio local tiene que ser de tipo web y usar el protocolo HTTP (también es posible configurar servicios no HTTP, pero eso es otro caso). Opcionalmente el servicio puede tener un dominio propio. * Quieres que ''!FreedomBox maneje los certificados TLS'' para este dominio como suele hacer con los suyos. Tu servicio no necesitará configurarlos ni administrarlos. * Opcionalmente, quizá quieras ''limitar el acceso al servicio local usando las credenciales de !FreedomBox''. Solo los usuarios con una cuenta en la !FreedomBox (que pertenezcan a un grupo específico) podrán acceder a este servicio. El servicio local no estará disponible a cualquiera en internet. De este modo puedes alojar servicios locales que no implementen su propia autenticación o servicios locales con sus mecanismos de autenticación deshabilitados. === Exponer Servidores de la LAN === * Para exponer el servicio, crea un fichero de configuración de Apache en `/etc/apache2/conf-available/` y escribe una directiva `ProxyPass`. Suponiendo que tu servicio local está publicado en la dirección IP local `192.168.0.20` en el puerto `3000`, lo harías ejecutando la orden (como usuario root en la terminal): {{{#!highlight bash cat > /etc/apache2/conf-available/mi-servicio-local.conf < Include includes/freedombox-single-sign-on.conf ProxyPass http://192.168.0.20:3000/ }}} 1. Luego se inicia el servidor web Apache. {{{#!highlight bash systemctl reload apache2 }}} Si quieres restringir el acceso al servicio a solo algunos grupos de usuarios necesitas otro cambio más en la configuración. El siguiente ejemplo lo restringe a usuarios de los grupos “web-search” y “admin”. Se denegará el acceso a todos los demás usuarios aunque tengan una cuenta válida en tu !FreedomBox. {{{#!highlight apache Include includes/freedombox-single-sign-on.conf TKTAuthToken "web-search" "admin" ProxyPass http://192.168.0.20:3000/ }}} === Alojar el servicio en otro dominio === Algunos servicios y aplicaciones web no funcionan bien alojados bajo fragmentos de URL como `/miservicio/`. Requieren un dominio o subdominio entéramente dedicado a ellos. !FreedomBox también puede exponer estos servicios. 1. Primero obtén un dominio o subdominio. * Si el dominio es tuyo, ve a los ajustes de DNS de tu proveedor de dominios y añade un subdominio. Puedes crear un registro CNAME que simplemente apunte al dominio. * Si estás usando el servicio !FreedomBox de DNS Dinámico ingresa a https://ddns.freedombox.org y habilita la opción “Comodín”. Con este cambio, todos los subdominios (como `mi.servicio.fbx.one`) de un mismo dominio (como `fbx.one`) apuntarán al dominio. 1. Añade el dominio nuevo a tu !FreedomBox en Sistema → Servicios de Nombre → Dominio (normal) → Añadir. Por ejemplo, añade `mi.sitio`. 1. A continuación, crea un fichero de configuración de Apache en `/etc/apache2/includes/-include.conf`. Para nuestro ejemplo, sería: `/etc/apache2/includes/miservicio.mi.sitio-include.conf`. El contenido del fichero debe ser: {{{#!highlight apache ProxyPass / http://192.168.0.20:3000/ }}} 1. Si fuera necesario, modifica el fichero anterior para exigir autenticación añadiendo las directivas `Include` e `` como se muestra en a sección de autenticación. === Problemas === Para depurar cuando la configuración no funcione como se espera, ejecuta temporalmente un servicio web en tu !FreedomBox. 1. Crea un directorio temporal con una página index.html en la !FreedomBox. {{{#!highlight bash mkdir temp cd temp cat > index.html < Mi página de prueba

Hola gente!

EOL }}} 1. Ejecta un servidor web temporal (Control-C para pararlo): {{{#!highlight bash python3 -m http.server 3000 }}} 1. Actualiza la configuración de Apache para apuntar al servicio temporal de la !FreedomBox. {{{#!highlight apache ProxyPass /myservice http://127.0.0.1:3000/ }}} === Extras === Apache puede proporcionar muchas otras funcionalidades para mejorar el servicio local. Mira la [[https://httpd.apache.org/docs/current/|documentación de Apache]]. Estas son algunas: * Acelerar la respuesta del servicio sirviendo ficheros estáticos como JS, CSS, y audiovisuales desde un directorio local sin invocar al servicio. * Acelerar la respuesta cacheando las respuestas del servicio. * Inyectar cabeceras para seguridad, control de cache, etc. * Modificar las cabeceras HTTP de las respuestas del serviciocuando no funciona bien alojado bajo fragmentos de URL como `/miservicio/`. * Redireccionar desde URLs `http://` a `https://` y establecer cabeceras HSTS. * Balancear carga entre varios servicios locales para alta disponibilidad, escalado, etc. * Etc. ## END_INCLUDE Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. <> ---- CategoryFreedomBox