Usar el servidor de casa desde Android

Un túnel SSH lleva las herramientas del equipo de casa al navegador de la tablet o el móvil.

1. Cómo funciona

La interfaz se carga desde GitHub Pages en el navegador de Android y habla con 127.0.0.1:6883 de la propia tablet. El cliente SSH (ConnectBot o Termux) redirige ese puerto al 127.0.0.1:6883 del equipo de casa, donde corre el servidor local. Así, archivos, comandos y servicios MCP son los de casa. Sin túnel, el equipo de casa también puede publicarse con un proxy inverso.

2. Preparar el equipo de casa

Endurecer sshd (recomendado)

En /etc/ssh/sshd_config (o un fichero en /etc/ssh/sshd_config.d/), solo claves y solo tu usuario; después reinicia el servicio (sudo systemctl restart sshd):

PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
AllowUsers usuario
AllowTcpForwarding local

Orden de arranque

El servidor se lanza en la propia sesión SSH, desde el directorio del proyecto y sin abrir el navegador de casa. No hace falta copiar ninguna URL: la tablet se identifica en la página con el usuario y la contraseña de la cuenta de casa (sección 3).

cd ~/proyectos/mi-proyecto && zerochat --no-browser --keep-server --port 6883

Clave restringida (opcional)

Para que la tablet no tenga consola en casa, crea un par de claves solo para ella y añade la pública a ~/.ssh/authorized_keys con estas restricciones, en una sola línea. Con ella solo se puede abrir el túnel a esos dos puertos y lanzar ZeroChat:

restrict,pty,port-forwarding,permitopen="127.0.0.1:6883",permitopen="127.0.0.1:1234",command="cd ~/proyectos/mi-proyecto && /home/usuario/venv/bin/zerochat --no-browser --keep-server --port 6883" ssh-ed25519 AAAA… tablet

pty es necesario: con terminal, al cerrar la sesión ZeroChat recibe la señal de cierre y se detiene; sin ella seguiría en marcha ocupando el puerto.

3. Conectar desde Android

ConnectBot

  1. En las claves públicas de ConnectBot, genera una clave Ed25519 y copia su parte pública al authorized_keys de casa (sección 2).
  2. Crea el host usuario@casa con esa clave.
  3. En las redirecciones de puertos (Port forwards) del host, añade dos de tipo Local: 6883 → 127.0.0.1:6883 y 1234 → 127.0.0.1:1234.
  4. Conecta. Con la clave restringida, la sesión no admite órdenes: solo mantiene el túnel y ZeroChat.

Sin la clave restringida, escribe la orden de arranque en la consola o ponla en la automatización tras el inicio de sesión (Post-login automation) del host para lanzarla al conectar.

Termux

Con la clave restringida basta con abrir la sesión, sin -N, para que arranque ZeroChat:

ssh -i ~/.ssh/tablet -L 6883:127.0.0.1:6883 -L 1234:127.0.0.1:1234 usuario@casa

Sin ella, pasa la orden de arranque con -t, para que la sesión tenga terminal y ZeroChat se detenga al cerrarla:

ssh -t -L 6883:127.0.0.1:6883 -L 1234:127.0.0.1:1234 usuario@casa 'cd ~/proyectos/mi-proyecto && zerochat --no-browser --keep-server --port 6883'

En el navegador

  1. Abre ZeroChat y abre el panel de Conexión (el icono del enchufe, junto a la rueda de configuración de la barra lateral).
  2. Desactiva Conexión local, escribe http://127.0.0.1:6883 como URL del servidor local, deja Usar proxy desactivado y pulsa Conectar.
  3. Identifícate con el usuario y la contraseña de la cuenta que ejecuta ZeroChat en casa. La página guarda el token del día, nunca la contraseña.

4. Situaciones habituales

SituaciónQué pasa
Se corta la conexión SSHZeroChat se detiene en casa cuando sshd cierra la sesión. Reconecta y vuelve a la pestaña: la página reconecta con el token del día.
La página pide identificarseNo había sesión guardada en el navegador o el token del día ha caducado (a medianoche o tras borrar los datos). Identifícate de nuevo; los comandos en marcha en casa siguen.
Al reconectar, ZeroChat no arranca: Address already in useSigue en marcha el de la sesión anterior, porque sshd aún no ha detectado el corte o la sesión no tenía terminal. Espera a que la cierre o detenlo: pkill -f -- '--port 6883'.
Las herramientas fallan con 403 Expired or invalid tool authorizationLos relojes de la tablet y de casa difieren en más de 30 s. Activa la fecha y hora automáticas en los dos.