Các runner do GitHub host tiện lợi cho tới khi hóa đơn hoặc thời gian chờ bắt đầu gây đau. Qua cấp miễn phí bạn trả theo phút, cold-start mỗi job, và tải lại phụ thuộc mỗi lần chạy. Một runner tự host trên VPS của riêng bạn lật ngược cả ba: chi phí hàng tháng cố định, một cỗ máy ấm với các cache của bạn đã có sẵn trên đĩa, và một môi trường build bạn kiểm soát hoàn toàn — phiên bản công cụ cụ thể, nhiều RAM hơn, cache lớp Docker thực sự bền bỉ.
Một runner chỉ cần tới GitHub đi ra, nên nó hoạt động trên các gói rẻ nhất của chúng tôi, thanh toán bằng crypto, và không cần KYC.
Một runner cần gì
- CPU và RAM cho các build của bạn. Small ($8/tháng — 4 vCPU, 4 GB RAM, 35 GB NVMe) là mặc định thoải mái cho hầu hết CI: build Node/Go/Rust, bộ test, build image Docker. Biên dịch nặng hoặc job song song? Nâng lên Medium hoặc một gói Pro.
- Đĩa NVMe cho các cache. Toàn bộ mục đích của tự host là sự bền bỉ — cache phụ thuộc, lớp Docker, artifact build ở lại trên đĩa giữa các lần chạy. NVMe giữ việc khôi phục nhanh.
- Không cần IP riêng. Runner gọi ra tới GitHub qua HTTPS; không có gì cần tới nó theo chiều đến. Một gói NAT (từ $3/tháng) là đủ. Chỉ chọn một IP riêng nếu bạn cũng tự host thứ gì đó phục vụ lưu lượng.
Thiết lập một runner (Ubuntu 24.04)
Tạo runner trong repo của bạn (hoặc org): Settings → Actions → Runners → New self-hosted runner → Linux. GitHub hiển thị một lệnh tải và một token đăng ký dùng một lần. Trên VPS:
# với tư cách một người dùng không phải root (runner từ chối chạy dưới root)
adduser --disabled-password --gecos "" runner
su - runner
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
# đăng ký với URL + token từ giao diện GitHub
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
Giữ nó chạy như một dịch vụ
Đừng chạy ./run.sh trong một terminal — cài nó như một dịch vụ systemd để nó sống sót qua các lần khởi động lại:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
Runner giờ xuất hiện là Idle trong giao diện GitHub và nhận bất kỳ job nào nhắm tới nó.
Dùng nó từ một workflow
Trỏ một job tới runner của bạn với runs-on:
jobs:
build:
runs-on: self-hosted # hoặc một nhãn tùy chỉnh bạn đặt lúc đăng ký
steps:
- uses: actions/checkout@v4
- run: make build && make test
Các job dựa trên Docker
Cài Docker một lần và các workflow của bạn có thể build image hoặc chạy container dịch vụ, với cache lớp bền bỉ giữa các lần chạy:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # cho runner dùng Docker mà không cần sudo
Để cô lập dùng-một-lần theo từng job, chạy chính runner bên trong một container và tạo lại nó mỗi lần chạy — một mẫu phổ biến cho các build không đáng tin hoặc build ma trận.
Vì sao EQVPS cho CI
- Chi phí cố định, số phút không giới hạn. Không đo theo phút — một pipeline bận tốn bằng một cái nhàn rỗi.
- Các cache ấm. Phụ thuộc và lớp Docker ở lại trên NVMe giữa các lần chạy; các build nhanh hơn, không chậm hơn.
- Root trong ~60 giây, image sạch. Ubuntu, Debian và nhiều hơn qua cloud-init; cài chính xác chuỗi công cụ bạn cần.
- Không KYC, thanh toán crypto. Email để đăng ký, USDC/USDT để thanh toán. Dựng thêm runner cho các đợt release cao điểm và hủy chúng sau — thời gian đã trả chưa dùng được hoàn về số dư của bạn.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.