Server kantor itu sudah lama punya satu kebiasaan: begitu listrik mati lalu hidup lagi, komputernya memang menyala sendiri, tapi VM di dalamnya tetap tidur. Layanan di dalam VM itu baru hidup lagi kalau login ke server, lalu menyalakan VM-nya manual.
Makanya suatu hari saya sengaja merestart server itu pake remote, cuma buat membuktikan satu hal: kalau tidak ada siapa pun yang login, VM-nya mau menyala sendiri atau tetap tidur begitu saja.
Hasil tesnya ada di akhir catatan ini, tapi yang membuat catatan ini layak ditulis justru perjalanan ke sananya: ada tampilan yang sempat saya baca salah, ada tombol yang nyaris saya pencet sampai VM-nya mati beneran, dan ada kode tanggal aneh dari tahun 1999. Saya tulis semuanya di sini, supaya kalau suatu hari saya harus memasang hal yang sama di mesin lain, saya tinggal baca ulang, tidak perlu mengulang bingungnya dari nol.
Daftar Isi
- 1. Masalah Lama: Hostnya Nyala, VM-nya Masih Tidur
- 2. Kenapa Bukan Auto-Login Saja
- 3. Bikin Task-nya di Task Scheduler
- 4. Bagian yang Sempat Bikin Bingung
- 5. Tes Pertama: Klik Run
- 6. Jebakan Waktu Mau Nutup Konsol
- 7. Tes Sebenarnya: Restart dari Rumah
- 8. Hal yang Saya Pelajari
- 9. Penutup
1. Masalah Lama: Hostnya Nyala, VM-nya Masih Tidur
Di kantor ada satu PC server yang menjalankan Windows. Di dalam Windows itu ada VirtualBox, dan di dalam VirtualBox ada satu VM Ubuntu yang jadi mesin produksinya. Isinya beberapa layanan yang dipakai sehari-hari: otomasi, dashboard, dan beberapa layanan pendukung lain. Di catatan ini VM-nya saya sebut saja server-ubuntu.
Susunan bertingkat seperti itu ada konsekuensinya setiap kali listrik bermasalah. Komputer fisiknya sebenarnya sudah diatur supaya menyala sendiri begitu listrik kembali. Jadi bagian pertama selalu beres: hostnya hidup lagi.
Masalahnya, VM di dalamnya tidak ikut menyala. Dia tetap mati sampai ada orang yang datang, login ke Windows, membuka VirtualBox, dan menyalakan VM-nya secara manual. Selama belum ada yang melakukan itu, semua layanan di dalamnya ikut mati, padahal mesin fisiknya sudah hidup dari tadi.
Cara manualnya juga ada aturan anehnya, ini yang dulu diajarkan ke saya waktu pertama kali belajar: setelah VM dinyalakan, akan muncul jendela konsol berwarna hitam, dan jendela itu tidak boleh ditutup. Kalau ditutup, VM-nya ikut mati. Jadi selama bertahun-tahun polanya begitu. Nyalakan manual, lalu jendelanya dibiarkan saja, jangan disentuh.
2. Kenapa Bukan Auto-Login Saja
Ide paling gampang yang sempat terpikir oleh saya: buat saja Windows-nya login otomatis setiap habis restart, lalu taruh VM-nya di daftar program yang berjalan setelah login. Selesai, kan?
Ternyata cara itu saya urungkan. Alasannya keamanan. Auto-login itu artinya password akun disimpan di Windows dalam bentuk yang bisa dibaca kembali. Server ini bukan server yang diam sendirian di pojok ruangan, dia terhubung ke internet dan layanannya bisa diakses dari luar. Rasanya sayang saja, pintu depannya sudah dikunci, tapi kuncinya digantung di sebelah pintu.
Jadi rencananya saya ubah. Halaman login Windows tetap ada dan tetap mengunci seperti biasa. Yang dibuat menyala otomatis adalah VM-nya saja, berjalan sebelum ada yang login, dan berjalan headless, alias tanpa jendela sama sekali. Tidak ada lagi jendela hitam yang tidak boleh ditutup itu.
Alatnya ternyata sudah bawaan Windows sendiri: Task Scheduler. Tidak perlu memasang program tambahan apa pun.
3. Bikin Task-nya di Task Scheduler
Di Task Scheduler, saya pilih Create Task. Bukan Create Basic Task, karena yang versi penuh ini punya pilihan jalan sebelum login itu.
Tab General
| Name | AutoStart server-ubuntu |
| Akun yang menjalankan | SERVERKU\Administrator, yaitu akun pemilik VM-nya |
| Pilihan jalan | Run whether user is logged on or not |
| Do not store password | Tidak dicentang |
| Run with highest privileges | Dicentang |
Ada dua hal penting di tab ini. Pertama, akunnya jangan diganti ke SYSTEM. Daftar VM di VirtualBox itu tersimpan mengikuti akun pemiliknya. Kalau task-nya dijalankan sebagai SYSTEM, dia tidak akan menemukan VM-nya, dan kegagalannya diam-diam saja, tidak ada pesan error yang jelas.
Kedua, pilihan Do not store password memang sengaja tidak saya centang. Justru password-nya perlu disimpan, karena itu syaratnya task ini bisa berjalan sebelum ada yang login. Nanti waktu task-nya disimpan, Windows akan meminta password akun itu satu kali. Itu memang bagian dari prosesnya, bukan error.
Bagian Configure for di tab ini masih tertulis Windows Vista / Windows Server 2008 pada punya saya. Itu saya biarkan saja, ternyata tidak berpengaruh apa-apa ke jalan atau tidaknya task ini.
Tab Triggers
| Begin the task | At startup |
| Delay task for | 30 seconds (dicentang) |
| Enabled | Dicentang |
Jeda 30 detik itu saya pasang supaya Windows-nya selesai dulu mengurus dirinya sendiri waktu booting, baru VM-nya dinyalakan. Pilihan lain di tab ini, seperti pengulangan jadwal dan tanggal kedaluwarsa, semuanya saya biarkan tidak dicentang.
Tab Actions
Isinya satu perintah saja. Ini bagian intinya:
| Action | Start a program |
| Program/script | C:\Program Files\Oracle\VirtualBox\VBoxManage.exe |
| Add arguments | startvm "server-ubuntu" --type headless |
Program : C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
Argumen : startvm "server-ubuntu" --type headless
Kata headless di argumen itu yang membuat VM-nya menyala tanpa jendela. Nama VM di dalam tanda kutip harus persis sama dengan nama yang tertulis di VirtualBox, huruf besar kecilnya juga. Salah satu huruf saja, perintahnya gagal.
4. Bagian yang Sempat Bikin Bingung
Di dua tab terakhir ini saya sempat bolak-balik bertanya, karena tampilannya tidak sama persis dengan yang saya bayangkan.
Tab Conditions: Centang yang Abu-abu
Di bagian Power ada dua pilihan yang bertumpuk. Pilihan induknya, Start the task only if the computer is on AC power, sudah saya hilangkan centangnya. Tapi pilihan di bawahnya, Stop if the computer switches to battery power, masih kelihatan ada centangnya.
Ternyata pilihan kedua itu warnanya abu-abu alias tidak aktif. Dia anak dari pilihan induknya. Induknya mati, anaknya ikut tidak berlaku, walaupun gambar centangnya masih kelihatan. Jadi di tab Conditions ini intinya: semua syarat saya matikan. Task-nya harus jalan tanpa menunggu komputer diam dulu, tanpa menunggu listrik tertentu, dan tanpa menunggu jaringan tertentu.
Tab Settings: Tiga Pilihan yang Artinya Samar
Run task as soon as possible after a scheduled start is missed saya centang. Artinya kalau momen startup-nya sempat terlewat, task-nya tetap dijalankan begitu ada kesempatan, tidak dibiarkan hilang begitu saja.
Stop the task if it runs longer than saya hilangkan centangnya. Saya tidak mau ada batas waktu yang berpotensi menghentikan task penahan VM ini.
Yang paling membuat saya bertanya adalah pilihan paling bawah:
If the task is already running, then the following rule applies: Do not start a new instance
Artinya ternyata sederhana. Kalau task ini sedang berjalan, misalnya dia sedang menyalakan VM waktu komputer baru hidup, lalu di saat yang sama ada pemicu kedua, entah dari saya yang iseng mengklik Run atau dari trigger yang terulang, Windows tidak akan menjalankan perintahnya dua kali. Ini pengaman supaya VirtualBox tidak disuruh menyalakan VM yang sama dua kali barengan, yang ujungnya cuma menghasilkan pesan error bahwa VM-nya sudah terkunci atau sudah berjalan.
Satu lagi, If the running task does not end when requested, force it to stop, pada punya saya tercentang dan saya biarkan. Itu hanya berlaku kalau ada orang yang sengaja mengakhiri task ini dan task-nya menolak berhenti. Dia tidak akan mematikan VM secara tiba-tiba selama semua berjalan normal.
5. Tes Pertama: Klik Run
Task selesai dibuat dan statusnya Ready. Tapi status Ready itu baru separuh bukti. Task-nya harus dicoba dijalankan beneran.
Saya klik kanan task-nya, lalu pilih Run. Di daftar Task Scheduler, statusnya berubah menjadi Running. Awalnya saya mengira status itu hanya sebentar lalu kembali Ready. Ternyata tidak, dia tetap Running. Dan itu memang benar: status Running itu artinya proses penahan VM-nya sedang hidup. Selama VM-nya menyala, task-nya akan tertulis Running.
Di sinilah saya sempat dibuat bingung oleh kolom Last Run Result. Isinya tertulis begini:
The task has not yet run. (0x41303)
Kolom tanggalnya juga aneh, tertulis 30 November 1999. Kedengarannya seperti error, apalagi ada kode segala. Ternyata bukan. Kolom Last Run itu mencatat menjalankan sebelumnya yang sudah selesai. Ini menjalankan saya yang pertama, dan dia belum selesai karena VM-nya memang sedang ditahan hidup. Karena belum ada catatan sebelumnya, Windows mengisinya dengan nilai kosongnya dia: kode 0x41303 dan tanggal tahun 1999 itu. Jadi selama statusnya Running, kolom itu abaikan saja.
Bukti penentunya bukan di Task Scheduler, tapi di VirtualBox-nya langsung:
VM server-ubuntu statusnya Running dengan panah hijau, sementara VM satunya tetap Powered Off seperti yang memang saya mau. Tes pertama lulus.
Catatan penting yang saya tulis besar-besar buat diri saya sendiri: jangan pernah mengklik End pada task ini. Mengakhiri task itu sama dengan membunuh proses penahan VM-nya secara paksa. Persis seperti menutup jendela hitam zaman dulu, cuma sekarang jendelanya tidak kelihatan.
6. Jebakan Waktu Mau Nutup Konsol
Walaupun VM-nya headless, layarnya sebenarnya tetap ada, cuma disembunyikan. Kalau saya mau melihat terminal Ubuntu-nya seperti dulu, saya tinggal membuka VirtualBox, memilih VM-nya, lalu mengklik tombol Show. Jendela konsol hitamnya akan muncul, lengkap dengan prompt login seperti biasa.
Nah, jebakannya muncul waktu saya mau menutup jendela konsol itu:
Muncul dialog Close Virtual Machine dengan empat pilihan. Dan pilihan yang sudah terpilih dari sananya adalah yang paling bawah: Power off the machine. Kalau waktu itu saya langsung mengklik OK tanpa membaca, VM yang baru saja susah payah dinyalakan itu akan mati lagi saat itu juga, dan matinya paksa pula.
Pilihan yang benar untuk menutup konsol tanpa mematikan VM adalah yang paling atas: Continue running in the background. Pilih itu, baru klik OK. Jendela konsolnya tertutup, VM-nya tetap berjalan di belakang layar.
Jadi sekarang aturannya berubah total dari zaman dulu. Menutup jendela VirtualBox Manager itu aman. Menutup jendela Task Scheduler itu aman. Bahkan disconnect dari remote dan membiarkan Windows-nya terkunci di halaman login juga aman. Yang berbahaya cuma dua: mengklik End pada task-nya, dan memilih Power off pada dialog penutup konsol itu.
7. Tes Sebenarnya: Restart dari Rumah
Tes klik Run tadi baru membuktikan perintahnya benar. Yang belum terbukti adalah trigger-nya: apakah dia benar-benar berjalan waktu Windows booting, sebelum ada yang login?
Buat ngetes itu, urutannya saya buat hati-hati. VM-nya tidak saya matikan paksa. Saya buka konsolnya lewat tombol Show tadi, login ke Ubuntu, lalu menjalankan perintah ini:
sudo poweroff
Di layar konsol kelihatan semua layanannya berhenti satu-satu dengan tulisan OK, termasuk Docker-nya. Itu tanda matinya rapi, bukan dicabut paksa. Setelah itu status VM di VirtualBox berubah menjadi Powered Off. Barulah host Windows-nya saya restart, dari rumah, lewat remote desktop.
Sambungan remote-nya putus selama servernya mati, itu normal. Beberapa menit kemudian saya sambung lagi, dan yang muncul adalah ini:
Server kantornya berhenti persis di halaman login Windows. Terkunci, tidak ada yang login, dan saya memang sengaja tidak login dulu.
Dalam keadaan belum login itu, saya buka alamat salah satu layanan yang jalan di dalam VM, dari browser di rumah. Contohnya di catatan ini saya tulis otomasi.contohdomain.my.id. Dan halaman login layanannya muncul dengan normal:
Buat saya itu bukti finalnya, dan tidak bisa dibantah. Layanannya hidup, padahal Windows-nya masih duduk di halaman login dan belum ada satu orang pun yang masuk. Berarti runtutannya benar-benar berjalan sendiri: host menyala, jeda 30 detik, task berjalan sebelum login, VM menyala headless, lalu semua layanan di dalamnya ikut naik.
Setelah bukti itu dapat, barulah saya login ke Windows-nya buat melihat sendiri status VM-nya Running di VirtualBox, sekadar penutup.
8. Hal yang Saya Pelajari
- Autostart VM dan auto-login Windows itu dua hal yang berbeda jauh. Yang pertama bisa didapat tanpa mengorbankan yang kedua.
- Task Scheduler itu jauh lebih bisa diandalkan daripada kelihatannya, asal tiga tab intinya diisi dengan benar: akun pemilik VM, trigger At startup, dan perintah headless-nya.
- Status task yang tertulis Running terus-menerus itu belum tentu error. Buat task penahan VM seperti ini, Running justru tanda dia sedang bekerja.
- Kode 0x41303 dan tanggal tahun 1999 di kolom Last Run itu bukan kerusakan. Itu nilai kosong dari Windows untuk task yang belum pernah menyelesaikan satu putaran pun.
- Dialog penutup konsol VirtualBox itu jebakan beneran, karena pilihan bawaannya adalah Power off. Baca dulu sebelum mengklik OK.
- Tes yang meyakinkan itu bukan yang semua langkahnya saya awasi sambil login. Tes yang meyakinkan adalah yang saya biarkan berjalan sendiri dalam keadaan terkunci, lalu saya periksa hasilnya dari luar.
- Satu utang catatan buat diri sendiri: kalau suatu hari password Administrator Windows ini diganti, password yang tersimpan di dalam task ini harus diisi ulang. Kalau tidak, autostart-nya akan gagal diam-diam.
9. Penutup
Sekarang pola lama itu sudah pensiun. Tidak ada lagi cerita hostnya sudah menyala tapi layanannya masih mati menunggu ada orang datang menyalakan VM secara manual. Dan tidak ada lagi jendela hitam yang harus dijaga jangan sampai tertutup.
Habis mati lampu pun urutannya sekarang sama dengan tes restart kemarin: listrik kembali, host menyala sendiri, VM-nya menyusul sebelum ada yang login, layanannya naik sendiri. Saya tinggal memeriksa dari mana saja.
Semoga catatan ini bermanfaat, terutama buat saya sendiri kalau nanti lupa dan harus memasang hal yang sama di mesin yang lain.
Disclaimer
Catatan belajar pribadi, bukan tutorial resmi. Proses memasang dan mengetesnya dibantu AI; nama VM, akun, dan alamat layanan di tulisan dan gambar sudah diganti dengan contoh dummy.











