Lewati ke konten utama
Versi: 1.0

Self-Hosted Runner 24/7

Laptop yang tertutup mematikan agent-mu. Kalau kamu serius dengan pola "kerjakan segalanya via Telegram", ada satu mesin yang harus selalu hidup: runner β€” tempat bridge chat, cron agent, dan loop panjang tinggal. Pilihannya: VPS murah (region Singapura untuk latensi Indonesia), atau homelab (mini PC/NUC di rumah).

:::warning Ancaman utamanya bukan hacker canggih Ancaman utamanya adalah agent-mu sendiri yang salah paham instruksi di mesin yang punya akses ke semuanya. Desain runner dengan asumsi: suatu saat agent akan menjalankan perintah yang tidak kamu maksudkan. :::

Siapkan VPS dengan user terpisah
# sebagai root di VPS baru (Ubuntu 24.04)
adduser agent --disabled-password
usermod -aG docker agent # hanya kalau perlu container
# JANGAN beri agent akses sudo

Semua proses agent berjalan sebagai user agent yang tidak bisa sudo. Kredensial deploy production TIDAK disimpan di user ini β€” deploy tetap lewat CI (lihat playbook deploy).

Checkpoint: sudo -u agent sudo whoami gagal dengan "not in the sudoers file".

Akses masuk hanya lewat Tailscale

Tailscale membuat jaringan privat antar perangkatmu (HP, laptop, VPS) tanpa membuka port publik:

curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --ssh
# lalu matikan SSH publik:
# /etc/ssh/sshd_config β†’ ListenAddress <IP_TAILSCALE_VPS>

Checkpoint: SSH dari HP/laptop via IP Tailscale berhasil; nmap dari internet publik tidak melihat port 22.

Jalankan bridge chat sebagai systemd service

tmux cocok untuk eksperimen, systemd untuk produksi β€” restart otomatis saat crash dan boot:

/etc/systemd/system/agent-bridge.service
[Unit]
Description=Telegram agent bridge
After=network-online.target

[Service]
User=agent
WorkingDirectory=/home/agent/bridge
ExecStart=/home/agent/bridge/start.sh
Restart=on-failure
RestartSec=10
# guardrail resource:
MemoryMax=4G
CPUQuota=200%

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now agent-bridge

Sesi kerja interaktif yang panjang tetap enak di tmux: tmux new -s kerja β†’ jalankan agent CLI β†’ detach β€” dan kamu bisa attach lagi dari HP via SSH kapan pun.

Checkpoint: systemctl status agent-bridge menunjukkan active (running); sudo reboot β†’ service hidup lagi sendiri dan bridge merespons di Telegram.

Isolasi agent otonom dalam container

Untuk agent yang berjalan tanpa pengawasan (cron, webhook), tambah satu lapisan: agent bekerja di dalam container yang hanya melihat repo dan tool yang dibutuhkan.

docker run --rm \
-v /home/agent/repos/proyek:/workspace \
-w /workspace \
-e ANTHROPIC_API_KEY \
--network bridge \
--memory 2g --pids-limit 256 \
node:22-bookworm \
npx -y @anthropic-ai/claude-code -p "jalankan triage harian sesuai AGENTS.md" \
--dangerously-skip-permissions

Prinsipnya: mode "skip permissions" yang membuat agent otonom benar-benar produktif hanya boleh dipakai di dalam sandbox β€” blast radius-nya dinding container, bukan seluruh server. (Pola sama berlaku untuk opencode run / omp -p.)

Checkpoint: dari dalam container, agent tidak bisa membaca /home/agent/.ssh maupun repo lain.

Monitoring runner itu sendiri

Runner yang mati diam-diam = agent yang "bolos" tanpa kabar. Minimum yang layak:

  • Heartbeat: cron tiap jam kirim "βœ… runner hidup, disk 62%, N job hari ini" ke channel Telegram khusus β€” atau pakai healthchecks.io yang justru alert saat ping TIDAK datang.
  • Log terpusat: semua output agent ke file per-hari (/var/log/agent/YYYY-MM-DD.log) supaya kamu bisa audit "apa saja yang dia lakukan semalam".

Checkpoint: matikan service secara sengaja β†’ kamu menerima alert dalam beberapa menit tanpa membuka laptop.

VPS vs homelab, singkat saja​

VPS ($5–10/bln)Homelab (mini PC)
Uptime & jaringanβœ… stabilTergantung listrik/ISP rumah
Data & privasiData di datacenter pihak ketigaβœ… semuanya di rumah
Biaya jangka panjangBerulang selamanyaSekali beli (Β± harga 1–2 tahun VPS)
Cocok untukMulai hari ini, bridge + cron ringanBuild berat, model lokal, banyak container

Mulai dari VPS; pindah ke homelab kalau kebutuhan compute atau privasi menuntut.

Lanjut ke​

Runner yang hidup 24/7 membuat biaya berjalan 24/7 juga β†’ Kontrol Biaya.