安裝
OAR 是你在自己機器上執行的中繼。安裝它,就是把 oar 指令放到那台機器上。在 macOS 和 Linux 上,一行指令就能完成所有工作:它會找到或下載 Node.js、安裝 OAR、寫入設定檔並啟動中繼。在 Windows 上,安裝程式需要事先裝好 Node.js;此外,你隨時都可以改用 npm 或從 git checkout 安裝。
需求 #
| 需求 | 用途 | 備註 |
|---|---|---|
| macOS、Linux、Windows 或 WSL | 中繼主機 | macOS 和 Linux 安裝程式可以為 x64 和 arm64 CPU 下載 Node.js。WSL 使用 Linux 安裝程式 |
| Node.js 22.13 或更新版本 | 一律需要 | 當你沒有 Node.js 或版本太舊時,macOS 和 Linux 安裝程式會下載自己的一份。Windows 安裝程式只做檢查 |
| tmux(選用) | Linux 和 macOS | session worker 會在分離的 tmux session 中執行,你可以從瀏覽器監看。沒有 tmux 時,它們以一般的背景處理程序執行。Windows 從不使用 tmux |
cloudflared(選用) |
內建的 Cloudflare tunnel | OAR 沒有附帶,請自行安裝 |
| 供應商的 CLI 或金鑰(選用) | 與該供應商對話 | 每個供應商都有自己的登入方式;請見供應商頁面 |
安裝不需要其他任何東西。供應商可以在 OAR 執行之後再新增。
macOS 和 Linux #
curl -fsSL oar.sh/install | sh
你可以先到 oar.sh/install 閱讀這個腳本。它需要 curl 或 wget,需要下載 Node.js 時還需要 tar。它拒絕以 root 執行:OAR 是依使用者安裝的,沒有任何步驟需要 root。
它會做什麼 #
- 它會檢查機器上有什麼,並印出計畫:使用哪個 Node.js、OAR 安裝到哪裡、會在你的 shell 設定檔寫入什麼,以及中繼會如何啟動。
- 它會詢問
Continue? [Y/。按 Enter 或輸入n] y就繼續;其他任何回答都不會做任何變更。 - 它會安裝
@oar-套件(除非你指定了版本或通道,否則是最新版本)。sh/ oar - 它會執行
oar setup --defaults --start:寫入設定檔(新的驗證 token、僅限本機存取、從 3333 起第一個空閒的連接埠,或你用OAR_設定的連接埠)並啟動中繼。它會印出中繼網址和 QR 碼。PORT - 它會印出版本、告訴你中繼正在執行,並列出
oar、oar setup和oar doctor這幾個指令。
在有 systemd 使用者 session 的 Linux 上,中繼會以 systemd 使用者服務的形式啟動,所以重開機後會自動恢復。在其他環境(macOS、容器、沒有 systemd 的 WSL)中,它會在背景啟動,重開機後用 oar start 再次啟動它。
安裝到哪裡 #
適用三種情況中的哪一種,取決於機器上的 Node.js。
| 機器上有 | 安裝程式會做什麼 |
|---|---|
| Node.js 22.13 或更新版本,以及你有寫入權限的全域 npm 資料夾(nvm、fnm、Homebrew、使用者層級的 prefix) | 執行 npm install -g,和你手動安裝一樣 |
| Node.js 22.13 或更新版本,但全域 npm 資料夾需要 root(發行版或 NodeSource 的套件) | 用你的 Node.js 把套件安裝到 ~/.,並在 ~/. 放一個 oar 指令。你的 npm 設定不會被更動 |
沒有 Node.js、版本比 22.13 舊、Node.js 沒有附帶 npm,或設定了 OAR_ |
從 nodejs.org 下載目前的 Node.js 24 到 ~/.(會驗證檢查碼,約 30 MB),用它把套件安裝到 ~/.,並在 ~/. 放一個 oar 指令 |
只有 OAR 會使用它自己的 Node.js。~/. 裡的 oar 指令會把那個 Node.js 放在 PATH 的最後,所以在中繼的 session 裡,你自己的 Node.js 仍然優先。
在後兩種情況下,如果 ~/. 不在你的 PATH 上,安裝程式會在計畫中列出這項變更,然後在你的 shell 啟動檔末尾加上一行註解(# added by the OAR installer)和一行 export PATH:zsh 是 ~/.,macOS 上的 bash 是 ~/.,Linux 上的 bash 是 ~/.,其他情況是 ~/.。新開的終端機就找得到 oar;在目前的終端機裡,請執行安裝程式印出的那行 export PATH=...。
選項 #
旗標放在 sh -s -- 之後,變數放在 sh 之前。
| 選項 | 效果 |
|---|---|
--yes、-y |
跳過詢問。適合在腳本和 CI 中使用 |
OAR_ |
等同 --yes |
OAR_ |
安裝指定的版本,而不是最新版本 |
OAR_ |
從 beta 通道安裝,而不是 stable 通道。其他任何值都視為 stable。OAR_ 優先於它 |
OAR_ |
在設定檔中設定中繼的連接埠 |
OAR_ |
即使你的 Node.js 夠用,也使用 ~/. 裡 OAR 自己的 Node.js |
OAR_ |
只印出計畫,不安裝任何東西 |
其他任何旗標都會讓安裝程式以 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
再次執行 #
安裝程式隨時都可以再次執行。它會重新安裝套件(除非你指定了版本,否則是最新版本),所以也可以當作更新使用。它會保留現有的設定檔;OAR 自己的 Node.js 若仍夠新就繼續沿用;它會重寫 oar 啟動器,而 PATH 那幾行只會加進你的設定檔一次。
在沒有終端機的環境執行 #
透過管線從 curl 執行時,腳本會在終端機上提出詢問。沒有終端機時(例如在 CI 工作中),它會以 no terminal to ask on 停止,不做任何變更。這種情況請加上 --yes。
它會在哪裡停下 #
- 它沒有適用於 musl 系統(例如 Alpine)的 Node.js 版本,也沒有適用於 x64 和 arm64 以外 CPU 的版本。請自行安裝 Node.js 22.13 或更新版本,然後再次執行安裝程式。
- 如果無法連到 nodejs.org、下載或檢查碼驗證失敗,或下載的 Node.js 無法執行,它就會停止,不安裝任何東西。
- 0.9.8 之前的版本也用同樣的方式安裝,但它們的
oar setup無法啟動中繼。這時安裝程式只會寫入設定檔,不會啟動中繼。
Windows #
irm oar.sh/install.ps1 | iex
這需要 PowerShell 5 或更新版本,並且已經安裝 Node.js 22.13 或更新版本。和 macOS、Linux 安裝程式不同,它不會下載 Node.js、不會要求確認,也不會啟動中繼。它會做這些事:
- 檢查
node和npm是否存在,以及 Node.js 是否夠新。 - 印出計畫。
- 執行
npm install -g --allow-。scripts= @oar- sh/ oar, better- sqlite3, koffi @oar- sh/ oar - 執行
oar setup。在終端機中,它會詢問是否建立新的驗證 token、存取範圍(僅限本機或區域網路)、連接埠,以及 0.9.15 新增 中繼的啟動方式:登入時、開機時在任何人登入之前(需確認一次系統管理員提示),或完全不自動啟動。接著它會寫入設定檔並印出中繼網址。
之後請執行 oar start 來啟動中繼;你選擇的自動啟動方式會在下次登入或開機時啟動它。之後可以用 oar autostart 變更模式。接下來的步驟請見首次執行。
| 選項 | 效果 |
|---|---|
$env: |
安裝指定的版本,而不是最新版本 |
$env: |
從 beta 通道安裝,而不是 stable 通道 |
$env: |
只印出計畫,不安裝任何東西 |
請在同一個 PowerShell 視窗中、執行指令之前設定變數。Windows 安裝程式沒有 OAR_;oar setup 會詢問連接埠,你也可以執行 oar setup --port <port>。
PowerShell 封鎖腳本
安裝程式會呼叫 npm 和 oar 的 . shim,因為 Windows PowerShell 預設的執行原則會拒絕 . 版本。如果你的原則是 Restricted 或 All,它會在最後告訴你。請輸入 oar. 代替 oar,或一次性地允許本機腳本:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
如果安裝成功但找不到 oar,請開啟新的終端機,然後執行 oar.。
npm #
npm install -g --allow-scripts=@oar-sh/oar,better-sqlite3,koffi @oar-sh/oar
oar setup
npm 12 不會執行沒有明確允許的安裝腳本。OAR 有兩個相依套件(better-sqlite3、koffi)會在安裝腳本中下載它們的原生二進位檔:少了這兩個腳本,在 npm 12 上安裝仍會成功,但中繼之後會無法啟動。0.9.14 新增 OAR 自己的安裝腳本(@oar-)會在 npm 刪除套件之前,把舊版本存放在套件內的資料複製出來;請見 0.9.14 的升級說明。npm 10 和 11 接受這個旗標,但並不需要它。安裝程式、oar update 和 Update(更新)按鈕都會自動加上它。
切勿用 --ignore-scripts 安裝或更新
--ignore- 會跳過所有安裝腳本:原生模組的腳本(中繼因此無法啟動),以及舊版本資料的複製。
oar setup 會建立設定檔並印出中繼網址,但除非你加上 --start,否則不會啟動中繼。之後請用 oar start。npm 的全域資料夾必須可寫入,而且它的 bin 資料夾必須在你的 PATH 上;npm prefix -g 會顯示它的位置。如果它需要 root,請不要使用 sudo,改在 macOS 或 Linux 上執行安裝程式。日後要更新時,請執行 oar update。
從 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
checkout 和全域安裝有三點不同:
- 狀態存放在儲存庫內:
server/、config. json server/、data/ server/和uploads/ server/。全域安裝則把狀態放在logs/ ~/.(見 OAR 把檔案放在哪裡和檔案與資料夾)。oar - 它從不自動更新。 用
git pull、npm install更新,然後在對話的⋯選單中用 🌄 Restart web relay(重新啟動網頁中繼)重新啟動中繼。oar update是給全域安裝用的。 oar start、oar stop和oar restart只適用於全域安裝。 在 checkout 中,npm start會在前景執行中繼。
node server/ 會在單次執行中覆寫設定檔,但不會儲存。
依平台 #
| macOS | Linux | Windows | WSL | |
|---|---|---|---|---|
| 安裝程式 | curl -fs |
相同 | irm oar. |
Linux 版,在發行版內執行 |
| 下載 Node.js | 是 | 是 | 否,請先自行安裝 | 是 |
| 啟動中繼 | 在背景 | 有使用者 session 時以 systemd 使用者服務啟動,否則在背景 | 否,請執行 oar start |
啟用 systemd 時以 systemd 服務啟動,否則在背景 |
| 登入時啟動 | 尚未支援 | oar service install |
oar autostart signin 或 boot |
僅限 systemd |
| 狀態資料夾 | ~/. |
~/. |
%APPDATA%\ |
發行版內的 ~/. |
| session worker 使用 tmux | 選用 | 選用 | 不使用 | 選用 |
重開機之後,oar start 會啟動一個在背景執行的中繼。
WSL #
請在發行版內執行 Linux 安裝程式,而不是在 Windows 中執行。在 WSL 預設的網路模式下,一個連接埠可能在發行版內是空閒的,同時卻有 Windows 程式在監聽它,此時 Windows 瀏覽器中的 localhost:<port> 會連到那個程式。因此,新的設定檔會選用兩邊都空閒的第一個連接埠,而 oar setup 會拒絕 Windows 佔用的連接埠。當 Windows 佔用中繼的連接埠時,oar status、oar start 和 oar doctor 會發出警告。要修正,請改用其他連接埠:
oar setup --port 3400
WSL 內的區域網路位址只在 WSL 內部有效。要從手機存取,請使用 tunnel 或 WSL 的鏡像網路模式。
移除 OAR #
0.9.15 新增 oar uninstall 會把 OAR 從機器上移除,但保留你的資料:
oar uninstall
它會停止中繼(等候執行中的回合結束),移除 OAR 產生的自動啟動項目(systemd unit,或 Windows 的登入項目與開機任務,移除開機任務時需確認一次系統管理員提示)和 OAR 寫入的 Copilot 擴充功能包裝程式,並在指令結束後讓 npm 移除套件。你手動建立或編輯過的項目會保留,並列出名稱。你的設定檔、資料庫、上傳的檔案和記錄會留在狀態資料夾中,指令會印出位置;之後重新安裝時會再次使用它們。詳細內容和所有訊息請見 oar uninstall。
要連同資料一起刪除:
oar uninstall --purge
你輸入 delete 後,它會刪除狀態資料夾;如果有位於狀態資料夾之外的資料目錄、git checkout 中的資料目錄,或 rescued-,它會在刪除之前另外詢問。它會拒絕刪除磁碟機根目錄、你的主目錄、系統資料夾,以及任何不含 OAR 設定檔或資料庫的資料夾。這會刪除你的對話。
oar uninstall 不會還原 macOS 和 Linux 安裝程式在套件之外加入的東西:
~/.裡的local/ bin oar腳本,如果是安裝程式放在那裡的(它的第二和第三種情況);- 它加在你 shell 啟動檔中的兩行(如果有的話:註解
# added by the OAR installer和它下面那行export PATH); ~/.,也就是 OAR 自己的 Node.js,如果存在的話。它位於狀態資料夾內,所以不加oar/ runtime --purge時會保留。
在 0.9.15 之前,或 oar 已經無法執行時,請手動移除各個部分:用 oar stop 停止中繼,如果設定過服務或 Windows 自動啟動,請執行 oar service remove;用 npm uninstall -g @oar- 移除套件,如果是安裝程式的另外兩種情況,則刪除 ~/.;接著移除上面列出的部分;只有在你想刪除資料時,才刪除 ~/. 或 %APPDATA%\。
OAR 把檔案放在哪裡 #
全域安裝會把狀態放在 ~/.(Windows 上是 %APPDATA%\;可以用 OAR_ 變更位置):
config.json data/,內含資料庫和上傳的檔案logs/,在oar啟動中繼時內含server.和log server-,另外每個 Node session worker 各有一個err. log worker-<session>.log
用 npm 更新套件絕不會動到這些檔案。macOS 和 Linux 安裝程式可能會在那裡加入兩個不屬於狀態的資料夾:npm/(npm 的全域資料夾無法寫入時,套件放在這裡)和 runtime/(OAR 自己的 Node.js)。oar doctor 會印出實際使用的路徑。
安裝完成後你會有什麼 #
oar指令。在終端機中,單獨執行oar會開啟選單,顯示中繼的狀態和其他指令。oar setup可以變更設定(其他裝置的存取、連接埠、token),oar url會再次印出中繼網址。- 一個含有全新驗證 token 的設定檔。在預設的存取設定下,只有這台機器能連到中繼,網址是
http://或下一個空閒的連接埠。localhost: 3333/ - 在 macOS 和 Linux 上:一個正在執行的中繼。在 Windows 上,以及手動用 npm 安裝之後:一個需要你用
oar start啟動的中繼。
檢查安裝了什麼:
oar --version
oar doctor
oar doctor 會印出版本、Node.js、安裝模式、狀態資料夾、設定檔路徑、連接埠、是否已設定 token、資料庫路徑和大小,以及哪些供應商 CLI 有回應。它不會變更任何東西。
疑難排解 #
安裝之後的問題請見疑難排解。
| 症狀 | 該怎麼做 |
|---|---|
npm install -g @oar- 因 EACCES 失敗 |
npm 的全域資料夾需要 root,例如使用發行版或 NodeSource 的 Node.js 時。不要使用 sudo。請執行 macOS 和 Linux 安裝程式,它會改為安裝到 ~/. |
| Windows 安裝程式說你的 Node.js 太舊 | OAR 需要 22.13 或更新版本。請從 nodejs.org 安裝目前的 Node.js,然後再次執行安裝程式。(macOS 和 Linux 安裝程式則會改為下載自己的 Node.js,並在計畫中說明原因) |
Windows 上出現 Node. |
請從 nodejs.org 安裝 Node.js 22.13 或更新版本,開啟新的終端機,然後再次執行安裝程式 |
安裝程式執行後出現 oar: command not found |
開啟新的終端機,或執行安裝程式印出的那行 export PATH=...。在 Windows 上,請開啟新的終端機,然後執行 oar. |
oar 在 PowerShell 中被封鎖 |
輸入 oar.,或執行一次 Set- |
| 安裝因 node-gyp 或 prebuild 錯誤而失敗 | better- 沒有適用於你平台的預先建置二進位檔。請安裝 C/C++ 建置工具鏈和 Python,然後再試一次 |
用 npm 12 安裝後中繼無法啟動,server- 中有 better- 錯誤 |
npm 12 跳過了 OAR 原生相依套件的安裝腳本。請用 npm install -g --allow- 重新安裝 |
安裝程式顯示 no terminal to ask on |
加上 --yes:curl -fs |
安裝程式顯示 refusing to run as root |
以你自己的使用者身分再執行一次,不要用 sudo |
| 沒有適用於你系統的 Node.js 下載(musl、其他 CPU) | 請自行安裝 Node.js 22.13 或更新版本,然後再次執行安裝程式 |
| WSL:Windows 瀏覽器顯示別的頁面,或拒絕 token | Windows 佔用了該連接埠。請執行 oar setup --port <port> 改用其他連接埠 |