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 #
- 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.
- Pregunta
Continue? [Y/. Enter on] ycontinúa; cualquier otra respuesta no cambia nada. - Instala el paquete
@oar-(la última versión, salvo que fijes una versión o un canal).sh/ oar - 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 conOAR_) y arranca el relay. Imprime la URL del relay y un código QR.PORT - Imprime la versión, te dice que el relay está en marcha y lista los comandos
oar,oar setupyoar 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 ~/. con tu Node.js y pone un comando oar en ~/.. Tu configuración de npm no cambia |
Ningún Node.js, uno anterior a 22.13, un Node.js sin npm, o OAR_ |
Descarga el Node.js 24 actual de nodejs.org en ~/. (con suma de comprobación verificada, unos 30 MB), instala con él el paquete en ~/. y pone un comando oar en ~/. |
Solo OAR usa su propio Node.js. El comando oar de ~/. 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 ~/. 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: ~/. para zsh, ~/. para bash en macOS,
~/. para bash en Linux y ~/. 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_ |
Lo mismo que --yes |
OAR_ |
Instala esa versión en lugar de la última |
OAR_ |
Instala desde el canal beta en lugar del estable. Cualquier otro valor significa estable. OAR_ prevalece sobre él |
OAR_ |
Fija el puerto del relay en la configuración |
OAR_ |
Usa el propio Node.js de OAR en ~/. aunque el tuyo sirva |
OAR_ |
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 setupno 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:
- Comprueba que existen
nodeynpmy que Node.js es lo bastante reciente. - Imprime el plan.
- Ejecuta
npm install -g --allow-.scripts= @oar- sh/ oar, better- sqlite3, koffi @oar- sh/ oar - 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: |
Instala esa versión en lugar de la última |
$env: |
Instala desde el canal beta en lugar del estable |
$env: |
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_; oar setup pregunta el puerto, o
ejecutas oar setup --port <port>.
PowerShell bloquea los scripts
El instalador llama a los shims . de npm y oar, porque la directiva de
ejecución predeterminada de Windows PowerShell rechaza los .. Si tu
directiva es Restricted o All, te lo indica al final. Escribe oar.
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..
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-) 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- 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/yuploads/ server/. Una instalación global guarda su estado enlogs/ ~/.(consulta Dónde guarda OAR sus archivos y Archivos y carpetas).oar - Nunca se actualiza solo. Actualiza con
git pullynpm install, y luego reinicia el relay con 🌄 Restart web relay (Reiniciar el relay web) en el menú⋯de una conversación.oar updatees para instalaciones globales. oar start,oar stopyoar restartson solo para instalaciones globales. En un checkout,npm startejecuta el relay en primer plano.
node server/ sobrescribe la configuración
durante una ejecución sin guardarla.
Por plataforma #
| macOS | Linux | Windows | WSL | |
|---|---|---|---|---|
| Instalador | curl -fs |
el mismo | irm oar. |
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 | ~/. |
~/. |
%APPDATA%\ |
~/. 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-. 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
oarde~/., cuando el instalador lo puso allí (sus casos segundo y tercero);local/ bin - las dos líneas que añadió al archivo de inicio de tu shell, si las hay (el
comentario
# added by the OAR installery la líneaexport PATHque lo sigue); ~/., el propio Node.js de OAR, si está ahí. Está dentro de la carpeta de estado, así que se queda sinoar/ runtime --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-, o, tras los otros dos casos del
instalador, borra ~/.; después, las piezas de arriba, y ~/. o
%APPDATA%\ solo si quieres eliminar tus datos.
Dónde guarda OAR sus archivos #
Una instalación global guarda su estado en ~/. (%APPDATA%\ en Windows;
OAR_ lo traslada):
config.json data/, con la base de datos y los archivos subidoslogs/, conserver.ylog server-cuandoerr. log oararrancó el relay, y unworker-<session>.por cada worker de sesión de Nodelog
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/ (el propio
Node.js de OAR). oar doctor imprime las rutas en uso.
Lo que tienes después #
- El comando
oar. En una terminal,oarsolo abre un menú con el estado del relay y los demás comandos.oar setupcambia los ajustes (acceso desde otros dispositivos, puerto, token), yoar urlvuelve 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://o el siguiente puerto libre.localhost: 3333/ - 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- 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 ~/. |
| 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. 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. |
oar está bloqueado en PowerShell |
Escribe oar., o ejecuta una vez Set- |
| La instalación falla con errores de node-gyp o prebuild | better- 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- en server- |
npm 12 omitió los scripts de instalación de las dependencias nativas de OAR. Reinstala con npm install -g --allow- |
El instalador dice no terminal to ask on |
Añade --yes: curl -fs |
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 |