Maskot beruang kutub NordBastion duduk di bangku batu dalam sebuah ruang berkubah ala Nordik pada malam hari, di samping laptop yang tertutup, menatap rak server di bawah bentuk-bentuk loop dan jam holografik berwarna cyan
Cara · 25 menit praktik langsung·Diperbarui 2026

Jalankan agen AI 24/7 di VPS.
Dari laptop Anda, ke mesin yang tak pernah tidur.

Untuk menjalankan agen AI 24/7 di VPS, Anda butuh empat hal, tidak ada yang rumit: mesin yang tetap menyala, supervisor yang me-restart-nya, rahasia yang tidak pernah masuk ke image, dan batas pengeluaran — ditambah host yang tidak mensyaratkan identitas Anda.

Ringkasan
  • 01

    Sebagian besar agen hanyalah lem (glue) yang terikat I/O di sekitar API model yang di-hosting. Inferensi tidak berjalan di mesin Anda, jadi mesinnya bisa kecil: 2 vCPU dan 4 GB sudah cukup untuk menopang agen single-loop.

  • 02

    Uptime adalah soal supervisor, bukan soal perangkat keras. Sebuah unit systemd atau restart policy Docker — yang sudah di-enable, dan sudah diuji lewat reboot sungguhan — itulah intinya.

  • 03

    Dua hal yang benar-benar bisa mencelakakan: sebuah rahasia yang tertanam di layer image, dan agen tanpa batas pengeluaran yang looping semalaman melawan API bertarif meteran.

Bab 1

Mengapa laptop Anda bukan deployment. Empat pola kegagalan, semuanya membosankan.

Agen yang berjalan di mesin Anda adalah agen yang bekerja, bukan agen yang ter-deploy. Kesenjangannya ada pada empat masalah yang tidak keren, dan tak satu pun berkaitan dengan prompt engineering.

Tidur. Tutup layarnya dan proses langsung disuspend. Manajemen daya sudah membatasi (throttle) pekerjaan di latar belakang jauh sebelum layar benar-benar tertutup, yang menghasilkan versi terburuk dari kegagalan ini: agen yang tetap berjalan, tapi terlambat dan tidak bisa diprediksi.

IP yang terus berganti. Koneksi rumah atau kafe memberi Anda alamat baru setiap kali tersambung ulang. Apa pun yang dibatasi laju (rate-limited) berdasarkan IP, webhook mana pun yang butuh callback stabil, allowlist mana pun yang pernah Anda daftarkan, semuanya akan rusak sesekali.

Reboot. Update sistem operasi me-restart mesin sesuai jadwalnya sendiri. Kecuali agen sudah didaftarkan ke sebuah service manager, yang muncul kembali hanyalah desktop, bukan loop yang berjalan. Kebanyakan orang baru menyadarinya seminggu kemudian.

Berpindah. Anda bepergian, berganti mesin, menginstal ulang. Apa pun yang hanya hidup di shell history Anda tidak bisa direproduksi — agen yang disiapkan dalam satu sore di bulan Maret sama sekali tidak punya prosedur deployment.

Server hanya memperbaiki keempat hal ini, tidak lebih — bukan soal kebenaran (correctness), bukan soal biaya, bukan soal keamanan. Server memberi Anda runtime yang kegagalannya menjadi tanggung jawab Anda sendiri untuk diperbaiki. Curigai siapa pun yang menjualnya sebagai lebih dari itu.

Bab 2

Menentukan ukuran mesin. Tingkatan VPS mana untuk bentuk agen yang mana.

Naluri pertama adalah over-provisioning, karena kecerdasan buatan terdengar berat. Padahal tidak, selama model berjalan di perangkat keras orang lain: agen yang memanggil API yang di-hosting menghabiskan sebagian besar waktunya menunggu I/O jaringan. Bentuk ketiga — menjalankan model itu sendiri — di luar cakupan artikel ini; beban kerja semacam itu lebih membutuhkan GPU daripada sebuah virtual machine.

Bentuk satu — single loop. Satu proses, sebuah loop polling atau terjadwal, API model yang di-hosting, state di SQLite. Inilah bentuk kebanyakan agen indie dan bot monitoring, dan ukurannya benar-benar kecil.

Bentuk dua — small stack. Agen ditambah Postgres, sebuah queue berbasis Redis, sebuah worker, dan vector store. Memory kini menjadi batasan utama — model embedding yang dimuat in-process membutuhkan satu atau dua gigabyte tersendiri.

Dicocokkan dengan katalog: Sentinel (NB-V1 — 2 vCPU, 4 GB RAM, 120 GB NVMe, 1 Gbps, bandwidth tanpa batas, $3.90/month) sudah mencakup bentuk satu dengan ruang lebih. Garrison (NB-V2 — 4 vCPU, 8 GB, 240 GB, $7.90/month) adalah batas bawah yang jujur untuk bentuk dua begitu Postgres dan sebuah queue masuk hitungan. Ravelin (NB-V3 — 8 vCPU, 16 GB, 480 GB, 2.5 Gbps, $16.90/month) untuk beberapa agen yang berbagi satu mesin. Inferensi lokal tempatnya di dedicated hardware.

Kontrak berjalan bulanan, dengan diskon untuk komitmen lebih panjang — 10% untuk tiga bulan, 20% untuk enam bulan, 30% untuk dua belas bulan. Jika agen Anda adalah klien trading yang hanya berjalan di Windows, bukan proses Python, remote-desktop tiers disediakan untuk kasus itu.

Bab 3

Jalur deploy — menjalankan agen AI di VPS dalam waktu sekitar lima belas menit.

Provisioning mesin dengan Ubuntu 24.04 LTS atau Debian 13 — keduanya tersedia saat pemesanan, bersama Ubuntu 22.04, Debian 12, AlmaLinux 9, dan Rocky Linux 9. Anda mendapat kredensial root; hal pertama yang harus dilakukan dengan kredensial itu adalah berhenti memakainya. Jika SSH key authentication masih terasa asing, baca dulu panduan hardening yang ditautkan di bawah.

1 — Buat service user. adduser --system --group --home /srv/agent agent. Agen sebaiknya tidak berjalan sebagai root dan tidak memiliki interactive shell. Satu perintah sekarang, dan blast radius tetap kecil nanti jika sebuah tool yang dipanggilnya justru dibalikkan melawannya.

2 — Pindahkan kode ke mesin. git clone ke /srv/agent, atau rsync jika Anda tidak ingin meninggalkan deploy key di server. Kunci (pin) dependensinya: sebuah lockfile adalah pembeda antara redeploy yang hasilnya konsisten dan redeploy yang malah mengejutkan Anda.

3 — Bangun environment. python3 -m venv /srv/agent/.venv, lalu install dari lockfile memakai pip milik virtualenv tersebut. Atau install uv dan biarkan ia mengelola baik interpreter maupun lockfile-nya. Keduanya sama-sama boleh; mencampur keduanya tidak.

4 — Jalankan sekali secara manual. sudo -u agent /srv/agent/.venv/bin/python -m agent --once. Jangan lewati langkah ini untuk langsung membuat service unit. Sembilan dari sepuluh kegagalan di titik ini adalah environment variable yang hilang atau sebuah path yang relatif terhadap laptop Anda, dan keduanya jauh lebih jelas terbaca di terminal dibanding di journald.

5 — Serahkan ke supervisor. Itulah bab berikutnya. Inilah yang mengubah skrip yang tadinya Anda jalankan sendiri menjadi service yang dimiliki oleh mesin itu. Jika seluruh rangkaian ini memakan waktu jauh lebih lama dari lima belas menit, penyebabnya hampir selalu adalah dependensi implisit pada mesin pengembangan Anda — sebuah binary global, sebuah kredensial di shell profile Anda, sebuah path di luar repository.

Bab 4

Menjaganya tetap hidup 24/7. systemd, Docker, dan jebakan crash-loop.

Proses yang Anda jalankan lewat sesi SSH akan mati ketika sesi itu berakhir, dan tidak akan kembali setelah reboot. Supervisi bukan sesuatu yang opsional, dan Anda punya dua pilihan yang masuk akal.

systemd, untuk satu proses tunggal. Sebuah unit di /etc/systemd/system/agent.service dengan User=agent, WorkingDirectory=/srv/agent, ExecStart yang menunjuk ke interpreter virtualenv, Restart=always dan RestartSec=5. Lalu systemctl daemon-reload, lalu systemctl enable --now agent. Bagian enable inilah yang bertahan melewati reboot; menjalankan (start) tanpa enable adalah cara paling umum untuk kehilangan agen tiga minggu kemudian.

Docker, untuk sekumpulan hal. Ketika agen memiliki proses-proses saudara — sebuah database, sebuah queue, sebuah headless browser — deskripsikan semuanya dalam satu file Compose dengan restart: unless-stopped pada tiap service. unless-stopped berbeda dari always dalam satu hal yang penting: container yang sengaja Anda hentikan akan tetap berhenti meski daemon-nya di-restart.

Jebakan crash-loop. Secara default, systemd membatasi laju restart. Crash cukup sering dalam satu interval dan unit masuk ke status failed lalu berhenti mencoba — agen yang tampak mati diam-diam padahal unit file-nya jelas-jelas menyatakan Restart=always. Atur StartLimitIntervalSec=0 untuk mencoba ulang tanpa batas, dan naikkan RestartSec agar agen yang rusak tidak menghabiskan satu core semalaman hanya untuk mencoba ulang.

Liveness bukan berarti sehat. Sebuah loop yang macet pada socket read selama sembilan jam tetap terlihat sebagai proses yang berjalan menurut segala ukuran yang bisa dilihat systemd. Sediakan sebuah heartbeat: sebuah watchdog dengan WatchdogSec, sebuah Docker HEALTHCHECK, atau sebuah file timestamp yang disentuh agen di setiap siklusnya, dilengkapi timer yang memberi peringatan begitu file itu basi (stale).

Bab 5

Rahasia. Environment file yang tidak boleh pernah sampai ke image.

Agen memegang materi yang jauh lebih berbahaya dibanding aplikasi web. API key model adalah instrumen pengeluaran; trading key adalah instrumen dengan leverage; wallet key adalah dana itu sendiri. Dan tidak seperti aplikasi web, agen bertindak berdasarkan teks yang tidak ia tulis sendiri, yang membuat batas antara agen yang memegang sebuah key dan penyerang yang memegangnya menjadi tipis.

Jauhkan dari image. Nilai ENV dan ARG di Dockerfile tertulis ke dalam layer image dan bisa dibaca lewat docker history oleh siapa pun yang memperoleh image itu. Gunakan env_file: di Compose, atau EnvironmentFile= di unit systemd, dan simpan file itu di luar build context.

Jauhkan dari repository. .gitignore dan .dockerignore pada commit pertama, bukan commit kelima puluh. Key yang pernah ter-commit dianggap bocor bahkan setelah commit itu ditulis ulang, karena objeknya tetap bertahan di clone dan fork. Lebih baik rotasi key-nya daripada menulis ulang history.

Batasi apa yang bisa dijangkau file itu. Jadikan service user sebagai pemilik environment file dan atur mode 600. Dikombinasikan dengan service user non-root, dependensi lain di mesin yang bocor tidak bisa begitu saja membaca key Anda dari disk.

Batasi cakupan tiap key di sisi penerbitnya. Satu key per agen, dengan permission paling sempit yang ditawarkan penyedia — read-only jika membaca saja sudah cukup, penarikan dana dinonaktifkan pada exchange key, dan IP-allowlisted ke server. IP yang stabil adalah keuntungan tersembunyi dari berpindah keluar dari laptop: allowlisting akhirnya menjadi mungkin. Jika beberapa orang butuh kredensial yang sama, taruh di balik self-hosted vault pada panduan pendampingnya.

Bab 6

Penjadwalan. Loop, timer, dan timezone yang bisa mencelakakan Anda.

"Berjalan terus-menerus" bisa berarti tiga arsitektur yang berbeda, dan memilih yang salah adalah sumber umum dari pekerjaan yang terduplikasi dan run yang terlewat.

Loop resident. Satu proses berumur panjang yang tidur di antara tiap siklus. Paling mudah dipahami, dan menjadi pilihan default yang tepat. Kelemahannya ada pada state: segala sesuatu yang ada di memory akan hilang saat restart, jadi apa pun yang harus bertahan melewati crash tempatnya di SQLite atau Postgres, bukan di sebuah variabel.

Run terjadwal. Sebuah proses yang start, mengerjakan satu unit pekerjaan, lalu keluar. Timer systemd dengan OnCalendar adalah alat yang lebih baik di sini, terutama karena Persistent=true: setelah downtime, timer yang persistent akan tetap menjalankan run yang terlewat, sedangkan cron begitu saja melewatkannya.

Queue. Sebuah producer memasukkan task ke antrean, worker mengonsumsinya. Inilah yang Anda butuhkan begitu task datang lebih cepat daripada bisa diselesaikan. Ini juga memberi Anda retry, penanganan dead-letter, dan batas concurrency.

Dua aturan apa pun yang Anda pilih. Buat setiap task idempotent — supervisor yang me-restart saat crash akan mencoba ulang task, dan task yang dicoba ulang tidak boleh double-post atau double-order. Dan biarkan jam server tetap di UTC, konversikan hanya di titik-titik tepinya: jadwal yang bergeser satu jam dua kali setahun adalah bug yang melelahkan untuk dilacak.

Bab 7

Memberi agen sejumlah tool. Sebuah tool server pada mesin yang sama.

Agen tanpa tool hanyalah sebuah chat loop. Tool-tool itulah yang memungkinkannya membaca repository, melakukan query ke database, menempatkan order, atau membuat issue — dan begitu agen hidup di sebuah server, tool-tool itu pun seharusnya demikian.

Model Context Protocol telah menjadi cara umum untuk mengekspos tool-tool tersebut, dan sebuah server yang Anda jalankan secara privat mudah diletakkan tepat di samping agen: mesin yang sama, interface privat yang sama, tanpa perlu exposure publik. Panduan pendamping membahasnya secara lengkap — hosting a remote MCP server menguraikan TLS, transport streamable-HTTP, OAuth, dan agent card, sementara sudut pandang hosting tanpa ID membahas stack yang sama dari sisi identitas.

Bind dulu ke localhost. Jika satu-satunya konsumen adalah agen di mesin yang sama, tool server tidak punya alasan untuk membuka port publik. Bind ke alamat loopback dan lewati sertifikatnya. Ekspos secara publik hanya ketika ada mesin kedua yang membutuhkannya — dan saat itu ia butuh TLS dan autentikasi, bukan hanya salah satunya.

Beri tool otoritas paling minim yang tetap berfungsi. Agen memutuskan tool mana yang dipanggil berdasarkan teks, dan sebagian teks itu datang dari luar. Prompt injection bukan sekadar hipotesis bagi agen yang membaca halaman web atau inbox: itu adalah kasus yang memang diperkirakan terjadi. Tool yang hanya bisa membaca tidak bisa dibujuk untuk menulis. Di tempat sebuah tool memang harus menulis, buat jalur yang destruktif mensyaratkan konfirmasi dari manusia.

Jika Anda membangun tool untuk agen milik orang lain, bukan agen Anda sendiri, machine API dan the agent-facing surface mendokumentasikan bagaimana platform ini mengekspos provisioning langsung ke sebuah agen.

Bab 8

Observability dan biaya. Apa yang perlu dicatat, dan kill-switch untuk kondisi yang lepas kendali.

Dua pola kegagalan mendominasi deployment agen di dunia nyata, dan tak satu pun berupa crash. Satu adalah agen yang berjalan sempurna namun tidak menghasilkan apa pun yang berguna. Yang lain adalah agen yang berjalan sempurna namun menghasilkan tagihan API berdigit empat dalam semalam.

Catat bentuknya (shape), bukan isinya. Timestamp, task id, jumlah step, nama-nama tool yang dipanggil, total token, durasi, outcome. Itu sudah menjawab setiap pertanyaan operasional yang benar-benar akan Anda tanyakan. Prompt dan completion secara utuh adalah transkrip lengkap dari segala sesuatu yang pernah diminta dari agen, dalam plaintext, di sebuah disk yang berada di gedung milik orang lain.

Batasi retention. journald terus bertambah besar sampai Anda memerintahkannya untuk berhenti. SystemMaxUse dan MaxRetentionSec di journald.conf memasang batas atas baik untuk ukuran maupun usia. Tanpa itu, agen yang cerewet bisa memenuhi disk dalam hitungan minggu, dan disk yang penuh gagal dengan cara yang jauh lebih sulit dibaca dibanding sebuah crash bersih.

Tiga lapisan kendali pengeluaran. Di sisi penyedia, sebuah hard cap pada API key — satu-satunya batas yang tidak bisa dilewati oleh bug apa pun di kode Anda, dan justru yang paling sering dilewatkan orang. Di dalam agen, sebuah penghitung token per run dengan ambang batas penghentian. Di sekeliling agen, jumlah step maksimum dan timeout berbasis waktu nyata, sehingga sebuah model yang berdebat dengan dirinya sendiri berhenti setelah dua puluh iterasi, bukan empat ribu.

Bangun kill-switch sebelum Anda membutuhkannya. Satu perintah yang menghentikan segalanya: systemctl stop agent, atau docker compose down. Pastikan itu tidak mensyaratkan sebuah laptop dengan key tertentu di dalamnya. Bedanya antara semalam yang buruk dan sebulan yang buruk adalah apakah menghentikan kondisi yang lepas kendali itu memakan waktu sepuluh detik atau satu jam.

Bab 9

Batas dasar identitas. Apa yang diketahui host — dan dari apa saja ia tidak bisa melindungi Anda.

Agen adalah proses berumur panjang dengan kredensial, bertindak atas nama Anda dari sebuah alamat yang stabil, secara terus-menerus. Itu membuat catatan penyewaan (rental record) menjadi jauh lebih berarti dibanding untuk sebuah situs statis: agen sedang melakukan hal-hal yang bisa dikaitkan kepada Anda, setiap jam, selama berbulan-bulan.

Batas dasarnya di sini hanyalah sebuah alamat email dan password untuk mendaftar, pembayaran dalam delapan aset — Bitcoin, Ethereum, Tether di dua chain, Monero, Litecoin, TRON, dan Solana — dan tanpa dokumen identitas pada tahap mana pun. Pusat datanya berada di empat rezim konstitusional Nordik: Stockholm, Helsinki, Oslo, dan Reykjavík. operating doctrine menjabarkan apa saja yang disimpan; network page membahas soal routing.

Sekarang bagian batasannya, yang jauh lebih penting daripada janji pemasarannya. Host yang tidak meminta identitas menghapus catatan penyewaan. Ia tidak menyentuh lapisan inferensi: agen Anda melakukan autentikasi ke penyedia model dengan sebuah key yang terikat pada satu akun, dari IP yang stabil, pada setiap panggilan. Jika akun itu terdaftar atas nama legal Anda — dan bagi kebanyakan orang memang begitu — identitas sudah terbentuk di sana, terlepas dari siapa yang menyewa mesinnya. Lapisan host hanya menghapus satu mata rantai: mata rantai yang nyata, dan hanya satu itu.

Yang mengikutinya tidak ada yang keren. Compartmentalise: satu agen, satu server, satu key, satu wallet. Harden mesin itu pada hari pertama, bukan hari ketiga puluh — first-hour checklist adalah satu jam yang layak dihabiskan untuk sebuah mesin yang berjalan tanpa pengawasan selama berbulan-bulan. Jika agen harus menjangkau sebuah jaringan privat, hentikan koneksinya di server lewat sebuah tunnel, alih-alih mengekspos service — tunnel guide membahas konfigurasinya. Dan bayar dengan kripto dari sebuah wallet yang bukan wallet tempat agen Anda melakukan trading.

Tak satu pun dari ini eksotis, dan tak satu pun merupakan jaminan. Ini hanyalah disiplin biasa dalam menjalankan sesuatu yang bertindak atas nama Anda saat Anda sedang tidur — dan itulah seluruh makna dari operasi yang berkelanjutan. Sisa kluster panduan lainnya ada di guides index.

FAQ · Agen di VPS

Pertanyaan, dijawab.

Tujuh pertanyaan yang diajukan developer sebelum memindahkan agen keluar dari localhost — dan pada bulan pertama sesudahnya.

Berapa banyak VPS yang saya butuhkan untuk menjalankan agen AI 24/7?

Lebih sedikit dari yang dibayangkan orang, karena inferensi berjalan di perangkat keras penyedia, bukan milik Anda. Agen yang memanggil API model yang di-hosting dan menjalankan loop polling adalah proses yang terikat I/O (I/O-bound): tingkatan Sentinel (2 vCPU, 4 GB RAM, 120 GB NVMe, $3.90/month) sudah lebih dari cukup. Naik ke Garrison (4 vCPU, 8 GB, $7.90/month) begitu Anda menambahkan Postgres, sebuah queue, dan model embedding lokal.

Haruskah saya menggunakan systemd atau Docker untuk menjaga agen tetap berjalan?

Keduanya bisa dipakai; yang berbeda adalah pola kegagalannya. Unit systemd dengan Restart=always adalah jalan tersingkat untuk satu proses tunggal dan memberi Anda journald, batas resource, serta urutan boot secara gratis. Docker dengan restart: unless-stopped lebih baik ketika agen memiliki proses-proses saudara (siblings), karena Compose mendeskripsikan seluruh kumpulan itu dalam satu file. Yang lebih penting adalah Anda benar-benar mengaktifkannya (enable), dan mengujinya lewat reboot sungguhan sebelum ditinggal begitu saja.

Mengapa agen saya berhenti restart setelah beberapa kali crash?

Karena systemd membatasi laju restart (rate-limit). StartLimitBurst dan StartLimitIntervalSec mengizinkan sejumlah kecil restart dalam jendela waktu singkat; lewati batas itu dan unit masuk ke status failed lalu tetap di sana, yang tampak persis seperti kematian diam-diam. Perbaiki penyebab crash-nya — itu jawaban yang benar — atau atur StartLimitIntervalSec=0 untuk menonaktifkan pembatas dan RestartSec=10 agar agen yang crash-loop tidak menghabiskan satu core hanya untuk mencoba ulang terus-menerus.

Di mana saya menaruh API key?

Di dalam file yang tidak pernah dilihat oleh image container. Simpan environment file di luar build context, dirujuk lewat EnvironmentFile= pada unit systemd atau env_file: pada Compose, dimiliki oleh service user dengan mode 600. Jangan pernah memakai ENV atau ARG di Dockerfile untuk sebuah rahasia: nilai-nilai itu akan tertanam permanen di layer image dan bisa dibaca lewat docker history. Tambahkan file itu ke .gitignore dan .dockerignore sebelum commit pertama.

Bagaimana cara mencegah agen menghabiskan seluruh anggaran API saya semalam?

Tiga lapisan, dan Anda perlu ketiganya. Di sisi penyedia: batas pengeluaran keras (hard cap) pada API key, satu-satunya batas yang tidak bisa dilewati oleh bug apa pun di kode Anda. Di dalam agen: hitung token atau jumlah panggilan per run dan hentikan begitu melewati ambang batas. Di sekeliling agen: batas jumlah langkah per task dan timeout berbasis waktu nyata (wall-clock). Tidak ada host yang bisa melakukan ini untuk Anda — VPS adalah kapasitas sewaan, bukan penjaga anggaran pada API milik orang lain.

Apa yang tidak boleh pernah saya tulis ke log agen?

Prompt dan completion secara utuh, argumen tool mentah, API key, materi wallet, dan apa pun yang diketik pengguna. Sebagai gantinya, catat bentuk (shape) dari run itu sendiri: timestamp, task id, jumlah step, nama tool, total token, durasi, dan outcome. Log agen yang terlalu verbose adalah transkrip lengkap dari segala sesuatu yang pernah diminta dari agen, dalam plaintext, di disk yang secara fisik tidak Anda kendalikan.

Apakah host tanpa KYC membuat agen saya anonim?

Tidak, dan penting untuk bersikap presisi soal ini. Pendaftaran tanpa ID dan pembayaran kripto berarti host tidak memiliki identitas legal untuk dilekatkan ke server. Itu tidak mengubah apa pun pada penyedia model: agen Anda melakukan autentikasi ke API tersebut dengan sebuah key yang terikat pada satu akun, dari IP server yang stabil, pada setiap panggilan. Lapisan host hanya menghapus satu mata rantai — catatan penyewaan (rental record) — dan hanya itu yang dihapusnya.

Dapatkan metalnya

Sewa VPS tanpa KYC, bayar dengan kripto, pindahkan agen Anda keluar dari laptop malam ini juga.

Sentinel — 2 vCPU, 4 GB RAM, 120 GB NVMe, bandwidth tanpa batas, $3.90/month — mampu menopang agen single-loop dengan ruang tersisa untuk tool server-nya di sampingnya. Alamat email dan password untuk mendaftar; tanpa dokumen apa pun di tahap mana pun.

Terakhir ditinjau · 2026-08-24 · Sumber · Manual pages systemd.service, systemd.timer, dan journald.conf, dokumentasi Docker restart-policy dan Compose, spesifikasi Model Context Protocol, katalog NordBastion · Kadence · tahunan