Todas las páginas
En esta página

Instalación

OAR es un relay que ejecutas en tu propia máquina. Al instalarlo, el comando oar queda disponible en esa máquina. En macOS y Linux, una sola línea hace todo el trabajo: encuentra o descarga Node.js, instala OAR, escribe la configuración y arranca el relay. En Windows, el instalador necesita que Node.js ya esté instalado, y siempre puedes instalar con npm o desde un checkout de git.

Requisitos #

Requisito Necesario para Notas
macOS, Linux, Windows o WSL el host del relay El instalador de macOS y Linux puede descargar Node.js para CPU x64 y arm64. WSL usa el instalador de Linux
Node.js 22.13 o posterior siempre El instalador de macOS y Linux descarga su propia copia cuando la tuya falta o es demasiado antigua. El instalador de Windows solo lo comprueba
tmux (opcional) Linux y macOS Los workers de sesión se ejecutan en sesiones de tmux desacopladas que puedes observar desde el navegador. Sin tmux, se ejecutan como procesos en segundo plano normales. Windows nunca usa tmux
cloudflared (opcional) el túnel de Cloudflare integrado OAR no lo incluye; instálalo tú
La CLI o la clave de un proveedor (opcional) los chats con ese proveedor Cada proveedor tiene su propio inicio de sesión; consulta las páginas de proveedores

No hace falta nada más para instalar. Los proveedores los añades cuando OAR ya está en marcha.

macOS y Linux #

curl -fsSL oar.sh/install | sh

Puedes leer antes el script en oar.sh/install. Necesita curl o wget, y tar cuando tiene que descargar Node.js. Se niega a ejecutarse como root: OAR se instala por usuario, y nada necesita root.

Qué hace #

  1. Mira lo que tiene la máquina e imprime un plan: qué Node.js usa, dónde instala OAR, qué escribe en el perfil de tu shell y cómo se arrancará el relay.
  2. Pregunta Continue? [Y/n]. Enter o y continúa; cualquier otra respuesta no cambia nada.
  3. Instala el paquete @oar-sh/oar (la última versión, salvo que fijes una versión o un canal).
  4. Ejecuta oar setup --defaults --start: escribe la configuración (un token de autenticación nuevo, acceso solo para esta máquina, el primer puerto libre a partir de 3333 o el puerto que fijes con OAR_PORT) y arranca el relay. Imprime la URL del relay y un código QR.
  5. Imprime la versión, te dice que el relay está en marcha y lista los comandos oar, oar setup y oar doctor.

En Linux con una sesión de usuario de systemd, el relay se arranca como un servicio de usuario de systemd, así que vuelve tras un reinicio. En los demás casos (macOS, contenedores, WSL sin systemd) se arranca en segundo plano, y oar start lo vuelve a arrancar tras un reinicio.

Dónde se instala #

Cuál de los tres casos se aplica depende del Node.js que tenga la máquina.

La máquina tiene Lo que hace el instalador
Node.js 22.13 o posterior, y una carpeta global de npm en la que puedes escribir (nvm, fnm, Homebrew, un prefijo de usuario) Ejecuta npm install -g, como harías a mano
Node.js 22.13 o posterior, pero una carpeta global de npm que necesita root (un paquete de la distribución o de NodeSource) Instala el paquete en ~/.oar/npm con tu Node.js y pone un comando oar en ~/.local/bin. Tu configuración de npm no cambia
Ningún Node.js, uno anterior a 22.13, un Node.js sin npm, o OAR_NODE=private Descarga el Node.js 24 actual de nodejs.org en ~/.oar/runtime/node (con suma de comprobación verificada, unos 30 MB), instala con él el paquete en ~/.oar/npm y pone un comando oar en ~/.local/bin

Solo OAR usa su propio Node.js. El comando oar de ~/.local/bin pone ese Node.js al final del PATH, así que un Node.js tuyo sigue teniendo prioridad en las sesiones del relay.

En los dos últimos casos, cuando ~/.local/bin no está en tu PATH, el instalador incluye el cambio en su plan y luego añade una línea de comentario (# added by the OAR installer) y una línea export PATH al archivo de inicio de tu shell: ~/.zshrc para zsh, ~/.bash_profile para bash en macOS, ~/.bashrc para bash en Linux y ~/.profile en los demás casos. Las terminales nuevas encuentran oar; en la actual, ejecuta la línea export PATH=... que imprime el instalador.

Opciones #

Los flags van después de sh -s --. Las variables van antes de sh.

Opción Efecto
--yes, -y Omite la pregunta. Úsalo en scripts y en CI
OAR_YES=1 Lo mismo que --yes
OAR_VERSION=x.y.z Instala esa versión en lugar de la última
OAR_CHANNEL=beta Instala desde el canal beta en lugar del estable. Cualquier otro valor significa estable. OAR_VERSION prevalece sobre él
OAR_PORT=n Fija el puerto del relay en la configuración
OAR_NODE=private Usa el propio Node.js de OAR en ~/.oar/runtime/node aunque el tuyo sirva
OAR_DRY_RUN=1 Imprime el plan y no instala nada

Cualquier otro flag detiene el instalador con unknown option.

curl -fsSL oar.sh/install | sh -s -- --yes
curl -fsSL oar.sh/install | OAR_VERSION=0.9.19 OAR_PORT=3400 sh
curl -fsSL oar.sh/install | OAR_DRY_RUN=1 sh

Volver a ejecutarlo #

El instalador puede volver a ejecutarse en cualquier momento. Instala de nuevo el paquete (la última versión, salvo que fijes una), así que también sirve como actualización. Conserva una configuración existente, reutiliza el propio Node.js de OAR si sigue siendo lo bastante reciente, reescribe el lanzador oar y añade las líneas de PATH a tu perfil una sola vez.

Ejecutarlo sin terminal #

Cuando se canaliza desde curl, el script hace su pregunta en la terminal. Sin terminal, por ejemplo en un job de CI, se detiene con no terminal to ask on y no cambia nada. En ese caso, pasa --yes.

Dónde se detiene #

  • No tiene una compilación de Node.js para sistemas musl como Alpine, ni para CPU que no sean x64 y arm64. Instala tú Node.js 22.13 o posterior y vuelve a ejecutar el instalador.
  • Si no se puede llegar a nodejs.org, falla una descarga o una suma de comprobación, o el Node.js descargado no se ejecuta, se detiene y no instala nada.
  • Las versiones anteriores a 0.9.8 se instalan igual, pero su oar setup no puede arrancar el relay. En ese caso, el instalador solo escribe la configuración y no arranca el relay.

Windows #

irm oar.sh/install.ps1 | iex

Esto necesita PowerShell 5 o posterior y Node.js 22.13 o posterior ya instalado. A diferencia del instalador de macOS y Linux, no descarga Node.js, no pide confirmación y no arranca el relay. Hace esto:

  1. Comprueba que existen node y npm y que Node.js es lo bastante reciente.
  2. Imprime el plan.
  3. Ejecuta npm install -g --allow-scripts=@oar-sh/oar,better-sqlite3,koffi @oar-sh/oar.
  4. Ejecuta oar setup. En una terminal pregunta si crear un token de autenticación nuevo, el acceso (solo esta máquina, o LAN), el puerto y, Nuevo en 0.9.15 cómo arranca el relay: al iniciar sesión, al encender antes de que nadie inicie sesión (con una petición de administrador) o nunca. Después escribe la configuración e imprime la URL del relay.

Ejecuta después oar start para arrancar el relay; el inicio automático que elegiste lo arranca en el siguiente inicio de sesión o encendido. oar autostart cambia el modo más adelante. Lo que viene a continuación está en Primer arranque.

Opción Efecto
$env:OAR_VERSION = '0.9.19' Instala esa versión en lugar de la última
$env:OAR_CHANNEL = 'beta' Instala desde el canal beta en lugar del estable
$env:OAR_DRY_RUN = '1' Imprime el plan y no instala nada

Fija la variable en la misma ventana de PowerShell antes del comando. El instalador de Windows no tiene OAR_PORT; oar setup pregunta el puerto, o ejecutas oar setup --port <port>.

PowerShell bloquea los scripts

El instalador llama a los shims .cmd de npm y oar, porque la directiva de ejecución predeterminada de Windows PowerShell rechaza los .ps1. Si tu directiva es Restricted o AllSigned, te lo indica al final. Escribe oar.cmd en lugar de oar, o permite los scripts locales una vez:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Si la instalación funciona pero no se encuentra oar, abre una terminal nueva y ejecuta oar.cmd setup.

npm #

npm install -g --allow-scripts=@oar-sh/oar,better-sqlite3,koffi @oar-sh/oar
oar setup

npm 12 no ejecuta ningún script de instalación que no se le haya indicado que permita. Dos de las dependencias de OAR (better-sqlite3, koffi) descargan su binario nativo en uno de ellos: sin ellos, la instalación tiene éxito en npm 12 y luego el relay no arranca. Nuevo en 0.9.14 El propio script de OAR (@oar-sh/oar) copia los datos que una versión anterior guardaba dentro del paquete antes de que npm lo elimine; consulta Notas de actualización de 0.9.14. npm 10 y 11 aceptan el flag y no lo necesitan. Los instaladores, oar update y el botón Update (Actualizar) lo pasan por sí mismos.

Nunca instales ni actualices con --ignore-scripts

--ignore-scripts omite todos los scripts de instalación: los de los módulos nativos, así que el relay no puede arrancar, y la copia de los datos de una versión anterior.

oar setup crea la configuración e imprime la URL del relay, pero no arranca el relay salvo que pases --start. Usa después oar start. La carpeta global de npm debe admitir escritura y su carpeta bin debe estar en tu PATH; npm prefix -g muestra dónde está. Si necesita root, no uses sudo: ejecuta en su lugar el instalador en macOS o Linux. Para actualizar más adelante, ejecuta oar update.

Desde un checkout de git #

git clone https://github.com/oar-sh/oar
cd oar
npm install
node bin/oar.js setup   # writes server/config.json with a fresh auth token
npm start               # the same as: node server/server.js

Un checkout se diferencia de una instalación global en tres cosas:

  • El estado vive dentro del repositorio: server/config.json, server/data/, server/uploads/ y server/logs/. Una instalación global guarda su estado en ~/.oar (consulta Dónde guarda OAR sus archivos y Archivos y carpetas).
  • Nunca se actualiza solo. Actualiza con git pull y npm install, y luego reinicia el relay con 🌄 Restart web relay (Reiniciar el relay web) en el menú ⋯ de una conversación. oar update es para instalaciones globales.
  • oar start, oar stop y oar restart son solo para instalaciones globales. En un checkout, npm start ejecuta el relay en primer plano.

node server/server.js --port <port> --token <token> sobrescribe la configuración durante una ejecución sin guardarla.

Por plataforma #

macOS Linux Windows WSL
Instalador curl -fsSL oar.sh/install | sh el mismo irm oar.sh/install.ps1 | iex el de Linux, dentro de la distribución
Descarga Node.js sí sí no, instálalo antes sí
Arranca el relay en segundo plano como servicio de usuario de systemd si hay una sesión de usuario; si no, en segundo plano no, ejecuta oar start como servicio de systemd si systemd está activo; si no, en segundo plano
Arranque al iniciar sesión aún no oar service install oar autostart signin o boot solo con systemd
Carpeta de estado ~/.oar ~/.oar %APPDATA%\oar ~/.oar dentro de la distribución
tmux para los workers de sesión opcional opcional no se usa opcional

Tras un reinicio, oar start arranca un relay que se ejecuta en segundo plano.

WSL #

Ejecuta el instalador de Linux dentro de la distribución, no en Windows. Con la red predeterminada de WSL, un puerto puede estar libre dentro de la distribución mientras un programa de Windows escucha en él, y localhost:<port> en un navegador de Windows llega entonces a ese programa. Por eso, una configuración nueva toma el primer puerto libre en ambos lados, y oar setup rechaza un puerto que ocupe Windows. oar status, oar start y oar doctor avisan cuando Windows ocupa el puerto del relay. Para solucionarlo, elige otro puerto:

oar setup --port 3400

Una dirección LAN dentro de WSL es interna de WSL. Para acceder desde el teléfono, usa un túnel o la red en modo espejo de WSL.

Quitar OAR #

Nuevo en 0.9.15 oar uninstall quita OAR de la máquina y conserva tus datos:

oar uninstall

Detiene el relay (esperando a los turns en curso), quita las entradas de inicio automático que generó OAR (la unidad de systemd, o la entrada de inicio de sesión y la tarea de arranque de Windows, con una petición de administrador para la tarea de arranque) y el wrapper de la extensión de Copilot que escribió OAR, y hace que npm elimine el paquete cuando el comando ha terminado. Las entradas que creaste o editaste a mano se quedan y se nombran. Tu configuración, tu base de datos, tus archivos subidos y tus registros se quedan en la carpeta de estado, y el comando imprime dónde; una instalación posterior los vuelve a usar. oar uninstall tiene los detalles y todos los mensajes.

Para eliminar también los datos:

oar uninstall --purge

Elimina la carpeta de estado después de que escribas delete, y pregunta aparte antes de eliminar una carpeta de datos fuera de ella, una dentro de un checkout de git o rescued-package-data. Rechaza la raíz de una unidad, tu carpeta personal, una carpeta del sistema y cualquier carpeta que no contenga la configuración o la base de datos de OAR. Esto elimina tus conversaciones.

oar uninstall no deshace lo que el instalador de macOS y Linux añadió fuera del paquete:

  • el script oar de ~/.local/bin, cuando el instalador lo puso allí (sus casos segundo y tercero);
  • las dos líneas que añadió al archivo de inicio de tu shell, si las hay (el comentario # added by the OAR installer y la línea export PATH que lo sigue);
  • ~/.oar/runtime, el propio Node.js de OAR, si está ahí. Está dentro de la carpeta de estado, así que se queda sin --purge.

Antes de 0.9.15, o cuando oar ya no se ejecuta, quita las piezas a mano: detén el relay con oar stop y ejecuta oar service remove donde haya un servicio o un inicio automático de Windows configurado; elimina el paquete con npm uninstall -g @oar-sh/oar, o, tras los otros dos casos del instalador, borra ~/.oar/npm; después, las piezas de arriba, y ~/.oar o %APPDATA%\oar solo si quieres eliminar tus datos.

Dónde guarda OAR sus archivos #

Una instalación global guarda su estado en ~/.oar (%APPDATA%\oar en Windows; OAR_STATE_ROOT lo traslada):

  • config.json
  • data/, con la base de datos y los archivos subidos
  • logs/, con server.log y server-err.log cuando oar arrancó el relay, y un worker-<session>.log por cada worker de sesión de Node

Actualizar el paquete con npm nunca toca estos archivos. El instalador de macOS y Linux puede añadir ahí dos carpetas que no son estado: npm/ (el paquete, cuando no se podía escribir en la carpeta global de npm) y runtime/node/ (el propio Node.js de OAR). oar doctor imprime las rutas en uso.

Lo que tienes después #

  • El comando oar. En una terminal, oar solo abre un menú con el estado del relay y los demás comandos. oar setup cambia los ajustes (acceso desde otros dispositivos, puerto, token), y oar url vuelve a imprimir la URL del relay.
  • Una configuración con un token de autenticación nuevo. Con el acceso predeterminado, el relay solo es accesible desde esta máquina, en http://localhost:3333/ o el siguiente puerto libre.
  • En macOS y Linux: un relay en marcha. En Windows y tras una instalación manual con npm: un relay que arrancas con oar start.

Comprueba lo que está instalado:

oar --version
oar doctor

oar doctor imprime la versión, Node.js, el modo de instalación, la carpeta de estado, la ruta de la configuración, el puerto, si hay un token fijado, la ruta y el tamaño de la base de datos, y qué CLI de proveedores responden. No cambia nada.

Solución de problemas #

Para problemas posteriores a la instalación, consulta Solución de problemas.

Síntoma Qué hacer
npm install -g @oar-sh/oar falla con EACCES La carpeta global de npm necesita root, como con un Node.js de la distribución o de NodeSource. No uses sudo. Ejecuta el instalador de macOS y Linux, que instala en ~/.oar/npm
El instalador de Windows dice que tu Node.js es demasiado antiguo OAR necesita 22.13 o posterior. Instala un Node.js actual de nodejs.org y vuelve a ejecutar el instalador. (El instalador de macOS y Linux descarga en su lugar su propio Node.js y explica por qué en su plan)
Node.js not found en Windows Instala Node.js 22.13 o posterior de nodejs.org, abre una terminal nueva y vuelve a ejecutar el instalador
oar: command not found después del instalador Abre una terminal nueva, o ejecuta la línea export PATH=... que imprimió el instalador. En Windows, abre una terminal nueva y ejecuta oar.cmd setup
oar está bloqueado en PowerShell Escribe oar.cmd, o ejecuta una vez Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
La instalación falla con errores de node-gyp o prebuild better-sqlite3 no tiene un binario precompilado para tu plataforma. Instala una cadena de compilación de C/C++ y Python, y vuelve a intentarlo
El relay no arranca tras una instalación con npm 12, con un error de better-sqlite3 en server-err.log npm 12 omitió los scripts de instalación de las dependencias nativas de OAR. Reinstala con npm install -g --allow-scripts=@oar-sh/oar,better-sqlite3,koffi @oar-sh/oar
El instalador dice no terminal to ask on Añade --yes: curl -fsSL oar.sh/install | sh -s -- --yes
El instalador dice refusing to run as root Vuelve a ejecutarlo con tu propio usuario, sin sudo
No hay descarga de Node.js para tu sistema (musl, otra CPU) Instala tú Node.js 22.13 o posterior y vuelve a ejecutar el instalador
WSL: el navegador de Windows muestra otra página o rechaza el token Windows ocupa el puerto. Ejecuta oar setup --port <port> con otro