Todas las páginas
En esta página

Arrancar el relay automáticamente

oar start ejecuta el relay en segundo plano hasta que lo detienes o la máquina se reinicia. Para que el relay vuelva solo, instala el inicio automático: oar service install Nuevo en 0.9.9 lo configura en Linux y Windows. Nuevo en 0.9.15 oar autostart elige cualquiera de los dos modos de Windows, al iniciar sesión o al encender, y oar setup lo pregunta en Windows. A partir de ahí no necesitas una terminal abierta, y en un host sin pantalla no necesitas iniciar sesión.

El servicio ejecuta el mismo relay que oar start: la misma configuración, la misma carpeta de datos y la misma carpeta de registros. Nada cambia en tus conversaciones. Nuevo en 0.9.14 En Windows esto también se cumple para los dos modos de inicio automático; antes de 0.9.14 guardaban los datos dentro del paquete instalado (consulta Carpeta de datos de las entradas de Windows).

Los comandos #

oar service install
oar service status
oar service remove

oar service status es el predeterminado cuando no das ninguna palabra. Los comandos son para instalaciones globales; en un checkout de git lo indican y no hacen nada. oar solo abre un menú con una entrada para lo mismo: Install or remove the service (Instalar o quitar el servicio). oar setup --start y el instalador de macOS y Linux instalan el servicio de Linux por ti donde existe una sesión de usuario de systemd.

Comando Linux Windows
oar service install Escribe y activa el servicio de usuario de systemd, activa el lingering y arranca el relay Activa el inicio automático al iniciar sesión. No arranca el relay ahora: ejecuta oar start
oar service remove Detiene y desactiva el servicio y elimina su archivo de unidad. El relay se detiene Desactiva el inicio automático al iniciar sesión. Un relay en marcha sigue en marcha
oar service status Imprime Service: installed, running, installed, not running o not installed Imprime Autostart: on, at boot (scheduled task), on, at sign-in u off

oar service install necesita una configuración: ejecuta antes oar setup.

Nuevo en 0.9.15 oar autostart nombra el modo en lugar de un servicio:

oar autostart signin    # Windows: at sign-in
oar autostart boot      # Windows: at boot, before anyone signs in
oar autostart off
oar autostart status    # the default when you give no word

En Windows es el comando para los dos modos, con las mismas reglas que el control Autostart (Windows) (Inicio automático, Windows) de Settings (Ajustes). En Linux es oar service: signin y boot ejecutan ambos oar service install, off ejecuta oar service remove y status ejecuta oar service status. En macOS dice Autostart is not supported on macOS yet. Start the relay with: oar start. En un checkout de git dice que es para instalaciones globales. signin y boot necesitan una configuración; off y status, no.

Linux: el servicio de usuario de systemd #

Nuevo en 0.9.8

El servicio se llama oar. oar service install escribe su archivo de unidad en ~/.config/systemd/user/oar.service, lo activa y lo arranca. También ejecuta loginctl enable-linger para tu usuario. El lingering mantiene tus servicios de usuario en marcha mientras nadie tiene la sesión iniciada, así que el relay vuelve tras un reinicio y sigue en marcha después de que cierres la sesión. Nada de esto necesita sudo. Si no se puede activar el lingering, el comando lo indica y te da la línea que debes ejecutar tú, porque sin él el relay se detiene al cerrar la sesión:

loginctl enable-linger "$USER"

La unidad arranca el relay con el Node.js que ejecutó el comando y lo reinicia tras un fallo (Restart=on-failure, al cabo de 5 segundos). Nuevo en 0.9.14 No reinicia un relay que se detuvo con el código de salida 78 (RestartPreventExitStatus=78): el relay usa ese código cuando no puede funcionar sobre sus datos, por ejemplo cuando otro relay tiene su bloqueo (consulta Si no funciona). Una unidad escrita por una versión anterior no tiene esa línea hasta que vuelvas a ejecutar oar service install. Lleva el PATH de la shell que ejecutó oar service install, más ~/.local/bin y la carpeta de ese Node.js, porque de lo contrario un servicio de usuario de systemd arranca con un PATH mínimo. Las sesiones del relay encuentran a través de él las CLI de los proveedores y node. Cuando tu PATH haya cambiado, vuelve a ejecutar oar service install y luego oar restart: install reescribe la unidad, pero no reinicia un servicio que ya está en marcha.

Si hay en marcha un relay que arrancaste a mano, install lo detiene primero para que el servicio pueda tomar el puerto. Si ese relay está ocupado y no se detiene de inmediato, el servicio se instala y toma el relevo en el siguiente inicio de sesión, o cuando ejecutes oar start una vez que el relay se haya detenido.

start, stop y restart #

Con el servicio instalado, oar start, oar stop y oar restart pasan por systemd.

Comando Qué hace
oar start Activa y arranca el servicio, e imprime la URL del relay
oar stop Detiene el servicio. El servicio sigue activado, así que vuelve a arrancar la próxima vez que se inicie tu sesión de usuario: al encender con lingering, si no, al iniciar sesión. oar service remove lo quita definitivamente
oar restart Reinicia el servicio e imprime la URL del relay
oar status Dice si el relay está en marcha y muestra el servicio como installed, running, installed o not installed

El servicio se detiene de inmediato

Sin el servicio, oar stop y oar restart esperan a que terminen los turns en curso. Con el servicio de Linux, no. systemd detiene o reinicia el servicio de inmediato, un turn en curso termina, y los procesos en segundo plano de los agentes terminan con el servicio, porque la unidad no fija nada que los mantenga vivos. La conversación y su queue se conservan, y el siguiente mensaje reanuda la sesión del proveedor. Reinicios y reanudación explica qué vuelve. Para reiniciar sin cortar los turns, usa Restart web relay (Reiniciar el relay web) en el menú ⋯ de una conversación, que espera a que terminen.

Estado y registros #

systemctl --user status oar

muestra si el servicio está en marcha. La unidad no redirige la salida del relay, así que systemd la guarda en el journal: journalctl --user -u oar la lee.

La unidad también fija la carpeta de registros del relay en la carpeta logs de la carpeta de estado de OAR (~/.oar/logs por defecto). El relay guarda allí una copia de su consola en relay-console.log, y cada worker de sesión escribe un worker-<session>.log. oar doctor imprime la carpeta de estado en la que se encuentran.

server-err.log

Cuando oar start falla, dice The relay did not come up — see …/server-err.log. Ese archivo solo se escribe cuando el propio oar start arranca el relay en segundo plano, no con el servicio. Con el servicio instalado, lee en su lugar el journal o relay-console.log.

Windows #

Nuevo en 0.9.2

Windows tiene dos modos de inicio automático. Ambos ejecutan el mismo relay con la misma configuración.

Al iniciar sesión Al encender
Qué es Un script en tu carpeta Startup (Inicio) que abre una ventana de terminal visible titulada OAR Web Relay cuando inicias sesión Una tarea programada llamada oar-relay que ejecuta el relay con tu usuario, sin ventana, antes de que nadie inicie sesión. Arranca 30 segundos después del encendido y, si el relay falla, se reinicia hasta 5 veces, con un minuto de separación
Cuándo es accesible el relay Después de que inicies sesión Unos 60 segundos después del encendido, sin nadie con la sesión iniciada
Se fija con oar autostart signin, oar service install, oar setup o el control Autostart (Windows) oar autostart boot, oar setup o el control Autostart (Windows)
Permisos Ninguno más allá de los tuyos Una confirmación de administrador (UAC), para activarlo y para desactivarlo
Lo que queda en segundo plano La ventana de terminal La tarea. Sin ventana, nada que cerrar

El control está en ⚙️ Settings → General (Ajustes → General), con la etiqueta Autostart (Windows). Solo aparece en un relay de Windows y tiene tres opciones:

Off
At sign-in — visible terminal after you log on
At system startup — headless, no logon needed

Nuevo en 0.9.15 En una terminal de Windows, oar setup pregunta el modo como última pregunta, con el modo vigente como valor predeterminado:

Autostart: 1 = at sign-in, 2 = at boot, before anyone signs in (one administrator prompt), 3 = off [3]:

Enter conserva el modo tal como está. oar setup --autostart signin|boot|off lo fija sin la pregunta. Si no se puede leer la tarea de arranque, setup no pregunta. Cuando el cambio no se completa, setup escribe igualmente la configuración, dice The config is written; the autostart step did not go through (see above). y sale con 1.

Cada cambio quita la entrada del otro modo, pero solo una que haya generado OAR (consulta Entradas que OAR no creó).

Al iniciar sesión #

Elige At sign-in (Al iniciar sesión), o ejecuta oar autostart signin u oar service install. Todos escriben la misma entrada, oar-web-relay.cmd en tu carpeta Startup, así que los comandos y el control coinciden. oar autostart off, oar service remove u Off (Desactivado) la eliminan. Ninguno de ellos arranca el relay en el momento: el relay arranca en tu siguiente inicio de sesión, o ahora con oar start. Pasar del modo de encendido al de inicio de sesión requiere la confirmación de administrador que quita la tarea de arranque.

Al encender #

Elige At system startup (Al encender), o ejecuta oar autostart boot. Registrar una tarea de arranque requiere permisos de administrador, y el relay se ejecuta sin ellos, así que Windows pide una confirmación de administrador; la única parte elevada es la llamada a schtasks. La petición solo aparece en el escritorio del propio PC. oar autostart imprime Confirm the administrator prompt to register the boot task … y espera. Desde un navegador en otro dispositivo, Settings muestra Confirm the admin prompt on the PC… (Confirma la petición de administrador en el PC…). Ambos esperan hasta dos minutos; una petición que nadie haya respondido para entonces cuenta como fallida. La tarea se ejecuta con tu usuario sin una contraseña guardada. Los archivos locales y el túnel funcionan como siempre; la tarea no tiene credenciales para recursos compartidos de red.

Volver a Off o a At sign-in (oar autostart off, oar autostart signin) requiere la misma confirmación para quitar la tarea. Nuevo en 0.9.15 El control activa la entrada de inicio de sesión solo después de que se haya confirmado esa petición y la tarea haya desaparecido.

Nuevo en 0.9.15 Una petición rechazada no cambia nada: Nothing changed: the administrator prompt was declined. El modo anterior queda como estaba, y no se deja ningún archivo atrás. Si el propio cambio falla después de la petición, restaura las tareas que eliminó a partir de sus copias (<task>.task.xml.bak en la carpeta de OAR, %APPDATA%\oar), conserva las copias e informa del fallo. Si la petición se confirmó pero después no se puede volver a leer la tarea, OAR lo indica, nombra las copias y no deshace nada. En la interfaz web, un fallo muestra el problema y un comando para ejecutar en su lugar desde un PowerShell elevado.

Nuevo en 0.9.15 El modo de encendido se activa y se desactiva aunque la ruta de tu perfil tenga un espacio, un apóstrofo o caracteres no ASCII, por ejemplo C:\Users\Jürgen. Las versiones anteriores fallaban ahí, o tomaban la propia tarea de OAR por una hecha a mano.

La tarea de arranque inicia un script lanzador que genera OAR, oar-web-relay-launcher.cmd en la carpeta de OAR. Nuevo en 0.9.11 El lanzador añade la carpeta de Node.js al final del PATH. El relay arranca sus workers con su propio Node.js por ruta completa, así que arrancan aunque el PATH de la tarea no tenga node (El proceso del agente).

Cuando falta un lanzador generado o procede de una versión anterior, Settings nombra la diferencia en lugar de informar de un fallo, y elegir de nuevo At system startup (u oar autostart boot) lo regenera. Cuando falla un cambio del ajuste, Settings muestra el motivo del relay. Si existe una entrada de inicio de sesión junto a la tarea de arranque, el ajuste avisa de que puede arrancar el relay dos veces; elige de nuevo At system startup para limpiarlo.

oar service solo informa de este modo. Mientras exista la tarea de arranque, oar service install y oar service remove se niegan y te remiten a oar autostart signin|off o a Settings; oar service status imprime on, at boot (scheduled task).

Estado Nuevo en 0.9.15 #

oar autostart status imprime el modo, luego cada entrada que haya y si la generó OAR:

[oar] Autostart: at boot, before anyone signs in (scheduled task)
[oar]   scheduled task \oar-relay (generated by OAR)
[oar]   C:\Users\dev\AppData\Roaming\oar\oar-web-relay-launcher.cmd (generated by OAR)

El modo es at sign-in (Startup folder), at boot, before anyone signs in (scheduled task), off o unknown, the boot task could not be read (<reason>). Una entrada hecha a mano dice <path> (hand-made), y una que dejó otra instalación de OAR, <path> (hand-made: it starts the OAR install in <folder>). Cuando hay una, una última línea dice cómo sustituirla.

Entradas que OAR no creó Nuevo en 0.9.15 #

OAR solo cambia las entradas de inicio automático que están exactamente como las generó una versión de OAR para esta instalación, tanto en la interfaz web como en oar autostart. Cualquier otra entrada es hand-made (hecha a mano) y nunca se elimina ni se sobrescribe:

  • una entrada de Startup que editaste, o una de otra instalación o configuración de OAR;
  • la tarea de arranque cuando difiere de la que registra OAR en la cuenta, el nivel de ejecución, su única acción, su único desencadenador de arranque o sus ajustes;
  • un lanzador que editaste;
  • una tarea llamada oar-relay que creó otra persona, y la tarea de arranque de antes del cambio de marca.

Mientras una entrada hecha a mano fuera a quedarse junto al nuevo modo, o fuera a ser sustituida por él, un cambio no modifica nada y nombra la entrada:

[oar] Nothing changed: OAR does not delete or overwrite an autostart entry it did not make. Remove it yourself, or replace it keeping a copy: oar autostart boot --replace.
[oar] Left as it is: C:\Users\dev\AppData\Roaming\oar\oar-web-relay-launcher.cmd (hand-made).

La interfaz web muestra el mismo mensaje. Una entrada hecha a mano del modo que eliges sirve para ese modo y se queda (Left as it is: …). Para sustituir las entradas hechas a mano por las propias de OAR, ejecuta el cambio con --replace:

oar autostart boot --replace

Primero guarda una copia de cada entrada, como <name>.bak en la carpeta de OAR (%APPDATA%\oar): la del lanzador junto a él, el XML exportado de una tarea como <task>.task.xml.bak, que schtasks /create /xml vuelve a aceptar, y la de una entrada de Startup también allí, porque Windows abriría al iniciar sesión una copia que quedara en la carpeta Startup. Una copia anterior nunca se sobrescribe: la siguiente es .bak-2. Nada salvo --replace sustituye una entrada hecha a mano.

Una tarea de arranque que OAR no puede leer, por ejemplo una que guarda la contraseña de otra cuenta y responde Access is denied (Acceso denegado), nunca se toma por inexistente. El estado dice unknown, the boot task could not be read (<reason>), y todos los cambios, --replace incluido, se detienen con Nothing changed: the boot task could not be read (<reason>).

Esperar a TEMP y a la unidad de datos Nuevo en 0.9.14 #

Ambos modos esperan antes de arrancar el relay: hasta 5 minutos en total a la carpeta %TEMP% y a la unidad de la carpeta de datos, por ejemplo un disco RAM o una unidad que monta más tarde un script de inicio. Antes de 0.9.14, el lanzador de encendido esperaba 2 minutos solo a %TEMP%, y la entrada de inicio de sesión no esperaba nada. No se espera a una carpeta de datos en un recurso compartido de red. Un TEMP o TMP fijado con comillas ("D:\My Temp"), o uno que nombra una carpeta que no existe, se corrige para el relay: se quitan las comillas, o usa tu propia carpeta temporal.

Cuando se agota la espera, una línea nombra lo que sigue faltando y el relay arranca de todos modos:

[<date> <time>] Still missing after 300 s: data drive "R:\"; starting the relay anyway.

La línea va a oar-web-relay-launcher.log junto al lanzador de encendido, o a oar-web-relay.log en la carpeta de OAR (%APPDATA%\oar) para la entrada de inicio de sesión. Un relay cuya carpeta de datos sigue sin poder crearse se detiene entonces con una línea que nombra la carpeta, y el código de salida 78, en lugar de una traza de error.

Carpeta de datos de las entradas de Windows Nuevo en 0.9.14 #

Ambas entradas arrancan el relay con la configuración, la carpeta de datos y la carpeta de registros que usa oar start: %APPDATA%\oar\config.json, %APPDATA%\oar\data y %APPDATA%\oar\logs en una instalación global. Antes de 0.9.14 solo fijaban el archivo de configuración, así que un relay arrancado por ellas guardaba su base de datos, sus archivos subidos y sus registros en server\data, server\uploads y server\logs dentro del paquete instalado: conversaciones distintas de las de oar start, y perdidas con la siguiente actualización. Actualiza desde esas versiones como indica la nota de actualización.

El relay pone al día por sí solo una entrada o un lanzador generado por OAR (a partir de 0.9.0, también el copilot-remote-web-relay.cmd de antes del cambio de marca) en su primer arranque tras la actualización, sin confirmación de administrador. Una entrada que editaste, una que apunta a otro archivo de configuración y una de un relay arrancado con carpetas de datos propias se dejan como están. Nuevo en 0.9.15 Cuentan como hechas a mano: oar autostart <mode> --replace las sustituye, guardando una copia (consulta Entradas que OAR no creó). Reescribir un lanzador mientras el relay que arrancó sigue en marcha es seguro. Los lanzadores cambian la consola a UTF-8, así que una carpeta de usuario con caracteres no ASCII en su nombre conserva sus rutas intactas.

macOS #

El servicio aún no está disponible en macOS. oar service lo indica y nombra oar start. Tras un reinicio, ejecuta oar start para volver a arrancar el relay. El instalador lo arranca en segundo plano.

WSL #

El servicio de Linux necesita una sesión de usuario de systemd. Una distribución de WSL solo la tiene cuando systemd está activado. Si no lo está, oar service install se detiene con una indicación: fija systemd=true bajo [boot] en /etc/wsl.conf y luego reinicia la distribución desde Windows con wsl --terminate <distro>. Hasta entonces, usa oar start. Lo mismo vale para un contenedor o cualquier Linux sin sesión de usuario de systemd.

Actualizaciones #

oar update pide al relay en marcha que se reinicie, y lo hace en cuanto su queue está inactiva. Esto también vale con el servicio de Linux: la actualización no pasa por systemd, así que no corta los turns. Consulta Reinicios y reanudación. El servicio y las entradas de inicio automático arrancan el paquete instalado, así que ejecutan la nueva versión tras ese reinicio. Actualizar el paquete nunca toca la configuración ni los datos. Nuevo en 0.9.14 La única excepción es la actualización a 0.9.14 desde un relay con inicio automático de Windows, cuyos datos estaban dentro del paquete: consulta la nota de actualización.

Por plataforma #

Linux Windows macOS WSL
Instalación oar service install u oar autostart oar autostart signin|boot, oar setup, Settings (cualquier modo); oar service install (inicio de sesión) aún no disponible oar service install con systemd activado
Qué se ejecuta el servicio de usuario de systemd oar el script de Startup, o la tarea programada oar-relay nada el servicio de Linux
Se ejecuta sin iniciar sesión sí, con lingering solo At system startup no el lingering se activa como en Linux
Permisos los tuyos ninguno para el inicio de sesión; una confirmación de administrador para el encendido n/d los tuyos
oar stop y oar restart inmediatos con el servicio, no esperan a los turns esperan a los turns en curso esperan a los turns en curso inmediatos con el servicio
Tras un reinicio sin el servicio oar start oar start oar start oar start

Si no funciona #

Lo que ves Qué hacer
No systemd user session here, so there is no service to install. Un contenedor, o WSL sin systemd. Activa systemd (consulta WSL), o ejecuta oar start
The service is not supported on macOS yet. Usa oar start
systemctl --user enable --now oar failed Lee systemctl --user status oar y journalctl --user -u oar
El servicio está en marcha, pero las sesiones dicen que no encuentran una herramienta o node La unidad tiene el PATH del momento en que la instalaste. Corrige tu PATH y vuelve a ejecutar oar service install
Could not enable lingering Ejecuta loginctl enable-linger "$USER". Hasta entonces, el relay se detiene cuando cierras la sesión
Port 3333 is in use by another program Otro programa, o un relay con otro token, ocupa el puerto. Detenlo, o elige otro con oar setup --port <port>, y luego oar restart
El relay desaparece tras un reinicio en un servidor Linux El lingering está desactivado. Ejecuta oar service status y luego loginctl enable-linger "$USER"
The relay starts at boot through a scheduled task (Windows) oar service no cambia el modo de encendido. Usa oar autostart signin u oar autostart off, o ⚙️ Settings → General → Autostart (Windows)
Nothing changed: OAR does not delete or overwrite an autostart entry it did not make. (Windows) Una entrada hecha a mano lo impide; las líneas siguientes la nombran. Quítala tú, o ejecuta el mismo cambio con --replace. Consulta Entradas que OAR no creó
Nothing changed: the administrator prompt was declined. (Windows) Vuelve a ejecutar el comando y confirma la petición en el escritorio del propio PC
Nothing changed: the boot task could not be read (…) (Windows) A menudo Access is denied: la tarea guarda la contraseña de otra cuenta. Examínala en el Programador de tareas como administrador, y elimínala o cámbiala tú
no answer at the administrator prompt within 2 minutes (Windows) Nadie confirmó la petición a tiempo. Una petición confirmada más tarde aún puede ejecutar el cambio: compruébalo con oar autostart status
Still missing after 300 s: … en oar-web-relay-launcher.log u oar-web-relay.log (Windows) La unidad o la carpeta %TEMP% que nombra no estaba disponible en los 5 minutos posteriores al arranque. Revisa el script o el programa que la monta. Consulta Esperar a TEMP y a la unidad de datos
El relay sale con el código 78 y el servicio no lo reinicia No pudo funcionar sobre sus datos: otro relay tiene el bloqueo, dos bases de datos tienen ambas trabajo más reciente, o no se puede crear la carpeta de datos. La línea anterior a la salida dice cuál es el caso y qué hacer; consulta Solución de problemas
Tras la actualización, las conversaciones que mostraba un relay con inicio automático de Windows han desaparecido Antes de 0.9.14, ese relay las guardaba dentro del paquete. Consulta la nota de actualización

Hay más problemas de arranque en Primer arranque. Para instalar OAR desde cero, consulta Instalación.