−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

如何在 VPS 上搭建自託管 GitHub Actions runner

在 VPS 上註冊一個自託管 GitHub Actions runner 並將其安裝為服務:以非 root 使用者下載 runner,用儲存庫權杖註冊,執行 svc.sh 使其在重新啟動後存活。複製貼上指令。

自託管 runner 給您固定成本的 CI 和熱快取——沒有按分鐘計費,用您的工具鏈、您的機器。這是最簡搭建指南;關於為什麼自託管勝過 GitHub 託管分鐘數以及 Docker 任務細節,請看完整指南和 面向 GitHub Actions 的 VPS 用例。

1. 建立一個非 root 使用者(runner 拒絕 root)

adduser --disabled-password --gecos "" runner
su - runner

2. 下載 runner

在 GitHub:Settings → Actions → Runners → New self-hosted runner → Linux,它會給您確切的下載和一次性權杖。然後:

mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L \
  https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz

3. 用您的儲存庫註冊它

./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN

4. 安裝為服務(在重新啟動後存活)

不要在終端裡執行 ./run.sh——把它安裝成服務:

sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status

runner 現在在 GitHub 介面顯示為 Idle,並會接取以它為目標的任務。

5. 在 workflow 中使用它

jobs:
  build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v4
      - run: make build && make test

Docker 任務(選填)

安裝一次 Docker,workflow 就能建置映像,且層快取在多次執行之間保留:

sudo apt install -y docker.io
sudo usermod -aG docker runner

見在 VPS 上安裝 Docker。規格:**Small(每月 $8)**對大多數 CI 都很舒適;重度編譯請升級。大約一分鐘拿到 root,無 KYC,用加密貨幣付款。

常見問題

如何註冊一個自託管 GitHub Actions runner?

在您的儲存庫(或組織):Settings → Actions → Runners → New self-hosted runner → Linux。GitHub 會顯示一條下載指令和一個一次性註冊權杖。以非 root 使用者下載 runner,用該 URL 和權杖執行 ./config.sh,然後用 svc.sh 將其安裝為服務。步驟在下方。

為什麼 runner 不能以 root 執行?

runner 按設計拒絕以 root 執行。建立一個專用的非 root 使用者(adduser runner)並在那裡設定。這還能限制惡意 workflow 在您機器上能觸及的範圍。

重新啟動後如何讓 runner 保持執行?

使用自備的 svc.sh 助手:sudo ./svc.sh install runner && sudo ./svc.sh start。它會安裝一個 systemd 單元,讓 runner 開機啟動、失敗後重新啟動,並在 GitHub 介面顯示為 Idle。

runner 需要專用 IP 嗎?

不需要。runner 透過 HTTPS 向外撥號連線 GitHub;無需任何對內連線到達它。NAT 方案(每月 3 美元起)即可。只有當您同時自託管對外提供流量的服務時,才需要專用 IP。

您們要身分證件或信用卡嗎?

不要。註冊用電子郵件,用 USDC 或 USDT 付款——無檔案、無卡。大約一分鐘拿到 root。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。