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- 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 mac.
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
~/., lo activa y lo arranca. También ejecuta
loginctl enable- 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=, al cabo de 5 segundos). Nuevo en 0.9.14 No
reinicia un relay que se detuvo con el código de salida 78
(Restart): 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
~/. 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 (~/. por defecto). El relay guarda allí una copia de su consola
en relay-, y cada worker de sesión escribe un worker-<session>..
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 …/.
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-.
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- 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- 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>. en
la carpeta de OAR, %APPDATA%\), 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:\. 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- 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-, 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-, y una que dejó
otra instalación de OAR, <path> (hand-.
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-que creó otra persona, y la tarea de arranque de antes del cambio de marca.relay
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>. en la carpeta de OAR
(%APPDATA%\): la del lanzador junto a él, el XML exportado de una tarea como
<task>., que schtasks / 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 .. 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:\), 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- junto al lanzador de encendido, o a
oar- en la carpeta de OAR (%APPDATA%\) 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%\,
%APPDATA%\ y %APPDATA%\ 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\, server\ y server\ 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- 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= bajo
[boot] en / 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- |
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 mac |
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-. 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- |
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- u oar- (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.