Cómo crear un servidor web público en su casa con Cloudflare

¿Qué es un servidor web?

Un servidor web es software- [Program/Software: the instructions that control what a computer does; computer programs] - y hardware que utiliza HTTP (Protocolo de Transferencia de Hipertexto) o HTTPS y otros protocolos para responder a las solicitudes de clientes hechas en la World Wide Web. El trabajo principal de un servidor web es mostrar contenido del sitio web mediante almacenamiento, procesamiento y entrega de páginas web a los usuarios. Además de HTTP o HTTPS, los servidores web también admiten otros protocolos que se pueden llamar como “servicios web” accesibles con diferentes puertos; protocolos también pueden ser diferentes del estándar http como FTP o SSH u otro.

El hardware del servidor web está conectado a Internet y permite intercambiar datos con otros dispositivos conectados, mientras que el software del servidor web controla cómo un usuario accede a los archivos anfitriones. El proceso del servidor web es un ejemplo del modelo cliente/servidor. Todos los ordenadores que albergan sitios web deben tener software de servidor web.

Los servidores web se utilizan en el alojamiento web, o en el alojamiento de datos para sitios web y aplicaciones basadas en la web, o aplicaciones web.

¿Por qué utilizar Cloudflare y cuál es el software de nubes?

Cloudflare es una empresa estadounidense que ofrece servicios como un DNS, una red de distribución de contenidos (CDN) y muchos otros servicios adicionales para que los sitios web sean más rápidos y seguros. Para entender cómo funciona Cloudflare, es necesario mirar los errores frecuentemente cometidos que los sitios web en el pasado cometieron. Al visitar un sitio web sin Cloudflare, el visitante del sitio web solicita contenido de un servidor. Sin embargo, cuando había demasiados visitantes en el servidor al mismo tiempo, el servidor se sobrecarga con las consecuencias de un sitio web lento o no operativo. Como propietario del sitio web esto no es algo que le gustaría ver. Por eso Cloudflare inventó una solución para esto. Cloudflare colocó su propio servidor, en forma de una enorme red mundial, entre el sitio web y el servidor web. Los visitantes del sitio web ya no se comunican directamente con el servidor, pero con la red Cloudflare que ya ha almacenado el contenido del sitio web y lo carga a través de un servidor dependiendo de la ubicación del visitante. Por ejemplo: Usted tiene un sitio web que se hospeda en Alemania, y alguien de los Estados Unidos intenta conectarse a su sitio web. La solicitud tiene que recuperar una gran distancia (entre el sitio web y el servidor web). Cloudflare resuelve esto ofreciendo una enorme red de servidores alrededor del mundo. El estadounidense ya no tiene que hacer una conexión con el servidor alemán, pero se conectará con el servidor Cloudflare más cercano en algún lugar de los Estados Unidos. Tunnels Cloudflare (o software Cloudflared) es como una conexión VPN, ya que es una manera segura de acceder a los recursos de su red privada interna desde el mundo exterior. La diferencia con los túneles Cloudflare vs. su VPN tradicional es que no tiene que abrir puertos en su cortafuegos. Con VPN, se conecta a su servidor VPN (o a veces directamente a su router) a través de un agujero que ha colocado en su firewall. Con Cloudflare Tunnels, instala un cliente dentro de su red que mantiene una conexión segura a Cloudflare. Luego crea diferentes FQDNs (Nombres de dominio totalmente calificados aka. DNS nombres aka. registros CNAME) que se asocian con sus servicios internos.

Cómo utilizar Cloudflared para albergar una aplicación o un servidor web completo

Con Cloudflare se puede utilizar un pequeño software llamado “cloudflared” que crea un túnel de su hardware al origen de la nube y vincular ese túnel a su puerto 80 o 443 de su software de servidor web; de esta manera también puede no abrir estos puertos a Internet y dejar el firewall bloquearlos. Esto también aumenta la seguridad y le permite no exponer su dirección IP al exterior. Para hacer este tipo de conexión necesita una cuenta Cloudflare y un dominio de alto nivel adquirido o conectado a su cuenta. En este punto para abrir su primer túnel tendrá que acceder a la consola “Zero Trust” a través del panel Cloudflare.

La aplicación cloudflared que se puede descargar para cada sistema operativo aquí: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

Inicie su túnel seguro
Una vez que se descarga cloudflared, puede crear el primer túnel simplemente vía terminal o por webui.

TERMINAL

Escriba este comando para autenticar:

Tunel de nubes de entrada

Crear un túnel y darle un nombre:

$ túnel de nubes crear

Desde la salida del comando, tome nota del UUID del túnel y la ruta hacia el archivo de credenciales de su túnel.

Confirme que el túnel ha sido creado con éxito corriendo:

Lista de túneles de nubes

Lea los documentos oficiales para crear un túnel a través de la terminal:https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/install-and-setup/tunnel-guide/local/

WEBUI

  1. Inicie sesiónZero Trusty ir aAccesoTunels.
  2. SeleccioneCrear un túnel.
  3. Escribe un nombre para tu túnel. Sugerimos elegir un nombre que refleje el tipo de recursos que desea conectar a través de este túnel (por ejemplo,enterprise-VPC-01).
  4. SeleccioneGuardar túnel.
  5. Siguiente, tendrá que instalarcloudflaredy corre. Para hacerlo, compruebe que el ambiente bajoElija un entornorefleja el sistema operativo en su máquina, luego copiar el comando en el cuadro de abajo y pegarlo en una ventana terminal. Corre el comando.
  6. Una vez que el comando haya terminado de funcionar, su conector aparecerá en Zero Trust.
  7. SeleccioneSiguiente.

Lea los documentos oficiales para crear un túnel a través de webui:https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/install-and-setup/tunnel-guide/remote/

Configurar una conexión HTTP o HTTPS a su servidor web

Una vez creado el túnel es fácil asociar un nombre de host al túnel a través del panel “confianza cero”, en la pestaña “redes” ya puedes encontrar tu túnel registrado con el estado “saludable”. Ahora haga clic en el nombre del túnel y haga clic en el botón "editar" en la pestaña "nombre de host público" haga clic en el botón "add a public hostname"; introduzca un subdominio para crear (si desea configurar un subdominio) y seleccione uno de sus dominios principales, en el campo "tipo" que puede seleccionar HTTP o HTTPS (la diferencia entre los dos está en el puerto utilizado y el protocolo de comunicación). Para albergar un servidor web completo, si su servidor web ya está configurado con dominios que ya están presentes en Cloudflare, usted no necesita hacer nada más. Para acoger una aplicación de signle también puede utilizar puertos personalizados por ejemplo 5000 o 8080 dependiendo de qué puerto la aplicación que reside en su servidor utiliza.

De esta manera su aplicación ahora es accesible a través de Internet a través del dominio que seleccionó anteriormente.

Recomendaciones de configuración

Cuando Cloudflared recibe una solicitud de un dispositivo WARP, utiliza los puertos de la máquina anfitriona para evaluar y enviar la solicitud a su servicio de origen. Cada máquina por diseño del sistema está limitada por hardware a un máximo de 65.535 puertos. Además, cada servicio en la máquina tiene un número limitado de puertos que puede consumir. Por este motivo, recomendamos el siguiente modelo de despliegue:

  • cloudflared debe ser implementado en una máquina de host dedicada. Este modelo es típicamente apropiado, pero puede haber flujos de trabajo sin servidor o agrupados cuando un host dedicado no es posible.
  • La máquina anfitriona debe asignar 50.000 puertos a estar disponibles para su uso por el servicio cloudflared. Los puertos restantes están reservados para los procesos administrativos del sistema.

Para aumentar el número de puertos disponibles para cloudflared en Linux:

Si su máquina tiene un directorio /etc/sysctl.d/:

Terminal window
echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.d/99-cloudflared.conf
sudo sysctl -p /etc/sysctl.d/99-cloudflared.conf

De lo contrario:

Terminal window
echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf

En Linux y macOS, los ajustes de Ulimit determinan los recursos del sistema disponibles para un usuario conectado. Recomendamos configurar los siguientes límites en el servidor de nubes: ≥ 70.000

Para ver sus límites actuales, abra un terminal y ejecute:

Terminal window
ulimit -a

Para establecer el ulimit de archivos abiertos:

Terminal window
ulimit -n 70000

Documentos de configuración de: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/deploy-tunnels/system-requirements/

Documentos de configuración generales para desplegar un túnel: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/deploy-tunnels/

¿Por qué se recomienda nubes?

El software tiene varios usos; podemos enumerar algunos de ellos, imaginar por ejemplo estar en una zona del mundo donde no hay Internet por cable y tener un servidor web que tendrá que pagar por conexiones satélites muy costosas o 4g lte... Muchas de estas conexiones no tienen una IP pública porque están tapadas o protegidas; con cloudflared es posible evitar estos límites y seguir transmitiendo en la web sin exponer su dirección IP al público. En la particularidad de tener una conexión móvil de 4g o 5g y poder hacerlo en cualquier lugar (incluso si la conexión por cable está disponible) todavía recomendamos utilizar estas conexiones como “backup” y no como conexión principal; la razón es que si los proveedores ven tráfico inusual en la red móvil, también podrían limitarla. El uso de cloudflared sin embargo no se limita a esto; imagine por ejemplo tener que crear una red de servidores con diferentes funciones, por ejemplo, podría utilizar un servidor web con una línea dedicada y uno (o más) servidores de streaming en casa conectados a través de cloudflared quizás también para una conexión a bases de datos. También puede necesitar que algunos usuarios accedan a su solicitud que normalmente utiliza en una dirección como http://localhost:8080 con nubes se puede hacer esto simplemente entrando en ese puerto en el campo “host”. También es posible conectar múltiples servidores a un solo dominio a través de subdominios o establecer una protección de acceso para proteger el acceso con autenticación de dos factores o autenticación de posturas de usuario (dispositivo utilizado, ip y más). En resumen, los usos pueden ser diversos. Tenga cuidado de utilizarlo correctamente, sin embargo, porque Cloudflare realiza cheques periódicos y puede desactivar el uso de cuentas en cualquier momento.

Lea siempre los documentos oficiales

Como escribí hace un tiempo, te aconsejo que siempre leas y aprendas del funcionariocloudflaredocumentos porque este software también podría tener cambios con el tiempo. Este documento está escrito sin haber recibido ningún apoyo oficial decloudflarey es un ejemplo para aquellos que trabajan en nuestra organización.