Alle Seiten
Auf dieser Seite

Installation

OAR ist ein Relay, das du auf deinem eigenen Rechner betreibst. Die Installation bringt den Befehl oar auf diesen Rechner. Auf macOS und Linux erledigt eine Zeile alles: Sie findet oder holt Node.js, installiert OAR, schreibt die Config und startet das Relay. Auf Windows muss Node.js für den Installer schon vorhanden sein, und du kannst immer auch mit npm oder aus einem Git-Checkout installieren.

Voraussetzungen #

Voraussetzung Nötig für Hinweise
macOS, Linux, Windows oder WSL den Relay-Host Der Installer für macOS und Linux kann Node.js für x64- und arm64-CPUs holen. WSL nutzt den Linux-Installer
Node.js 22.13 oder neuer immer Der Installer für macOS und Linux lädt eine eigene Kopie, wenn deine fehlt oder zu alt ist. Der Windows-Installer prüft nur
tmux (optional) Linux und macOS Session-Worker laufen in abgekoppelten tmux-Sessions, die du im Browser verfolgen kannst. Ohne tmux laufen sie als einfache Hintergrundprozesse. Windows nutzt tmux nie
cloudflared (optional) den eingebauten Cloudflare Tunnel OAR liefert keins mit; installiere es selbst
Die CLI oder ein Key eines Providers (optional) Chats mit diesem Provider Jeder Provider hat seine eigene Anmeldung; siehe die Provider-Seiten

Mehr braucht die Installation nicht. Provider fügst du hinzu, wenn OAR läuft.

macOS und Linux #

curl -fsSL oar.sh/install | sh

Du kannst das Skript vorher unter oar.sh/install lesen. Es braucht curl oder wget, und tar, wenn es Node.js holen muss. Als root läuft es nicht: OAR wird pro Benutzer installiert, und nichts braucht root.

Was es tut #

  1. Es sieht nach, was der Rechner hat, und gibt einen Plan aus: welches Node.js es nutzt, wohin es OAR installiert, was es in dein Shell-Profil schreibt und wie das Relay gestartet wird.
  2. Es fragt Continue? [Y/n]. Enter oder y macht weiter; jede andere Antwort ändert nichts.
  3. Es installiert das Paket @oar-sh/oar (das neueste Release, sofern du keine Version oder keinen Kanal festlegst).
  4. Es führt oar setup --defaults --start aus: Es schreibt die Config (ein neues Auth-Token, Zugriff nur von diesem Rechner, den ersten freien Port ab 3333 oder den Port, den du mit OAR_PORT setzt) und startet das Relay. Es gibt die Relay-URL und einen QR-Code aus.
  5. Es gibt die Version aus, meldet, dass das Relay läuft, und nennt die Befehle oar, oar setup und oar doctor.

Auf Linux mit einer systemd-Benutzersitzung wird das Relay als systemd-Benutzerdienst gestartet und ist so nach einem Neustart wieder da. Anderswo (macOS, Container, WSL ohne systemd) wird es im Hintergrund gestartet, und oar start startet es nach einem Neustart wieder.

Wohin es installiert #

Welcher von drei Fällen gilt, hängt vom Node.js auf dem Rechner ab.

Der Rechner hat Was der Installer tut
Node.js 22.13 oder neuer und einen globalen npm-Ordner, in den du schreiben kannst (nvm, fnm, Homebrew, ein Benutzer-Prefix) Führt npm install -g aus, wie du es von Hand tun würdest
Node.js 22.13 oder neuer, aber einen globalen npm-Ordner, der root braucht (ein Paket der Distribution oder von NodeSource) Installiert das Paket mit deinem Node.js nach ~/.oar/npm und legt einen Befehl oar in ~/.local/bin ab. Dein npm-Setup bleibt unverändert
Kein Node.js, eins älter als 22.13, ein Node.js ohne npm oder OAR_NODE=private Lädt das aktuelle Node.js 24 von nodejs.org nach ~/.oar/runtime/node (Prüfsumme geprüft, etwa 30 MB), installiert damit das Paket nach ~/.oar/npm und legt einen Befehl oar in ~/.local/bin ab

Nur OAR nutzt sein eigenes Node.js. Der Befehl oar in ~/.local/bin setzt dieses Node.js ans Ende von PATH, sodass ein eigenes Node.js in den Sessions des Relays weiterhin zuerst kommt.

In den letzten beiden Fällen, wenn ~/.local/bin nicht in deinem PATH liegt, nennt der Installer die Änderung in seinem Plan und hängt dann eine Kommentarzeile (# added by the OAR installer) und eine Zeile export PATH an die Startdatei deiner Shell an: ~/.zshrc für zsh, ~/.bash_profile für bash auf macOS, ~/.bashrc für bash auf Linux, sonst ~/.profile. Neue Terminals finden oar; im aktuellen führst du die Zeile export PATH=... aus, die der Installer ausgibt.

Optionen #

Flags stehen nach sh -s --. Variablen stehen vor sh.

Option Wirkung
--yes, -y Überspringt die Frage. Für Skripte und CI
OAR_YES=1 Dasselbe wie --yes
OAR_VERSION=x.y.z Installiert diese Version statt der neuesten
OAR_CHANNEL=beta Installiert aus dem Beta-Kanal statt aus dem stabilen. Jeder andere Wert bedeutet stabil. OAR_VERSION hat Vorrang
OAR_PORT=n Setzt den Relay-Port in der Config
OAR_NODE=private Nutzt OARs eigenes Node.js in ~/.oar/runtime/node, auch wenn deins reichen würde
OAR_DRY_RUN=1 Gibt den Plan aus und installiert nichts

Jedes andere Flag beendet den Installer mit 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

Erneut ausführen #

Der Installer kann jederzeit erneut laufen. Er installiert das Paket noch einmal (das neueste Release, sofern du keins festlegst) und dient so auch als Update. Er behält eine vorhandene Config, nutzt OARs eigenes Node.js weiter, wenn es noch neu genug ist, schreibt den Starter oar neu und fügt die PATH-Zeilen nur einmal in dein Profil ein.

Ohne Terminal ausführen #

Per Pipe aus curl stellt das Skript seine Frage im Terminal. Ohne Terminal, etwa in einem CI-Job, bricht es mit no terminal to ask on ab und ändert nichts. Gib in diesem Fall --yes mit.

Wo es aufhört #

  • Es hat kein Node.js-Build für musl-Systeme wie Alpine und keins für andere CPUs als x64 und arm64. Installiere Node.js 22.13 oder neuer selbst und führe den Installer dann erneut aus.
  • Wenn nodejs.org nicht erreichbar ist, ein Download oder eine Prüfsumme fehlschlägt oder das geladene Node.js nicht läuft, bricht es ab und installiert nichts.
  • Releases vor 0.9.8 installieren genauso, aber ihr oar setup kann das Relay nicht starten. Der Installer schreibt dann nur die Config und startet das Relay nicht.

Windows #

irm oar.sh/install.ps1 | iex

Dafür brauchst du PowerShell 5 oder neuer und ein bereits installiertes Node.js 22.13 oder neuer. Anders als der Installer für macOS und Linux holt er kein Node.js, fragt nicht nach einer Bestätigung und startet das Relay nicht. Er tut Folgendes:

  1. Prüft, dass node und npm vorhanden sind und Node.js neu genug ist.
  2. Gibt den Plan aus.
  3. Führt npm install -g --allow-scripts=@oar-sh/oar,better-sqlite3,koffi @oar-sh/oar aus.
  4. Führt oar setup aus. In einem Terminal fragt es, ob ein neues Auth-Token erzeugt werden soll, nach dem Zugriff (nur dieser Rechner oder LAN), dem Port und, Neu in 0.9.15 wie das Relay startet: bei der Anmeldung, beim Hochfahren, bevor sich jemand anmeldet (eine Administrator-Abfrage), oder gar nicht. Dann schreibt es die Config und gibt die Relay-URL aus.

Führe danach oar start aus, um das Relay zu starten; der gewählte Autostart startet es bei der nächsten Anmeldung oder beim nächsten Hochfahren. oar autostart ändert den Modus später. Wie es weitergeht, steht unter Erster Start.

Option Wirkung
$env:OAR_VERSION = '0.9.19' Installiert diese Version statt der neuesten
$env:OAR_CHANNEL = 'beta' Installiert aus dem Beta-Kanal statt aus dem stabilen
$env:OAR_DRY_RUN = '1' Gibt den Plan aus und installiert nichts

Setz die Variable im selben PowerShell-Fenster vor dem Befehl. Der Windows-Installer kennt kein OAR_PORT; oar setup fragt nach dem Port, oder du führst oar setup --port <port> aus.

PowerShell blockiert Skripte

Der Installer ruft die .cmd-Shims von npm und oar auf, weil die Standard-Ausführungsrichtlinie von Windows PowerShell die .ps1-Varianten ablehnt. Ist deine Richtlinie Restricted oder AllSigned, sagt er dir das am Ende. Tipp oar.cmd statt oar, oder erlaube lokale Skripte einmalig:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Wenn die Installation klappt, oar aber nicht gefunden wird, öffne ein neues Terminal und führe dann oar.cmd setup aus.

npm #

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

npm 12 führt kein Installationsskript aus, das nicht ausdrücklich erlaubt ist. Zwei von OARs Abhängigkeiten (better-sqlite3, koffi) holen ihr natives Binary in einem solchen Skript: Ohne sie gelingt die Installation unter npm 12, und das Relay startet danach nicht. Neu in 0.9.14 Das Skript von OAR selbst (@oar-sh/oar) kopiert die Daten, die eine frühere Version im Paket abgelegt hat, bevor npm sie entfernt; siehe Upgrade-Hinweise für 0.9.14. npm 10 und 11 akzeptieren das Flag und brauchen keins. Die Installer, oar update und der Button Update (Aktualisieren) geben es selbst mit.

Nie mit --ignore-scripts installieren oder aktualisieren

--ignore-scripts überspringt jedes Installationsskript: die nativen Module, sodass das Relay nicht starten kann, und die Kopie der Daten einer früheren Version.

oar setup legt die Config an und gibt die Relay-URL aus, startet das Relay aber nur, wenn du --start mitgibst. Nutze danach oar start. Der globale Ordner von npm muss beschreibbar sein und sein bin-Ordner in deinem PATH liegen; npm prefix -g zeigt, wo er ist. Wenn er root braucht, nimm kein sudo: Führe stattdessen auf macOS oder Linux den Installer aus. Für spätere Updates führst du oar update aus.

Aus einem Git-Checkout #

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

Ein Checkout unterscheidet sich in drei Punkten von einer globalen Installation:

  • Der Zustand liegt im Repository: server/config.json, server/data/, server/uploads/ und server/logs/. Eine globale Installation hält ihren Zustand in ~/.oar (siehe Wo OAR seine Dateien ablegt und Dateien und Ordner).
  • Er aktualisiert sich nie selbst. Aktualisiere mit git pull, npm install und starte das Relay dann mit 🌄 Restart web relay (Web-Relay neu starten) im Menü ⋯ einer Konversation neu. oar update ist für globale Installationen.
  • oar start, oar stop und oar restart gibt es nur für globale Installationen. In einem Checkout führt npm start das Relay im Vordergrund aus.

node server/server.js --port <port> --token <token> überschreibt die Config für einen Lauf, ohne sie zu speichern.

Nach Plattform #

macOS Linux Windows WSL
Installer curl -fsSL oar.sh/install | sh derselbe irm oar.sh/install.ps1 | iex der Linux-Installer, in der Distribution
Holt Node.js ja ja nein, vorher installieren ja
Startet das Relay im Hintergrund als systemd-Benutzerdienst, wenn es eine Benutzersitzung gibt, sonst im Hintergrund nein, oar start ausführen als systemd-Dienst, wenn systemd an ist, sonst im Hintergrund
Start bei der Anmeldung noch nicht oar service install oar autostart signin oder boot nur mit systemd
Zustandsordner ~/.oar ~/.oar %APPDATA%\oar ~/.oar in der Distribution
tmux für Session-Worker optional optional nicht genutzt optional

Nach einem Neustart startet oar start ein Relay, das im Hintergrund läuft.

WSL #

Führe den Linux-Installer in der Distribution aus, nicht in Windows. Im Standard-Netzwerkmodus von WSL kann ein Port in der Distribution frei sein, während ein Windows-Programm auf ihm lauscht, und localhost:<port> in einem Windows-Browser erreicht dann dieses Programm. Eine neue Config nimmt deshalb den ersten Port, der auf beiden Seiten frei ist, und oar setup lehnt einen Port ab, den Windows belegt. oar status, oar start und oar doctor warnen, wenn Windows den Port des Relays belegt. Zur Abhilfe wählst du einen anderen Port:

oar setup --port 3400

Eine LAN-Adresse in WSL ist WSL-intern. Für den Zugriff vom Handy nutze einen Tunnel oder den Mirrored-Netzwerkmodus von WSL.

OAR entfernen #

Neu in 0.9.15 oar uninstall entfernt OAR vom Rechner und behält deine Daten:

oar uninstall

Es stoppt das Relay (und wartet auf laufende Turns), entfernt die Autostart-Einträge, die OAR erzeugt hat (die systemd-Unit oder den Windows-Anmeldeeintrag und den Start-Task, mit einer Administrator-Abfrage für den Start-Task) und den Wrapper der Copilot-Erweiterung, den OAR geschrieben hat, und lässt npm das Paket entfernen, sobald der Befehl beendet ist. Einträge, die du von Hand angelegt oder bearbeitet hast, bleiben und werden genannt. Deine Config, Datenbank, Uploads und Logs bleiben im Zustandsordner, und der Befehl gibt aus, wo; eine spätere Installation übernimmt sie wieder. oar uninstall hat die Details und jede Meldung.

Um auch die Daten zu löschen:

oar uninstall --purge

Es löscht den Zustandsordner, nachdem du delete eingetippt hast, und fragt gesondert, bevor es einen Datenordner außerhalb davon, einen in einem Git-Checkout oder rescued-package-data löscht. Es lehnt ein Laufwerks-Stammverzeichnis, deinen Home-Ordner, einen Systemordner und jeden Ordner ohne OARs Config oder Datenbank ab. Damit löschst du deine Konversationen.

oar uninstall macht nicht rückgängig, was der Installer für macOS und Linux außerhalb des Pakets angelegt hat:

  • das Skript oar in ~/.local/bin, wenn der Installer es dort abgelegt hat (sein zweiter und dritter Fall);
  • die zwei Zeilen, die er an die Startdatei deiner Shell angehängt hat, falls vorhanden (den Kommentar # added by the OAR installer und die Zeile export PATH darunter);
  • ~/.oar/runtime, OARs eigenes Node.js, falls vorhanden. Es liegt im Zustandsordner und bleibt deshalb ohne --purge erhalten.

Vor 0.9.15, oder wenn oar nicht mehr läuft, entfernst du die Teile von Hand: Stopp das Relay mit oar stop und führe oar service remove aus, wo ein Dienst oder ein Windows-Autostart eingerichtet ist; entferne das Paket mit npm uninstall -g @oar-sh/oar oder lösche nach den anderen beiden Fällen des Installers ~/.oar/npm; dann die Teile oben, und ~/.oar oder %APPDATA%\oar nur, wenn deine Daten weg sollen.

Wo OAR seine Dateien ablegt #

Eine globale Installation hält ihren Zustand in ~/.oar (%APPDATA%\oar auf Windows; OAR_STATE_ROOT verschiebt ihn):

  • config.json
  • data/, mit der Datenbank und den Uploads
  • logs/, mit server.log und server-err.log, wenn oar das Relay gestartet hat, und einem worker-<session>.log für jeden Node-Session-Worker

Ein Update des Pakets mit npm rührt diese nie an. Der Installer für macOS und Linux kann dort zwei Ordner anlegen, die kein Zustand sind: npm/ (das Paket, wenn der globale Ordner von npm nicht beschreibbar war) und runtime/node/ (OARs eigenes Node.js). oar doctor gibt die genutzten Pfade aus.

Was du danach hast #

  • Den Befehl oar. In einem Terminal öffnet oar allein ein Menü mit dem Status des Relays und den anderen Befehlen. oar setup ändert die Einstellungen (Zugriff für andere Geräte, Port, Token), und oar url gibt die Relay-URL erneut aus.
  • Eine Config mit einem frischen Auth-Token. Mit dem Standardzugriff ist das Relay nur auf diesem Rechner erreichbar, unter http://localhost:3333/ oder dem nächsten freien Port.
  • Auf macOS und Linux: ein laufendes Relay. Auf Windows und nach einer npm-Installation von Hand: ein Relay, das du mit oar start startest.

Prüfen, was installiert ist:

oar --version
oar doctor

oar doctor gibt die Version, Node.js, die Installationsart, den Zustandsordner, den Config-Pfad, den Port, ob ein Token gesetzt ist, Pfad und Größe der Datenbank und die Provider-CLIs aus, die antworten. Es ändert nichts.

Fehlerbehebung #

Für Probleme nach der Installation siehe Fehlerbehebung.

Symptom Was zu tun ist
npm install -g @oar-sh/oar schlägt mit EACCES fehl Der globale Ordner von npm braucht root, wie bei einem Node.js der Distribution oder von NodeSource. Nimm kein sudo. Führe den Installer für macOS und Linux aus, der stattdessen nach ~/.oar/npm installiert
Der Windows-Installer meldet, dein Node.js sei zu alt OAR braucht 22.13 oder neuer. Installiere ein aktuelles Node.js von nodejs.org und führe den Installer erneut aus. (Der Installer für macOS und Linux lädt stattdessen sein eigenes Node.js und nennt den Grund in seinem Plan)
Node.js not found auf Windows Installiere Node.js 22.13 oder neuer von nodejs.org, öffne ein neues Terminal und führe den Installer erneut aus
oar: command not found nach dem Installer Öffne ein neues Terminal oder führe die Zeile export PATH=... aus, die der Installer ausgegeben hat. Auf Windows öffnest du ein neues Terminal und führst dann oar.cmd setup aus
oar wird in PowerShell blockiert Tipp oar.cmd, oder führe einmal Set-ExecutionPolicy -Scope CurrentUser RemoteSigned aus
Die Installation scheitert mit node-gyp- oder prebuild-Fehlern better-sqlite3 hat kein vorgefertigtes Binary für deine Plattform. Installiere eine C/C++-Build-Toolchain und Python und versuch es erneut
Das Relay startet nach einer Installation mit npm 12 nicht, mit einem better-sqlite3-Fehler in server-err.log npm 12 hat die Installationsskripte von OARs nativen Abhängigkeiten übersprungen. Installiere neu mit npm install -g --allow-scripts=@oar-sh/oar,better-sqlite3,koffi @oar-sh/oar
Der Installer meldet no terminal to ask on Gib --yes mit: curl -fsSL oar.sh/install | sh -s -- --yes
Der Installer meldet refusing to run as root Führe ihn erneut als dein eigener Benutzer aus, ohne sudo
Kein Node.js-Download für dein System (musl, andere CPU) Installiere Node.js 22.13 oder neuer selbst und führe den Installer dann erneut aus
WSL: Der Windows-Browser zeigt eine andere Seite oder lehnt das Token ab Windows belegt den Port. Führe oar setup --port <port> mit einem anderen aus