Configuración
No hay nada que configurar para empezar. Esta página es para cuando quieres saber qué está pasando.
Quién puede entrar
Por defecto, una petición tiene que superar dos comprobaciones:
- Tu cuenta. El túnel es privado: el relay de Dev Tunnels solo deja pasar a la cuenta de GitHub o Microsoft que ejecutó
coderemote up. - Tu teléfono. El token del código QR permite registrar un teléfono. A partir de ahí inicia sesión con su propia clave, creada en su Secure Enclave y que nunca sale de ahí, y el token por sí solo no abre nada más.
coderemote devicesmuestra los teléfonos;coderemote devices revokequita uno.
Todo lo que va entre el teléfono y el agente está cifrado de extremo a extremo con la clave del ordenador, que lleva el código QR: el relé intermedio solo reenvía datos cifrados. Abrir una terminal, escribir en un agente de programación o iniciarlo, y empezar una compilación también piden Face ID. coderemote devices policy establece lo estricto que es (nunca, comandos, o comandos y cambios) y cuánto dura cada comprobación (5 minutos, 30 minutos o una hora).
Con coderemote up --allow-anonymous se omite la primera comprobación. En cualquier caso, los archivos y git se quedan dentro de la carpeta compartida; una terminal es una shell real con los permisos de tu usuario.
Un enlace público a una vista previa es la única excepción: hasta que termina, cualquiera que lo tenga puede abrir ese servidor de desarrollo, sin ninguna de las dos comprobaciones. Nunca llega al agente, a sus archivos ni a su terminal.
Archivos en tu ordenador
Todo vive en ~/.coderemote (%USERPROFILE%\.coderemote en Windows), legible solo por ti:
| Ruta | Qué contiene |
|---|---|
config.json | El token de acceso, el id del túnel de este ordenador y el de su túnel de vista previa. Conservarlo conserva todos los emparejamientos. |
e2e/, lan/ | La clave de cifrado de extremo a extremo de este ordenador y el certificado que comprueban los teléfonos de tu red. Se sustituye con rotate-token. |
devices/ | Los teléfonos registrados con cada carpeta compartida, y su ajuste de Face ID. Se vacía con rotate-token. |
bin/ | La CLI de Dev Tunnels descargada en la primera ejecución. |
agents/ | Una entrada por agente en ejecución, para que status, kill y stop puedan encontrarlo. |
update.json | La última versión en npm y cuándo preguntó up por última vez, como mucho una vez al día. |
runtime/ | Solo después de que el script de instalación descargara Node.js: ese Node.js con coderemote instalado en él, y en runtime/bin los comandos coderemote y node que puso en tu PATH. |
Borrar la carpeta (conserva runtime/ si la creó el script de instalación) restablece Code Remote: el siguiente up crea un token y un túnel nuevos, y todos los dispositivos tienen que volver a emparejarse.
Variables de entorno
| Variable | Qué hace |
|---|---|
CODEREMOTE_DEVTUNNEL | Ruta a un binario de devtunnel que usar. Si no, se usa uno de tu PATH y después la copia descargada. |
CODEREMOTE_CODE | Ruta al comando code de VS Code, para up --web. Si no, code en tu PATH. |
CODEREMOTE_NO_UPDATE_CHECK | Ponlo en 1 y up deja de preguntar a npm si hay una versión más nueva. |
Los scripts de instalación leen algunas propias:
| Variable | Qué hace |
|---|---|
CODEREMOTE_VERSION | La versión o dist-tag de npm que instalar, como 0.3.7 o next. Por defecto latest. |
CODEREMOTE_PRIVATE_NODE | Ponlo en 1 para descargar Node.js para coderemote incluso cuando el tuyo sea lo bastante nuevo. |
CODEREMOTE_NO_MODIFY_PATH | Ponlo en 1 para no tocar tu PATH ni tus archivos de inicio del shell; el script indica qué carpeta añadir. |
El túnel
Cada ordenador tiene un túnel. Su URL se mantiene igual entre ejecuciones, y up lo renueva cada vez para que no caduque. Comparte una carpeta cada vez; para llegar a varios proyectos, comparte su carpeta superior y la pestaña Git encuentra todos los repositorios que contiene.
El túnel lleva la etiqueta coderemote, que es como la app encuentra tus otras máquinas. Las vistas previas usan un segundo túnel, con la etiqueta coderemote-preview, creado en la primera vista previa y eliminado cuando el agente se detiene (cómo funciona). coderemote tunnels lista ambos, junto con los túneles de tus otros ordenadores.
Una cuenta de Dev Tunnels puede conservar 10 túneles. Los ordenadores que ya no usas conservan los suyos hasta que los eliminas con coderemote tunnels delete.
En la app
- Machine Info (el menú de una máquina) muestra su túnel: la dirección, la cuenta, quién puede entrar, cuándo caduca (se retrasa cada vez que arranca
coderemote up), los clientes conectados ahora, el tráfico hasta el momento y cuántos puertos se están previsualizando. - Settings › Connections lista las cuentas a través de las que se conectan tus ordenadores emparejados. Cada una muestra todos los ordenadores que ejecutan coderemote en esa cuenta, estén en línea o no, si este iPhone está emparejado con él, y cuántos de los 10 túneles de la cuenta están en uso. Para añadir un ordenador, ejecuta allí
coderemote upy escanea su código QR.
La app solo los muestra: los túneles pertenecen al propietario de los ordenadores, así que los listas y eliminas en un ordenador con la sesión iniciada en la cuenta, con coderemote tunnels. Mantén pulsada una máquina en Connections para copiar su ID de túnel con ese fin. Quitar una máquina de la lista de la app solo hace que ese iPhone la olvide.
Solución de problemas
"Port 31580 is already in use"
Otro agente o programa ocupa el puerto. coderemote status muestra los agentes; para cualquier otra cosa, mira qué lo ocupa:
$ lsof -nP -iTCP:31580 -sTCP:LISTEN # macOS, Linux PS> netstat -ano | findstr :31580 # Windows
Deténlo, ejecuta coderemote stop --all, o elige otro puerto con --port.
El teléfono no puede conectarse
Comprueba que coderemote up sigue en marcha y que el ordenador está encendido y con conexión. Asegúrate de que el teléfono inició sesión con la misma cuenta que usa el ordenador (se muestra en la línea Access:).
"Your Dev Tunnels account already has 10 tunnels"
La cuenta está llena y ninguno de sus túneles era un túnel de vista previa inactivo que pudiera eliminarse. El mensaje los lista: elimina los que ya nadie usa, como los de un ordenador antiguo, con coderemote tunnels delete <id> y vuelve a ejecutar coderemote up.
El inicio de sesión caducó
up lo detecta y vuelve a abrir el navegador. Sin navegador, ejecuta coderemote login --device-code.
La pestaña Ports dice "Update coderemote"
El ordenador ejecuta un coderemote anterior a los puertos y las vistas previas. Ejecuta coderemote update y reinicia coderemote up.
Una vista previa dice "nothing is listening on port …"
El servidor de desarrollo que hay detrás se detuvo o se reinició en otro puerto. Vuelve a iniciarlo y recarga; la pestaña Ports muestra lo que escucha ahora.
Falla la instalación en Linux
El soporte de terminal se compila al instalar y necesita python3, make y un compilador de C++ (build-essential en Debian y Ubuntu). El inicio de sesión necesita libsecret-1-0.
¿Sigues atascado? Consulta Soporte.