Ir al contenido

Acceso remoto desde un servidor

contextcode serve levanta el mismo acceso remoto que Canales → Acceso web de la aplicación, pero sin abrir ventana. Es lo que usas en un servidor, un VPS o un equipo que se queda encendido en casa.

Hay tres formas de publicar el servidor, de la más cerrada a la más abierta:

Cómo lo arrancasURL del QRCuándo usarla
contextcode serve --print-qrhttp://<IP de la red local>:8787El teléfono está en la misma Wi-Fi que el equipo.
contextcode serve --public --print-qrLa URL fija del equipo si ya la tiene; si no, una URL temporal de CloudflareServidor en otra red o VPS.
contextcode serve --stable --print-qrURL fija del equipo bajo el dominio de Context CodeServidor al que te conectas a diario. Requiere el plan con servidores remotos.

Con --public, serve busca en este orden:

  1. La URL fija que el equipo ya tenga guardada (la misma que da el botón «URL estable» de la aplicación).
  2. Si no la hay y tienes sesión iniciada con contextcode login, la pide al servicio de túneles y la guarda.
  3. Si no se puede, cae a un túnel temporal de trycloudflare.com y avisa de que esa URL cambia en cada arranque: el QR que escanees dejará de valer cuando el servidor se reinicie.

--stable pide la URL fija en cada arranque, así que se corrige sola si cambiaste de puerto.

Con --print-qr y URL pública, el QR principal es el de la URL pública y la URL de la red local aparece debajo.

Ventana de terminal
contextcode serve --install --public

Instala serve como servicio de tu usuario con las mismas opciones que le pases y lo arranca:

  • Linux: unidad de systemd de usuario (contextcode-serve), arranca al iniciar, se reinicia si cae y deja los logs en el journal. No necesita sudo.
  • macOS: un LaunchAgent.
  • Windows: una tarea programada «al iniciar sesión», sin UAC.

El servicio guarda su token en un archivo (--token-file, por defecto ~/.context/serve-token, con permisos 0600), así que no depende del llavero del sistema. Al terminar la instalación imprime la URL y el QR con ese mismo token: es el que tienes que escanear.

Para quitarlo: contextcode serve --uninstall.

Con el servicio ya corriendo, no lances otro serve: usa

Ventana de terminal
contextcode conexion --qr

Toma el token del servicio instalado (o del archivo que indiques con --token-file) y muestra la URL pública si la hay. Si intentas arrancar un segundo serve en el mismo puerto, se detiene con un mensaje que te lo explica en vez de un error genérico.

Al escanear el QR, cada teléfono recibe su propia credencial. Puedes verlos y quitarles el acceso sin tocar el token del enlace:

Ventana de terminal
contextcode dispositivos # nombre, id, emparejado, último uso, IP
contextcode dispositivos --json
contextcode dispositivos revocar "Vivo de Daniel" # por nombre, id o prefijo del id
contextcode dispositivos revocar --todos --si # sin pedir confirmación

La revocación surte efecto en el acto, aunque el servidor esté corriendo: la próxima petición de ese teléfono se rechaza. Nunca se muestran tokens ni hashes.

Comprueba en este orden:

  1. Que el QR sea del servidor que está corriendo. Si lanzaste serve --print-qr y luego instalaste el servicio con --install, el servicio usa otro token y ese QR ya no vale. Saca el bueno con contextcode conexion --qr.
  2. Que el teléfono llegue a esa URL. Ábrela en el navegador del teléfono: si carga la web, la red está bien. Si se queda cargando, el teléfono no está en la misma red o hay un firewall (sudo ufw allow 8787/tcp). Fuera de la red local, usa --public.
  3. Que el servicio esté vivo: systemctl --user status contextcode-serve y journalctl --user -u contextcode-serve -n 50.