Instalación Webtunnel con Caddy

Guía para la instalación de un puente de la red Tor Webtunnel con el servidor web Caddy y Docker en Linux.

WebTunnel es un puente de transporte conectable (PT) para el ecosistema Tor. Es un proxy resistente a la censura que intenta imitar el tráfico HTTPS.

Pasos para la instalación y puesta en marcha de un puente Webtunnel

  1. Requerimientos previos
  2. Instalación de software
  3. Configuración
  4. Inicio de la aplicación Webtunnel en un contenedor
  5. Actualización

1. Requerimientos previos

  • Dominio de internet con sus DNS habilitados
  • Una máquina virtual o dedicada con Debian 11 o 12
  • Dirección IP pública

2. Instalación de software

  • Docker CE
  • Caddy

Instalación de docker

sudo apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh'

Instalación de Caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

3. Configuración

Crear el archivo de configuración .env para docker-compose.yml

Configuración del servidor Caddy

Agregamos el archivo de configuración /etc/caddy/Caddy

dominio.org {
    reverse_proxy /somepath 127.0.0.1:15000
}

Reemplaza /somepath con una cadena aleatoria que se genera con el siguiente comando:

echo $(cat /dev/urandom | tr -cd "qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAQWERTUIOP0987654321"|head -c 24)

Docker

Descarga del archivo docker-compose.yml

curl https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel/-/raw/main/release/container/docker-compose.yml?inline=false > docker-compose.yml

Creamos en el mismo directorio el archivo .env

truncate --size 0 .env

Agregamos las siguientes variables de configuración. Esto creará un archivo de entorno para la configuración del puente.

Variable de nombre de dominio o subdominio. Tendremos que cambiar el nombre de dominio o subdominio que dispongamos para nuestro puente

echo "URL=https://mydominio.org/path" >> .env

Variable de dirección de correo electrónica que estará asociada a nuestro puente

echo "OPERATOR_EMAIL=your@email.org" >> .env

Agregamos nombre del puente

echo "BRIDGE_NICKNAME=WTBr$(cat /dev/urandom | tr -cd 'qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAQWERTUIOP0987654321'|head -c 10)" >> .env

Agregamos número de puerto

echo "GENEDORPORT=4$(cat /dev/urandom | tr -cd '0987654321'|head -c 4)" >> .env

4. Inicio de la aplicación Webtunnel en un contenedor

Una vez que tenemos nuestro .env con las variables completas iniciamos nuestra aplicación con docker compose. Para así ejecutar la aplicación Webtunnel en un contenedor dentro de nuestra máquina.

docker compose up -d

Ahora podemos comprobar que nuestro puente Webtunnel se está funcionando adecuadamente.

docker compose exec webtunnel-bridge get-bridge-line.sh

5. Actualización

Para mantener actualizado el software por medio de docker compose. Utiliza los siguientes comandos

docker compose pull
docker compose up -d

Referencias

Pluggable Transport based on HTTP Upgrade(HTTPT), the Tor Project

Imagen destacada, “Tunel” by Sah Elizabeth is licensed under CC BY 2.0

HTTPT: A Probe-Resistant Proxy