2Fauth: Aplicación 2FA Self-Hosted en tu NAS o servidor unRAID
Además, aprende a integrarlo con Twitter como autenticación de doble factor.
Regístrate en HDS+
Tutoriales y soporte sobre sistemas NAS, Redes, Docker y SelfHosting.
Sin SPAM. Es gratuito. Ten acceso a todo el contenido.
Hacía tiempo que quería enseñaros una interesante solución para albergar un servicio 2FA en nuestro NAS, y aprovechando el tirón de estos días con la última polémica decisión de Elon Musk en su ya casi difunta red social Twitter, he decidido publicarlo hoy para que sirva de ayuda a cuanta más gente mejor.
Muchos usuarios a día de hoy, desconocen incluso el significado del 2FA pero gracias a Elon, es algo que se está buscando mucho en estos días a raíz de la nueva polémica que envuelve a Twitter, en la cual ha pasado de disponer el servicio 2FA vía SMS de forma totalmente gratuita, a ser algo exclusivo de los usuarios que decidan pagar Twitter Blue.
¡Gracias Elon! Por tu culpa, ya tenemos seguramente una excusa más para instalar una solución 2FA Self-Hosted en nuestro NAS y que de paso cada vez más usuarios utilicen la autenticación de doble factor en sus servicios.


Interfaz de demostración de 2Fauth. Minimalista, funcional y moderna.
Otros tutoriales relacionados
Creación del Proxy Inverso
Después de la introducción, vamos a ello. Antes de empezar, tendremos que crear un nuevo Proxy Inverso en nuestro NAS, ya que para la creación de los códigos QR es obligatorio utilizar una conexión HTTPS. Si no sabéis como instalar y configurarlo, podéis seguir el tutorial disponible en HDS+ que os enlazo a continuación.

Docker-Compose: Pasos a seguir
Como siempre, antes de ejecutar un Stack, deberemos de crear las carpetas correspondientes. Para ello nos vamos a 'File Station ➝ docker' y creamos la carpeta "2fauth".
Antes de seguir tendremos que conectarnos vía SSH a nuestro NAS, dirigirnos a la ruta /volume1/docker/
y ejecutar: chown 1000:1000 2fauth
y chmod 700 2fauth
.
Cerramos la conexión SSH y después ya podemos abrir Portainer y crearemos un nuevo Stack:
version: "3"
services:
2fauth:
image: 2fauth/2fauth
container_name: 2fauth
volumes:
- /volume1/docker/2fauth:/2fauth
ports:
- 7002:8000/tcp
environment:
- APP_NAME=2FAuth
- APP_ENV=local
- APP_DEBUG=false
- SITE_OWNER=❗MIEMAIL@gmail.com
- APP_KEY=❗XXXXXXXXXXXXXXXXXX
- APP_URL=❗https://xx.midominio.com
- ASSET_URL=❗https://xx.midominio.com
- IS_DEMO_APP=false
- LOG_CHANNEL=daily
- LOG_LEVEL=notice
- DB_DATABASE="/srv/database/database.sqlite"
- CACHE_DRIVER=file
- SESSION_DRIVER=file
- MAIL_DRIVER=log
- MAIL_HOST=❗smtp.gmail.com
- MAIL_PORT=465
- MAIL_FROM=❗MIEMAIL@gmail.com
- MAIL_USERNAME=❗MIEMAIL@gmail.com
- MAIL_PASSWORD=❗MI PASSWORD
- MAIL_ENCRYPTION=ssl
- MAIL_FROM_NAME=❗MINOMBRE
- MAIL_FROM_ADDRESS=❗MIEMAIL@gmail.com
- AUTHENTICATION_GUARD=web-guard
- AUTH_PROXY_HEADER_FOR_USER=null
- AUTH_PROXY_HEADER_FOR_EMAIL=null
- PROXY_LOGOUT_URL=null
- WEBAUTHN_NAME=2FAuth
- WEBAUTHN_ID=null
- WEBAUTHN_ICON=null
- WEBAUTHN_USER_VERIFICATION=preferred
- TRUSTED_PROXIES=*
- BROADCAST_DRIVER=log
- QUEUE_DRIVER=sync
- SESSION_LIFETIME=120

unRAID: Pasos a seguir
El proceso de instalación en unRAID más fácil no podría ser gracias a la utilización de las plantillas.
Antes de empezar, tendremos que conectarnos vía SSH a nuestro unRAID y ejecutar el siguiente comando: mkdir -m 777 /mnt/user/appdata/2fauth
.
Después, nos vamos a Apps y buscamos "2fauth" e instalamos la única imagen que se nos muestra.

La plantilla la dejaremos tal y como viene por defecto, aunque si queremos utilizar el envío de emails por SMTP, para el restablecimiento de password y demás, deberemos de añadir las siguientes variables:

MAIL_DRIVER=log
MAIL_HOST=❗smtp.gmail.com
MAIL_PORT=465
MAIL_FROM=❗MIEMAIL@gmail.com
MAIL_USERNAME=❗MIEMAIL@gmail.com
MAIL_PASSWORD=❗MI PASSWORD
MAIL_ENCRYPTION=ssl
MAIL_FROM_NAME=❗MINOMBRE
MAIL_FROM_ADDRESS=❗MIEMAIL@gmail.com

Si nos muestra la pantalla en blanco
En las últimas versiones de 2Fauth hay un error buenos impide mostrar el Dashboard, quedándose la pantalla en blanco, para solucionarlo debemos añadir estas dos variables:
En la variable ASSET_URL
debemos de especificar el subdominio donde tenemos ejecutándoselo el servicio.

Configuración inicial
Una vez tenemos ya el contenedor corriendo correctamente, accedemos al servicio mediante la URL creada en el Proxy Inverso y seguiremos unos primeros pasos esenciales, como son la creación de la cuenta de usuario nuestra y el registro de nuestras cuentas.



Además de permitir escanearnos el código QR, también se nos ofrece la posibilidad de introducir los parámetros a mano. Aquí os dejo el ejemplo en el caso de Twitter.

Habilitar el 2FA en tu cuenta de Twitter
Ahora que ya tenemos nuestra aplicación de 2FA funcionando correctamente en nuestra máquina, podremos activar la Autenticación en dos pasos de Twitter.

- Entramos en nuestra cuenta de Twitter y nos dirigimos a Configuración y Privacidad ➝ Seguridad y acceso a la cuenta ➝ Seguridad ➝ Autenticación en dos fases
- Marcáis "Aplicación de autenticación" y seguimos los pasos marcados. Nos dará la opción de usar el código QR o si no podemos, nos mostrará un código único que tendremos que pegar en 2Fauth cuando vayamos a vincular Twitter como servicio 2FA (como se puede observar en la imagen inferior).




Rellenamos con el código único que nos muestra Twitter a la hora de habilitar el 2FA y una vez guardado, ya podremos acceder a Twitter con la autenticación en dos pasos.