Runner yang di-host GitHub adalah bawaan yang baik. Anda berhenti membutuhkannya begitu build menginginkan sesuatu yang tidak mereka miliki — registry paket privat Anda, versi toolchain tertentu yang lelah Anda pasang ulang tiap eksekusi, basis data di jaringan Anda sendiri, atau sekadar lebih banyak kendali atas mesin. Saat itulah runner swa-hosting di VPS membenarkan keberadaannya.
Panduan ini membuat satu berjalan dengan benar: terpasang, terdaftar, hidup di bawah systemd, dan — bagian yang orang salah paham — aman. Mari mulai dengan yang terakhir itu, karena itulah bagian yang menggigit.
Satu aturan keamanan
Alur kerja GitHub Actions menjalankan kode sembarang — apa pun yang ada di berkas alur kerja, dan apa pun yang kode itu tarik. Pada repo Anda sendiri itu kode Anda, dan tidak apa-apa. Pada repo publik, pull request dari orang asing bisa menjalankan kode mereka di runner Anda. Itu bukan bug; itu cara kerja CI. Dokumentasi GitHub sendiri mengatakan terang-terangan: jangan pakai runner swa-hosting dengan repositori publik.
Jadi aturannya sederhana dan tidak bisa ditawar: runner swa-hosting untuk repo privat. Jika repo Anda publik, pakai runner yang di-host GitHub dan lanjutkan. Semua di bawah mengasumsikan repo privat.
Apa yang dibutuhkan runner dari mesin
Itu tergantung build-nya, dan Anda harus menentukan ukuran ke milik Anda alih-alih angka dari sebuah halaman:
- Pekerjaan kompilasi-dan-uji tipikal — 2 inti dan 4-8 GB nyaman. Small ($8, 4 vCPU / 4 GB) atau Medium ($12, 6 vCPU / 6 GB) menutupi kebanyakan ini.
- Build lebih berat — kompilasi native besar, build citra Docker besar, suite test haus-memori — mau lebih banyak margin. Awasi satu eksekusi nyata (
htopsaat ia build) dan tentukan ukuran ke apa yang benar-benar Anda lihat, bukan ke harapan.
Disk juga penting: cache build, lapisan Docker, dan repo yang diklon menumpuk. Awasi dan pangkas.
1. Siapkan mesin
Buat pengguna non-root untuk runner — installer GitHub menolak berjalan sebagai root bagaimanapun, dan Anda mau begitu:
sudo adduser --disabled-password --gecos "" runner
sudo usermod -aG sudo runner # hanya jika build Anda benar-benar butuh sudo
Pasang apa pun yang dibutuhkan build Anda — toolchain bahasa, Docker, alat build. Misalnya, jika pekerjaan Anda mem-build kontainer:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner
2. Unduh dan daftarkan runner
Di repo (atau org) Anda di GitHub, pergi ke Settings → Actions → Runners → New self-hosted runner. GitHub memberi Anda perintah unduhan persis dan token pendaftaran (berumur-pendek — ambil yang baru). Sebagai pengguna runner:
sudo -iu runner
mkdir actions-runner && cd actions-runner
# pakai URL persis yang GitHub tunjukkan untuk OS/arch Anda:
curl -o actions-runner-linux-x64.tar.gz -L "URL_FROM_GITHUB"
tar xzf actions-runner-linux-x64.tar.gz
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
config.sh menanyakan nama runner, label, dan folder kerja — bawaannya baik untuk mulai. Label adalah bagaimana alur kerja Anda menargetkan runner ini (runs-on: self-hosted).
3. Jalankan sebagai layanan systemd
Runner disertai pembantu yang memasang layanan systemd untuk Anda — pakai, agar runner bertahan dari reboot dan restart saat gagal. Tetap dari instalasi pengguna runner, tapi perintah layanan butuh root:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
Itu mendaftarkan actions.runner.* sebagai unit systemd yang berjalan sebagai pengguna runner, mulai saat boot. Log pergi ke journald:
sudo journalctl -u 'actions.runner.*' -f
Kembali di halaman Runners GitHub, runner Anda kini menampilkan Idle — titik hijau. Arahkan alur kerja padanya:
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- run: make test
Push, dan pekerjaan berjalan di mesin Anda.
4. Jaga tetap bersih
Runner swa-hosting menggunakan ulang sistem berkasnya antar pekerjaan — itu kemenangan kecepatan (cache hangat) dan senjata-makan-tuan (state sisa). Dua kebiasaan menjaganya sehat:
- Pangkas secara rutin. Docker terutama —
docker system prunepada cron, atau disk terisi diam-diam dengan lapisan mati. - Jangan simpan rahasia di mesin. Pakai secret GitHub Actions, disuntikkan per-eksekusi, bukan berkas yang berada di home runner. Jika runner disusupi, apa pun di disk ikut.
Jika Anda butuh lingkungan yang benar-benar bersih per pekerjaan, jalankan tiap pekerjaan di dalam langkah kontainer — runner tetap, kekacauan pekerjaan tidak.
Kapan swa-hosting, jujurnya
Swa-hosting saat Anda butuh toolchain Anda sendiri terpasang, akses ke sumber daya jaringan privat, atau kendali atas mesin. Tetap di runner yang di-host GitHub saat lingkungan bersih sekali-pakai dan menit mereka cocok untuk Anda — itu benar-benar lebih sederhana, dan lebih sederhana bernilai sesuatu. Dan jangan pernah, pada repo publik, swa-hosting. Yang itu bukan preferensi.
Jika runner repo-privat adalah yang Anda butuhkan: pilih paket — Small ($8) untuk build lebih ringan, Medium ($12) saat mereka lebih berat — bayar dengan USDC atau USDT (tanpa KYC, tanpa dokumen), dan Anda akan punya root dalam sekitar 60 detik. Lalu kerjakan halaman ini ke bawah dan Anda akan punya runner yang mengambil pekerjaan beberapa menit kemudian.
Komentar
Belum ada komentar. Jadilah yang pertama.