Este artículo lo ha escrito uno de los miembros de nuestro grupo de Telegram

Autor: L1Cafe
Blog: https://www.l1cafe.blog/2024/03/24/set-up-your-own-telegram-proxy.html


Configura un proxy Telegram MTProto en una Raspberry Pi con Alpine Linux y Docker en unos pocos minutos y comunícate libremente.

Si quieres evadir las restricciones impuestas a Telegram en España usando MTProxy, puedes usar este mismo procedimiento que se describe a continuación, pero debes hacerlo en un servidor que no se encuentre en España. Es recomendable que uses un VPS en algún proveedor en Internet, Digital Ocean suele ser una buena opción.

Al lío.

Vas a necesitar:

  • Una Raspberry Pi, yo estoy usando un modelo 3B+, pero puedes elegir la versión que sea adecuada para tu hardware
  • Una tarjeta microSD de al menos 2GB
  • Un lector de tarjetas microSD
  • Teclado USB
  • Cable HDMI para conectar tu RPi a tu monitor
  • Una fuente de alimentación adecuada
  • Cable ethernet para conectar tu RPi a tu router (utilizar WiFi no es recomendable)

Antes de empezar, algunas cosas a tener en cuenta:

  • Si tu país bloquea Telegram, configurar un proxy MTProto utilizando tu conexión a Internet con una Raspberry Pi no va a permitirte acceder Telegram. Esta guía está pensada para ser seguida por personas viviendo en países donde Telegram no está restringido. Aunque es posible utilizar una Raspberry Pi a través de una conexión VPN, no voy a entrar en detalles sobre cómo hacerlo en esta guía.
  • La Raspberry Pi no es un dispositivo potente, y es relativamente sencillo atacarla con un ataque de denegación de servicio. Especialmente si publicas tu IP y puerto en Internet. Es mejor sólo compartir los detalles del proxy con amigos y familiares cercanos.
  • Estoy utilizando una Raspberry Pi 3 Model B+, pero las instrucciones son parecidas con otros dispositivos ARM como Banana Pi u Orange Pi, o nuevas versiones de Raspberry Pi. Para un pequeño proxy que utilicen 5 o 10 personas, no necesitas demasiados recursos. Cualquier dispositivo fabricado en los últimos 10 años con al menos 1 GB de RAM debería bastar, incluyendo ordenadores de oficina antiguos o portátiles con pantallas dañadas (puntos extra de reciclaje).
  • Estas instrucciones son para Alpine Linux. Creo que es mucho más simple y rápido de instalar, y más eficiente utilizar Alpine Linux para este propósito. Con otras distribuciones como Ubuntu o Debian, la configuración de red y Docker es ligeramente diferente. Consulta el manual de tu distribución si decides utilizar otra.
  • Necesitas saber cómo abrir puertos. Las instrucciones varían, pero generalmente puedes buscar algo como «abrir puertos en …».  En otros casos, las instrucciones varían según tu modelo de router. Además, esta guía asume que no tienes CGNAT, en cuyo caso abrir puertos podría ser más difícil o imposible, según tu proveedor de Internet.
  • Además de abrir puertos, muchos proveedores de Internet utilizan asignación de IP dinámica, lo que puede producir que tu IP cambie cuando reinicias tu router o a lo largo de los días. El enlace generado más adelante en esta guía no va a funcionar si tu dirección IP cambia. Una forma de resolver esto es utilizar servicios de dynamic DNS o DNS dinámico. Esto creará un nombre de host que no cambia, y puedes apuntar a tu dirección IP aunque sea dinámica. Entonces, será tu responsabilidad actualizar la dirección IP cada vez que cambie, y necesitarás consultar la documentación de tu proveedor de DNS dinámico para configurarlo.

Preparación

Descarga la imagen de Alpine Linux para Raspberry Pi de https://www.alpinelinux.org/downloads/. Yo he seleccionado aarch64 en formato img.gz para mi Raspberry Pi 3B+.

Inserta una tarjeta microSD en tu lector de tarjetas microSD. El método más sencillo para grabar la imagen en la tarjeta es utilizar Raspberry Pi Imager: https://www.raspberrypi.com/software/. Hay versiones para macOS, Windows, y Ubuntu. En muchos sistemas operativos basados en Linux que soportan Flatpak, como Fedora, puedes encontrarlo en tu centro de software simplemente buscando «Raspberry».

  1. Selecciona tu modelo, la imagen que has descargado (importante: esta aplicación no proporciona Alpine Linux para descargar directamente, pero puedes elegir tu archivo .img.gz de todas formas), y la tarjeta microSD donde quieres grabar la imagen.
  2. Cuando pregunta si deseas personalizar la imagen, debes saltar este paso, porque Alpine Linux no se puede personalizar con esta herramienta.

Inserta la tarjeta microSD preparada en tu Raspberry Pi, y conéctala a tu monitor con un cable HDMI. Conecta también un teclado USB (no necesitas ratón), y por último, conecta la fuente de alimentación microUSB, o lo que corresponda en su lugar. Tu Raspberry Pi debería arrancar automáticamente en la pantalla de inicio de sesión de Alpine Linux.

Inicia sesión con root, no necesitas escribir una contraseña. Escribe setup-alpine para comenzar el proceso de instalación, y responde a las preguntas según aparecen. La distribución de teclado española se llama es, que es una de las primeras preguntas.

Para el nombre de host, puedes introducir lo que prefieras, no tiene por qué ser idéntico al nombre de dominio que le vas a dar para compartir tu proxy.

Para la configuración de red (se recomienda ethernet), tu router proveerá un servicio DHCP, pero es mala idea utilizarlo a largo plazo, porque si la dirección IP de tu LAN cambia, cosa que puede suceder cada pocas horas o días, el redireccionamiento de puertos dejaría de funcionar. Se recomienda configurar una IP estática fuera del rango DHCP, para evitar colisiones.

Una alternativa es que algunos routers ofrecen emparejamiento de dirección MAC y dirección IP. De esta manera, el servidor DHCP de tu router recordará tu MAC y siempre asignará la dirección IP que tú configures. En cuyo caso, deberías seleccionar DHCP en el instalador. En cualquier caso, anota tu dirección IP porque la vas a necesitar más adelante.

  1. Para abrir una terminal sin cancelar el proceso de instalación, pulsa Ctrl + Alt + F2.
  2. Ejecuta ip a show eth0 para obtener la dirección MAC de tu Raspberry Pi. Puedes utilizar esta MAC para asignarle la dirección IP que prefieras en los ajustes de tu router. Esto se suele llamar «IP estática» o «DHCP static IP».
  3. Puedes volver al instalador pulsando Ctrl + Alt + F1.

Para la zona horaria yo he elegido Europe/Amsterdam.

El cliente NTP por defecto es suficiente, pulsa intro para aceptar esta elección por defecto.

Para los espejos (mirrors), puedes usar f para seleccionar el más rápido, cercano a ti.

No necesitas configurar un usuario. Aunque no se recomienda utilizar root para actividades rutinarias, esta Raspberry Pi va a funcionar exclusivamente como una máquina proxy que configurarás una vez y te puedes olvidar de ella.

Si quieres acceder a esta Raspberry Pi remotamente sin necesidad de cable HDMI o USB, configurar SSH es buena idea. De otro modo, desactivar SSH es una mejor elección por seguridad, especialmente considerando que esta máquina va a estar expuesta a Internet.

Si quieres activar SSH, lo más sencillo es establecer una contraseña larga y compleja que puedas recordar, pero es buena práctica utilizar claves SSH. No explicar cómo funcionan las claves SSH porque hay cientos de artículos que lo explican al máximo detalle, pero incluso en este caso, seguramente quieras establecer una contraseña al menos temporalmente, y luego puedes configurar acceso con claves SSH y prohibir contraseñas. Para ello, cuando el instalador pregunta si quieres habilitar acceso root, tienes que introducir yes. De lo contrario, prohibit-password sólo permitirá acceso si has configurado claves SSH.

Como la Raspberry Pi sólo tiene una tarjeta microSD y no tiene almacenamiento interno, tendrás que sobreescribir esta tarjeta microSD. No hay ningún problema. Te sugerirá probar el medio de arranque (boot media). De otro modo, si reinicias la RPi o pierdes electricidad durante unos segundos, todos tus ajustes se borrarán y RPi arrancará de nuevo con el instalador.

Tendrá un aspecto como /media/mmcblk0. Indica yes para utilizar esta tarjeta microSD, y luego escribe mmcblk0 cuando el instalador pregunta qué disco utilizar.

Con respecto a modos de instalación, sys es lo más sencillo. Para instalaciones cifradas o configuraciones más avanzadas, por favor consulta el manual de instalación de Alpine Linux.

Por último, configura tu proxy

Reinicia, e introduce root como usuario, y tu contraseña.

Instala las herramientas básicas:

apk add vim nano

Puedes elegir otro editor de texto. Únicamente vi está disponible por defecto, pero nano es el más recomendable para principiantes.

Para instalar Docker, necesitamos activar los repositorios community. Edita /etc/apk/repositories. A mí me gusta Vim. Simplemente mueve el cursor al carácter # en frente del repositorio community, y pulsa x para borrarlo. Para guardar, pulsa :wq.

Mi lista de repositorios tiene este aspecto tras los cambios:

/media/mmcblk0/apks
http://alpine.mirror.wearetriple.com/v3.19/main
http://alpine.mirror.wearetriple.com/v3.19/community

Instala Docker:

apk update && apk add docker

Configuramos el servicio Docker:

rc-update add docker && rc-service docker start

Generamos un secreto:

docker run --rm nineseconds/mtg:2 generate-secret tgproxy.0x7.io > config.toml

Puedes elegir otro nombre de dominio, hay más detalles en la documentación: https://github.com/9seconds/mtg. Has escrito un secreto a config.toml. Ahora, puedes editar este archivo para que tenga el siguiente aspecto:

secret = "Y0uRS3cr37"

bind-to = "0.0.0.0:7104"

El secreto ya está en el archivo. Simplemente rodéalo con " dobles comillas, y puedes elegir otro puerto si prefieres. Es recomendable configurar el mismo puerto para configuración, contenedor, host, y redireccionamiento en tu router por razones de simplicidad.

Finalmente, arranca tu contenedor Docker:

docker run -d -v $PWD/config.toml:/config.toml -p 7104:7104 --name mtg-proxy --restart=unless-stopped nineseconds/mtg:2

Nótese aquí el «unless-stopped». Esto indica a Docker que este contenedor debe iniciarse a menos que se detenga manualmente. Así que tu proxy debería arrancar automáticamente siempre y cuando hayas configurado el servicio de Docker para que arranque con el sistema.

Si todo ha ido bien, puedes conectar con tu proxy utilizando cualquier cliente de Telegram. Puedes mostrar la configuración con el siguiente comando:

docker exec mtg-proxy /mtg access /config.toml

Si estás conectado a través de SSH, ahora puedes copiar esta configuración y mantenerla segura para dársela a amigos y familiares. Finalmente, reenvía el puerto 7104 en la configuración de su router al puerto 7104 en su IP Raspberry Pi (consulte la parte superior del artículo sobre cómo configurar una IP estática o configurar DHCP).

Si deseas verificar que todo funciona correctamente, reinicia tu Raspberry Pi escribiendo reboot y, si agregaste tu proxy a Telegram, debería conectarse correctamente después de unos segundos.

Si has configurado un servicio DNS dinámico, puedes reemplazar su dirección IP desde los enlaces generados con tu nombre de host DNS dinámico.

Si necesitas un proxy para Telegram, tengo uno aquí. Puede que no dure para siempre, pero siempre que esté disponible, siéntete libre de utilizarlo. Simplemente haz click en ese enlace o agrégalo a Telegram con los siguientes detalles:

  • Protocol: MTPROTO
  • Hostname: tgproxy.0x7.io
  • Port: 6122
  • Secret: 7kc85dSVjrX5aMh2gKI4VKBnb29nbGUuY29t

 

Autor: L1Cafe