VM-Beheer
VM-lijst
De VM-lijst op /{locale}/vms toont:
- VMs die eigendom zijn van de huidige gebruiker
- VMs die gedeeld zijn met de huidige gebruiker (gemarkeerd als gedeeld)
- VM-statusindicator (actief, gestopt, etc.)
- Snelle info: hostnaam, IP-adres, RAM, vCPUs, OS-schijf
VM aanmaken
Het aanmaken van een VM op /{locale}/vms/create gebruikt een formulier met:
- Hostnaam-invoer
- SSH-openbare sleutelveld (gevalideerd met Zod)
- RAM-schuifregelaar (in GiB, opgeslagen als MiB)
- vCPU-schuifregelaar
De aanmaakpijplijn (createVmAction):
- Controleert beschikbare resources tegen de
allowedRam/allowedCpus-limieten van de gebruiker - Wijst automatisch het volgende beschikbare VM-ID toe
- Vindt een beschikbaar IP uit het
172.16.100.2-172.16.103.254-bereik - Kloont Proxmox-template 9000 (Debian)
- Vergroot schijf met +20G
- Past cloud-init-configuratie toe (gebruiker, SSH-sleutels, IP, DNS)
- Start de VM
- Maakt een database-record aan
- Voert een rollback uit (verwijdert DB-record) bij mislukking
VM-detail
De VM-detailpagina op /{locale}/vms/[vm] toont:
- VM-informatie (hostnaam, IP, status, RAM, vCPUs)
- SSH-verbindingsgegevens (commando, SSH-config-fragment)
- Actieknoppen: starten, uitschakelen, herstarten, stoppen, verwijderen
- Deeldialoog (nodig een andere gebruiker uit via e-mail)
VM-acties
Alle energie-acties gebruiken de Proxmox API met een waitForTask()-pollenlus (tot 60 pogingen met 2-seconden intervallen). De databasestatus wordt na elke bewerking bijgewerkt.
| Actie | Effect | Beschikbaar voor |
|---|---|---|
| Starten | Schakelt de VM in | Eigenaar, beheerder, gedeeld (met acties) |
| Uitschakelen | Graceful ACPI-uitschakeling | Eigenaar, beheerder, gedeeld (met acties) |
| Herstarten | Graceful herstart | Eigenaar, beheerder, gedeeld (met acties) |
| Stoppen | Harde uitschakeling | Eigenaar, beheerder, gedeeld (met acties) |
| Verwijderen | VM vernietigen + DB-record verwijderen | Alleen eigenaar, beheerder |
VM delen
Gebruikers kunnen VMs delen via e-mail:
- Eigenaar voert het e-mailadres van de ontvanger in
- Server zoekt de gebruiker op via e-mail
- Een
SharedVm-record wordt aangemaakt met de machtigingsinstellingen van de eigenaar - Een e-mailuitnodiging wordt verzonden via Resend (React Email-template)
- Ontvanger accepteert op
/{locale}/vms/accept/[id]
Gedeelde VMs verschijnen in de VM-lijst van de ontvanger en kunnen worden beheerd volgens de allowActions-machtiging.