Proxmox Hello World
Proxmox Hello World adalah panduan bertahap untuk memahami Proxmox VE dari dasar — bukan sekadar menghafal tombol, melainkan mengerti cara kerja mesinnya. Panduan disusun CLI-first: setiap kali sebuah tugas bisa dilakukan lewat antarmuka web, sebaiknya dicoba juga lewat command line, karena pada lingkungan cluster/HPC nyata antarmuka grafis biasanya tidak tersedia.
Target versi: Proxmox VE 9.x (basis Debian 13 "Trixie").
| Prinsip | Keterangan |
|---|---|
| CLI-first | Biasakan tangan mengetik, bukan mengklik |
| Pahami kenapa | Tiap langkah disertai alasan, bukan instruksi buta |
| Snapshot dulu | Selalu amankan sebelum bereksperimen |
Fase 0 — Pondasi: sistem yang sehat
Wajib dilakukan sekali di awal. Instalasi baru Proxmox mengarah ke enterprise repository yang memerlukan subscription, sehingga apt update akan menghasilkan error 401 Unauthorized. Ini harus diperbaiki lebih dahulu.
0.1 Membuka shell
Pada web UI: klik node (panel kiri) → tombol >_ Shell (pojok kanan atas). Sebuah shell root terbuka langsung di browser, tanpa perlu SSH terpisah.
0.2 Menonaktifkan repo enterprise
Proxmox VE 9 memakai format repositori baru (deb822, file .sources), berbeda dari versi 8 yang berformat baris tunggal. Cara menonaktifkan sebuah repo deb822 adalah menambahkan baris Enabled: false.
echo 'Enabled: false' >> /etc/apt/sources.list.d/pve-enterprise.sources
echo 'Enabled: false' >> /etc/apt/sources.list.d/ceph.sources
Catatan: Repo Ceph ikut dimatikan karena Ceph adalah distributed storage untuk cluster produksi. Pada lab single-node tidak diperlukan, dan repo enterprise-nya hanya menambah error 401.
0.3 Menambahkan repo no-subscription
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
Buat file tersebut dengan perintah:
cat > /etc/apt/sources.list.d/proxmox.sources << 'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
Anatomi file deb822:
| Kunci | Arti |
|---|---|
Types: deb |
Repo paket binary (bukan source code) |
URIs: |
Server tempat mengambil paket |
Suites: trixie |
Codename Debian basis. Proxmox 9 = Debian 13 = trixie. Salah isi → "Release not found"
|
Components: |
Channel; pve-no-subscription tidak butuh lisensi
|
Signed-By: |
Keyring untuk verifikasi tanda tangan paket (anti-tampering) |
0.4 Update dan upgrade
apt update && apt full-upgrade -y
Catatan: Gunakan full-upgrade, bukan upgrade biasa. full-upgrade boleh menambah/menghapus paket bila dependency berubah — penting untuk update kernel Proxmox. upgrade saja kadang menahan paket dan macet.
0.5 (Opsional) Menghilangkan popup "No valid subscription"
Murni kosmetik dan tidak memengaruhi fungsi apa pun. Bila ingin dihilangkan:
sed -i "s/data.status.toLowerCase() !== 'active'/false/g" \
/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy
Catatan: Modifikasi ini akan tertimpa setiap kali paket proxmox-widget-toolkit diperbarui. Jalankan ulang bila perlu.
0.6 Reboot dan verifikasi
reboot
# setelah menyala kembali:
pveversion # ringkas
pveversion -v # detail semua komponen
Fase 1 — Peta mental: anatomi Proxmox
Hierarki
Datacenter ← level paling atas (semua node + setting global)
└── Node (pve) ← satu mesin fisik/host
├── VM (KVM) ← virtual machine penuh, punya kernel sendiri
└── CT (LXC) ← container, berbagi kernel host
VM (KVM) vs Container (LXC)
| Aspek | VM / KVM | Container / LXC |
|---|---|---|
| Isolasi | Penuh (hardware virtual) | Proses (berbagi kernel host) |
| Kernel | Sendiri | Ikut host |
| Overhead | Lebih berat | Sangat ringan |
| Boot | Hitungan detik | Instan |
| OS | Apa saja (Windows, BSD, dll) | Linux saja |
| Use case | Butuh isolasi / OS berbeda | Banyak service Linux ringan |
Catatan: Relevansi HPC: container padat dan murah sehingga bisa ditumpuk banyak di satu host. Namun workload yang butuh kontrol kernel/driver (mis. GPU passthrough, kernel module khusus) lebih cocok di VM.
Lokasi file penting
| Path | Isi |
|---|---|
/etc/pve/ |
Config cluster — filesystem khusus (lihat di bawah) |
/etc/pve/qemu-server/<VMID>.conf |
Config tiap VM |
/etc/pve/lxc/<CTID>.conf |
Config tiap container |
/etc/network/interfaces |
Config jaringan host |
/var/lib/vz/ |
Storage local (ISO, template, backup)
|
Catatan: /etc/pve bukan folder biasa, melainkan pmxcfs (Proxmox Cluster File System) — sebuah FUSE filesystem yang di-backing database SQLite dan otomatis ter-sinkronisasi ke seluruh node cluster. Inilah alasan config VM yang diubah di satu node langsung terlihat di node lain, dan alasan /etc/pve menjadi read-only saat cluster kehilangan quorum.
Fase 2 — Storage
pvesm status # lihat semua storage + kapasitas
Instalasi baru umumnya memiliki dua storage:
| Storage | Tipe | Fungsi |
|---|---|---|
local |
Directory | ISO, template container, backup |
local-lvm |
LVM-thin | Disk virtual VM & container |
Catatan: LVM-thin memakai thin provisioning: sebuah VM bisa "dijanjikan" 32 GB walau fisik baru terpakai 2 GB — alokasi tumbuh sesuai pemakaian. Hemat ruang, tetapi waspadai over-provisioning.
Mengunggah ISO lewat CLI:
cd /var/lib/vz/template/iso/
wget https://...../debian-13-netinst.iso
Fase 3 — VM pertama (KVM)
Cara antarmuka: tombol Create VM lalu ikuti wizard. Cara command line:
# 1. Buat shell VM (ID 100)
qm create 100 --name testvm --memory 2048 --cores 2 \
--net0 virtio,bridge=vmbr0
# 2. Tambah disk 32GB di local-lvm dengan controller virtio-scsi (tercepat)
qm set 100 --scsihw virtio-scsi-pci --scsi0 local-lvm:32
# 3. Pasang ISO sebagai CD-ROM
qm set 100 --ide2 local:iso/debian-13-netinst.iso,media=cdrom
# 4. Atur urutan boot: CD dulu, lalu disk
qm set 100 --boot order=ide2;scsi0
# 5. Nyalakan
qm start 100
Lifecycle command
qm list # semua VM
qm start 100
qm shutdown 100 # shutdown sopan (ACPI)
qm stop 100 # paksa mati
qm reboot 100
qm clone 100 101 --name clone-test # gandakan VM
qm config 100 # lihat semua setting
qm destroy 100 # hapus permanen
Fase 4 — Container (LXC)
# 1. Update daftar template
pveam update
# 2. Lihat template tersedia
pveam available --section system
# 3. Download (nama persis dari output di atas)
pveam download local debian-13-standard_13.x_amd64.tar.zst
# 4. Buat container ID 200
pct create 200 local:vztmpl/debian-13-standard_13.x_amd64.tar.zst \
--hostname ct1 \
--memory 1024 \
--cores 2 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp \
--storage local-lvm \
--password
# 5. Nyalakan & masuk
pct start 200
pct enter 200
Catatan: Container menyala instan dan ringan karena tidak mem-boot kernel sendiri. Perintahnya mirip qm tetapi berawalan pct.
Fase 5 — Networking
cat /etc/network/interfaces
Di sana terdapat vmbr0, sebuah Linux bridge yang berfungsi sebagai virtual switch. Semua VM/container "dicolokkan" ke bridge ini, lalu bridge tersambung ke NIC fisik host, sehingga guest memperoleh IP pada jaringan yang sama dengan host (mode bridged).
vmbr0— switch virtual default, ter-bridge ke NIC fisik- Untuk jaringan terisolasi, buat
vmbr1tanpabridge-portsfisik - Terapkan perubahan tanpa reboot:
ifreload -a
Catatan: Untuk simulasi cluster HPC, sering dibuat bridge internal terpisah untuk traffic antar-node (mis. MPI) agar tidak bercampur dengan jaringan management.
Fase 6 — Snapshot & Backup
Snapshot adalah potret kondisi VM pada satu waktu; cepat, tetapi menempel di disk yang sama dan bukan pengganti backup.
qm snapshot 100 sebelum-eksperimen
qm rollback 100 sebelum-eksperimen
qm delsnapshot 100 sebelum-eksperimen
Backup adalah salinan utuh ke storage lain untuk disaster recovery.
vzdump 100 --storage local --mode snapshot --compress zstd
Backup terjadwal diatur lewat Datacenter → Backup → Add.
Catatan: Kebiasaan penting: lakukan snapshot SEBELUM tiap eksperimen berisiko. Ini jaring pengaman yang membuat berani mengulik.
Fase 7 — Cheat sheet command
| Tool | Fungsi | Contoh |
|---|---|---|
qm |
Manage VM (KVM) | qm list
|
pct |
Manage container (LXC) | pct enter 200
|
pvesm |
Manage storage | pvesm status
|
pveam |
Manage template LXC | pveam available
|
pvecm |
Manage cluster | pvecm status
|
pvesh |
Akses REST API via CLI | pvesh get /nodes
|
pveversion |
Cek versi | pveversion -v
|
journalctl |
Baca log (troubleshooting) | journalctl -xe
|
Catatan: pvesh adalah "senjata rahasia": semua aksi UI sebenarnya memanggil REST API yang sama. Menguasai pvesh berarti mampu mengotomasi apa pun.
Fase 8 — Cluster
Cluster adalah beberapa node Proxmox yang config-nya ter-sinkron via pmxcfs. Manfaatnya: satu UI untuk semua node, live migration VM antar-node, serta High Availability.
# Di node pertama: buat cluster
pvecm create lab-cluster
# Di node lain: gabung (jalankan dari node yang akan bergabung)
pvecm add <IP-node-pertama>
# Cek status
pvecm status
pvecm nodes
Catatan: Untuk uji coba di VirtualBox, kloning VM Proxmox menjadi 2–3 node (tiap node WAJIB beda hostname dan IP). Idealnya 3 node agar ada quorum: cluster butuh mayoritas node hidup untuk mengambil keputusan. Bila hanya 2 node dan satu mati, sisanya kehilangan quorum dan /etc/pve menjadi read-only.
Mindset penutup
- Snapshot sebelum mengulik. Selalu.
- Pahami
/etc/pve— kunci sinkronisasi cluster dan alasan quorum penting. - Semua adalah API. UI hanya pembungkus REST API; kuasai
pvesh. - Paksa CLI walau ada tombol — siapkan tangan untuk lingkungan tanpa GUI.
- Baca log saat error, jangan menebak:
journalctl -xe,qm help <command>.