enero 10, 2021

Autohospedaje con Cloudflared Argo Tunnel en tu Raspberry Pi

En general, Argo Tunnels es un servicio de Cloudflare que crea un túnel encriptado entre su servidor y la red Cloudflare. Debido a esto, los usuarios no se conectarán directamente a su servidor, sino que se conectarán a través de un proxy a través de la red de Cloudflare.

Autohospedaje con Cloudflared Argo Tunnel en tu Raspberry Pi

¿Qué es Argo Tunel?

En general, Argo Tunnels es un servicio de Cloudflare que crea un túnel encriptado entre su servidor y la red Cloudflare. Debido a esto, los usuarios no se conectarán directamente a su servidor, sino que se conectarán a través de un proxy a través de la red de Cloudflare. Esto trae algunos beneficios que vale la pena mencionar.

  1. No es necesario abrir ningún puerto en su red. Para el mundo exterior e incluso para su ISP, su servidor se parece a cualquier otro tráfico web cifrado.
  2. No es necesario crear, comprar o administrar certificados TLS ya que "cloudflared" se encarga de todo esto por usted.
  3. Argo utiliza enrutamiento inteligente para acelerar la latencia del tráfico. Afirman hasta un 30%, lo que no puedo verificar, pero puedo decir que hace una diferencia notable.
  4. Obtienes una protección WAF y DDOS incorporada.

Dicho esto, vamos a comenzar.

Para instalar el tunel de CloudFlared en tu raspberry pi primeramente deberemos tener lo siguiente.

  1. Raspberry Pi
  2. Conexion a Internet

Cumpliendo estos requerimientos mínimos debemos entrar a tráves de SSH a nuestro raspberry.

$ ssh -X [email protected] 

Se puede cambiar raspberry.local por el IP de la raspberry en la red. Una vez que estamos logeados verifcamos nuestra conexión con el servidor de cloudflare.

[email protected]:~$ $ curl -I https://www.cloudflare.com
HTTP/2 200
date: Tue, 20 Mar 2018 22:54:20 GMT
content-type: text/html; charset=utf-8
set-cookie: __cfduid=dfb9c369ae12fe6eace48ed9b51aedbb01521586460; expires=Wed, 20-Mar-19 22:54:20 GMT; path=/; domain=.cloudflare.com; HttpOnly
x-powered-by: Express
cache-control: no-cache
x-xss-protection: 1; mode=block
strict-transport-security: max-age=15780000; includeSubDomains
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
served-in-seconds: 0.025
set-cookie: __cflb=3128081942; path=/; expires=Wed, 21-Mar-18 21:54:20 GMT
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 3febc2914beb7f06-SFO-DOG

Ahora descargamos Cloudflared y lo instalamos en nuestro Raspberry. Podemos hacerlo de dos formas. Entrando directamente al sitio de descargas de Argo o descargamos la última versión disponible directamente desde nuestra terminal.

Sitio de descarga directa:

https://developers.cloudflare.com/argo-tunnel/downloads/

Paquete a descargar desde nuestra terminal.

https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz

Para este ejemplo utilizaremos la descarga directa a tráves de la terminal de nuestro Raspberry.

$ wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz
Resolving bin.equinox.io (bin.equinox.io)... 54.243.137.45, 107.22.233.132, 50.19.252.69, ...
Connecting to bin.equinox.io (bin.equinox.io)|54.243.137.45|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5293773 (5.0M) [application/octet-stream]
Saving to: ‘cloudflared-stable-linux-arm.tgz’
...

Cuando haya concluido la descarga procedemos a crear una carpeta en mi caso denominada tunel y descomprimimos el archivo de nuestra descarga dentro de ella.

$ mkdir tunel
$ tar -xvzf cloudflared-stable-linux-arm.tgz -C ./tunel
cloudflared
$ cd tunel
$ sudo mv cloudflared /usr/local/bin
$ sudo chmod +x /usr/local/bin/cloudflared

Siguiendo los pasos anteriores debes encontrarte ahora dentro de la carpeta que hemos creado y verificamos la versión que hemos instalado.

$ cloudflared --version
cloudflared version 2020.12.0 (built 2020-12-08-2302 UTC)

Procedemos a logearnos en cloudflared.

$ cloudflared login

Y obtendremos una salida en pantalla parecida a esta

A browser window should have opened at the following URL:

https://www.cloudflare.com/a/warp?callback=<some token>

If the browser failed to open, open it yourself and visit the URL above.

Copiamos o damos clic en el enlace que nos sale en pantalla y lo abrimos en el navegador de nuestro gusto.

Ahí debemos utilizar nuestro usuario y contraseña de Cloudflared y elegimos el dominio que vamos a utilizar en el servicio.

Confirmamos la elección y obtendrémos un mensaje como este en pantalla.

En el raspberry nos pondrá esta salida en pantalla

You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/home/admin/.cloudflared/cert.pem

Ya podemos comenzar a crear nuestros tuneles:

$ cloudflared --hostname [hostname] --hello-world

Los comandos a utilizar en cloudflared se pueden encontrar en el sitio de documentación del servicio desde aquí.

Los principales comandos a utilizar son:

Crear tunel.

cloudflared tunnel create <NAME>

Listar tuneles creados

cloudflared tunnel create <NAME>

Eliminar tuneles

cloudflared tunnel delete <NAME>

Con Argo Tunel de Cloudflared pueden dar acceso directo a cualquier servicio que tengan en su computadora o servidor local.

Ya sea un sitio web, blog, servidor de descargas y mucho más.

Espero que les sea de ayuda este pequeño manual.

Proximo Tutorial como activar cloudflare en el inicio como un servicio del sistema.