Skip to content

快速開始 ​

Walis 發行的是 self-contained 執行檔——目標機器不必先裝 .NET——涵蓋 Windows(x64、arm64)、 macOS(Intel、Apple Silicon)與 Linux(x64、arm64、樹莓派的 32 位元 arm,以及 musl/Alpine)。 每個壓縮檔裡都含把管理介面一起打包好的 API 與執行器。

macOS 有現成的服務安裝腳本,就是下面這段。Windows 與 Linux 解壓後用你原本的 init 系統把執行檔 跑起來即可,沒有其他東西要裝。

安裝成 macOS 服務 ​

bash
git clone https://github.com/walisayu/walis.git
cd walis
sudo ./deploy/install.sh --user "$(whoami)" --port 11120

它會把 API 發行成 self-contained 執行檔放到 /usr/local/walis/releases/<時間戳>, 把管理介面建置到同一份 release,並註冊兩個 launch daemon:

Daemon執行身分用途
com.walisayu.walis你的帳號服務本體
com.walisayu.walis-restarterroot盯著觸發檔,負責重啟服務

用 LaunchDaemon 是為了開機即啟動、不必等登入;但 plist 指定了一般帳號—— Walis 會執行任意 shell,那不是你想用 root 跑的東西。

開啟 http://127.0.0.1:11120。

這支安裝腳本採用較嚴格的設定:服務只聽 loopback,也只回應 localhost 這類名稱, 前提是前面會再放一個反向代理,見部署。

或者從原始碼跑 ​

bash
dotnet run --project source/Walis.Api --no-launch-profile -- --urls http://127.0.0.1:11126
npm --prefix source/Walis.Admin run dev

第一次連線 ​

用壓縮檔或 install.sh 裝起來的 Walis,任何機器都可以用 HTTP 連線:

bash
./Walis.Api --urls http://0.0.0.0:11120

開 http://<這台機器>:11120,建立第一位管理員。

表單會要求輸入設定碼,避免先開啟頁面的人直接成為擁有者。從 1.1 起,正式安裝在伺服器本機也要輸入: 同一台機器上的反向代理可能讓遠端的瀏覽器看起來像本機。伺服器啟動時會把設定碼印在主控台, 並存成資料目錄裡的 setup-code.txt:

安裝方式設定碼在哪裡
手動啟動主控台,或執行檔旁邊的 data/setup-code.txt
install.sh --servicesudo cat /var/lib/walis-server/setup-code.txt,或 journalctl -u walis-server

大小寫都可以,有沒有連字號也都可以。重新啟動不會換一組;管理員建立之後,設定碼就會刪除。

之後每個請求都需要登入。

第一個任務 ​

  1. 建置任務 → 新增任務
  2. 填名稱與工作目錄
  3. 直接寫 shell,或用動作組出流程
  4. 按執行

日誌視窗會分別顯示每個步驟:狀態、結束碼、耗時,以及執行中就即時串流的輸出。

已經有 Jenkinsfile 了嗎?建置任務 → 從 Jenkins 匯入會把它轉成一份任務草稿—— 步驟、參數、觸發方式都在——並告訴你哪些轉不過去。見從 Jenkins 匯入。

對外之前 ​

Walis 會執行任意 shell,而預設值是為了在可信任的網路上第一次就能用。要讓其他地方也連得到之前:

  1. 加上 TLS,然後強制使用。 在前面放一個反向代理(它必須原樣傳遞 Host 標頭,並送出 X-Forwarded-Proto 與 X-Forwarded-For),或是給 Walis 一張憑證。接著設定 Security__RequireHttps=true:沒有 TLS 的遠端請求會被拒絕,所有 cookie 都標記 Secure。 反向代理在另一台機器時,要把它的位址列進 Security__TrustedProxies。
  2. 指定要回應的主機名稱,例如 AllowedHosts="walis.example.com;localhost"。預設接受任何名稱。
  3. 決定建置隔離的做法。 在 Linux、Windows 與遠端執行器上,建置預設不經沙箱直接執行。 請只讓可信任的人編輯任務,或是到系統設定 → 建置開啟「沒有隔離邊界時拒絕執行」。
  4. 考慮要求一次性密碼,在系統設定 → 安全。

每一項各自防的是什麼,見安全模型。

以 MIT 授權釋出。