Del Raspberry Pi 4 a la World Wide Web: Una guía para alojar tu propio sitio web

Del Raspberry Pi 4 a la World Wide Web: Una guía para alojar tu propio sitio web

En los últimos años, la tecnología ha avanzado rápidamente y se ha vuelto cada vez más accesible. Una de las innovaciones que ha ganado popularidad es el Raspberry Pi 4, una computadora de placa única de bajo costo, pero con un rendimiento sorprendente. Con este dispositivo, es posible crear desde simples proyectos de programación y automatización hasta proyectos más profesionales, como robótica avanzada y hospedaje de sitios web.

En este artículo, exploraremos cómo usar el Raspberry Pi 4 para hospedar tu propio sitio web en internet, incluyendo un certificado SSL gratuito, para que puedas compartir tu contenido con el mundo de forma segura.

¿Qué es el Raspberry Pi?

Raspberry Pi son computadoras de bajo costo creadas por la Fundación Raspberry Pi, una organización benéfica con sede en el Reino Unido. Fue creado con el objetivo de promover la enseñanza de la ciencia de la computación y la programación, especialmente en escuelas y países en desarrollo. Conocido por ser una plataforma versátil, permite la creación de proyectos de automatización del hogar, centros de medios, servidores, internet de las cosas (IoT), drones, consolas de videojuegos retro y mucho más.

Miden aproximadamente el tamaño de una tarjeta de crédito y cuentan con diferentes versiones, entre ellas se destacan el pico, el zero y el modelo B4. El pico es ideal para aplicaciones de IoT, cuenta con un procesador RP2040 de doble núcleo, 264 kB de RAM y hasta 16 MB de memoria flash. La versión Raspberry Pi Zero 2 corre con el sistema operativo Linux, su procesador es un RP3A0 quad-core de 64 bits ARM, tiene 512 MB de memoria SDRAM y es ideal para aplicaciones que requieren un poco más de memoria y procesamiento, como robots o drones con pequeños modelos de IA. Finalmente, la versión que utilizaremos para desarrollar el proyecto, el Raspberry Pi 4 modelo B, cuenta con un procesador Broadcom BCM2711 quad-core de 64 bits ARM, además de contar con opciones de memoria RAM de 2 GB, 4 GB y 8 GB. Este modelo también corre Linux y es recomendado para aplicaciones donde necesitas una computadora de propósito general, aún de bajo costo, pero que sea capaz de manejar demandas mayores, como es el caso de correr un sistema operativo y hospedar un sitio web.

Preparando el entorno

Existe un sistema operativo estándar creado para usar en el Raspberry Pi 4 basado en Linux, pero también puedes instalar otras distribuciones de Linux, como Ubuntu, que es el que estoy utilizando. En la página de Ubuntu puedes descargar la versión más actualizada del sistema y con el software Raspberry Pi Imager, creas la imagen del sistema dentro de la tarjeta de memoria de tu Raspberry.

Después de finalizar la instalación del sistema operativo, necesitamos un servicio ejecutándose en tu máquina local para exponerlo a internet. Si aún no tienes un sitio web, puedes consultar este otro artículo donde explico cómo usar React y Tailwind para el desarrollo web. Primero, necesitamos tener node y npm instalados en Linux. Para ello, utiliza los siguientes comandos:

sudo apt-get install nodejs

sudo apt-get install npm

Luego, creas el proyecto con el comando npm create vite@latest, navegas hasta la carpeta del proyecto, ejecutas el comando npm install y finalmente npm run dev. Con esto, ya tendremos un sitio web corriendo en la máquina local.

Configurando el DNS

Para acceder a un sitio en internet, el navegador necesita saber la dirección IP y el puerto que está abierto en esa dirección. Pero, con el propósito de facilitar las cosas, se creó el Sistema de Nombres de Dominio (DNS) que, haciendo un paralelo, funciona como las antiguas guías telefónicas para internet, creando un mapeo entre URLs como “www.google.com” y la dirección IP de la máquina donde el sitio está alojado. Esto significa que, cuando accedemos a un sitio en el navegador usando el DNS, se realiza una solicitud a los llamados servidores de nombres para obtener la dirección IP del sitio al que estás accediendo.

El registro de un dominio es el punto de partida para hacer que un sitio web sea accesible en internet. Empresas registradoras acreditadas por la ICANN, como Google Domains, GoDaddy y Bluehost, ofrecen servicios que permiten a individuos y empresas registrar un nombre de dominio único. Este nombre de dominio luego se asocia con una dirección IP, permitiendo que los usuarios accedan al sitio web usando el nombre de dominio en lugar de escribir la dirección IP numérica. Entonces, el primer paso es acceder al sitio de una de estas empresas y comprar tu dominio, eligiendo un nombre que aún no haya sido registrado. Con esto, podrás gestionar a través del panel de control de tu cuenta en la empresa los servidores de nombres y el encaminamiento, como se ilustra en la imagen a continuación:


Configurando el túnel

Hacer un proxy inverso para exponer puertos de tu red local a internet crea brechas de seguridad en el firewall, lo que puede dejar tu red vulnerable a ataques como fuerza bruta, intentos de invasión y explotación de vulnerabilidades conocidas. Entonces, en lugar de eso, la mejor opción es crear un túnel a través de otro servicio. La configuración del túnel es una práctica crucial para garantizar la seguridad de las comunicaciones entre el cliente y el servidor, ya que establece una conexión segura y encriptada, dificultando que los atacantes intercepten o manipulen el tráfico.

El siguiente paso, después de adquirir el DNS, es crear una cuenta en Cloudflare. Esta empresa ofrece un servicio gratuito de túneles en la nube que permite acceder de forma segura a los recursos de tu red local desde cualquier lugar. Tras crear la cuenta, en la primera página, en la pestaña de sitios, haz clic en "Agregar sitio". Te pedirán que ingreses el nombre de tu dominio (DNS), y luego aparecerá un panel para seleccionar el plan. Elige el plan gratuito y haz clic en continuar. Después de esto, aparecerán los nombres de servidores; necesitas copiarlos y agregarlos en el servicio que elegiste para registrar tu DNS.

Luego, abre el terminal y escribe el siguiente comando para instalar clodflared:

wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared-linux-amd64.deb

Este comando permitirá realizar las configuraciones de cloudflare desde la línea de comandos. A continuación, ejecuta el siguiente código en el terminal para iniciar sesión:

cloudflared tunnel login

Se abrirá una página en el navegador donde deberás seleccionar tu DNS. Una vez hecho esto, haz clic en autorizar para que cloudflare instale un certificado que permita a tu máquina crear un túnel. Las credenciales estarán en un archivo en la siguiente ruta:

/home/seu_usuario/.cloudflared/cert.pem

Ahora, crea un túnel con el siguiente comando:

clodflared tunnel create tunnel_name

Al ejecutarlo, se generará un archivo .json en la misma carpeta donde se encuentra el certificado de la máquina. Este archivo estará compuesto por un código de letras y números separados por guiones; ese es el UUID del túnel. Navega hasta la carpeta donde se instalaron los archivos y crea un nuevo archivo llamado “config.yml”:

cd /home/seu_usuario/.cloudflared/

touch config.yml

Dentro de este archivo se colocarán las configuraciones del túnel, primero el UUID, luego las credenciales, seguido del ingreso que estará compuesto por el hostname (tu DNS), el servicio (tu IP + puerto), la configuración noTLSVerify como true (lo que permitirá que el certificado no sea verificado; puedes cambiar esta configuración más tarde y presentar otro certificado), y el servicio que se presentará en caso de error:

tunnel: uuid_do_seu_tunnel
credentials-file: /home/seu_usuario/.cloudflared/uuid_do_seu_tunnel.json
ingress:
  - hostname: www.seu_dominio.com
    service: https://localhost:5173
    originRequest:
      noTLSVerify: true
  - service: http_status:404


El siguiente paso es enrutar tu DNS al túnel creado. El comando es el siguiente:

cloudflared tunnel route dns tunnel_name seu_dominio.com

Finalmente, ejecuta el comando para activar el túnel:

cloudflared tunnel run tunnel_name

Configurando SSL

SSL significa capa de conexión segura (del inglés, Secure Sockets Layer), es un protocolo de seguridad que proporciona cifrado y autenticación para las comunicaciones en internet. Se utiliza para garantizar que la conexión entre el cliente y el servidor sea segura, de modo que los datos transmitidos entre ellos no puedan ser leídos o alterados fácilmente por terceros malintencionados que podrían interceptar la comunicación. Con la configuración de SSL en un servidor, el tráfico de información sensible como contraseñas, números de tarjetas de crédito y otros datos personales está protegido mediante cifrado.

Para configurar SSL, primero necesitamos generar el certificado. Existen varias herramientas en línea y gratuitas para esto, como por ejemplo sslforfree. Ingresa el nombre de tu sitio y la herramienta generará el certificado y una clave que deberás descargar y colocar en la carpeta de tu proyecto. Para facilitar la configuración, puedes cambiar el nombre de los archivos a “localhost.key” y “localhost.crt”, por ejemplo. Luego, simplemente agrega el certificado y la clave en el archivo vite.config.js:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    https:  {
      key: './localhost.key',
      cert: './localhost.crt',
    }
  },
  plugins: [react()],
})

Conclusión

Hospedar sitios web a través del Raspberry Pi 4 ofrece un enfoque accesible y personalizable para compartir contenido en línea. Sin embargo, la seguridad y protección de los datos de los usuarios son factores cruciales a considerar. La creación de túneles con SSL a través de la plataforma Cloudflare surge como una solución efectiva, garantizando no solo el cifrado de las comunicaciones entre el servidor y el cliente, sino también una capa adicional de seguridad mediante la protección contra amenazas y la autenticación de identidad. Al combinar la practicidad del Raspberry Pi 4 con la solidez de las medidas de seguridad implementadas a través de Cloudflare, es posible construir una presencia en línea confiable y protegida, lo que beneficia tanto el posicionamiento de tu sitio en los resultados de búsqueda de Google como a los visitantes del sitio, quienes tendrán sus datos protegidos.

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.