Automatiser la création de VPS via Proxmox API : tutoriel pour hébergeur indépendant


Pourquoi automatiser ?

Quand on gère plusieurs VPS via Proxmox, créer chaque machine manuellement devient vite fastidieux. Avec l’API Proxmox, on peut :

  • Créer des VPS en quelques secondes
  • Déployer à partir de templates cloud-init
  • Intégrer la création VPS à un portail client

⚙️ 1. Prérequis

  • Proxmox VE installé et fonctionnel
  • Accès à un utilisateur API (avec token ou login/password)
  • Un template cloud-init préparé (ex. : vmid 9000)

🧪 2. Exemple de création de VPS via API en curl

# Authentification (token recommandé)
curl -k -X POST "https://IP:8006/api2/json/access/ticket" \
     -d "username=root@pam&password=TON_MDP"

Tu obtiens :

  • ticket (à inclure dans les requêtes)
  • CSRFPreventionToken

Ensuite :

curl -k -X POST "https://IP:8006/api2/json/nodes/NOM_NODE/qemu" \
     -H "CSRFPreventionToken: TOKEN" \
     -b "PVEAuthCookie=TICKET" \
     -d "vmid=101" \
     -d "name=vps-client1" \
     -d "memory=2048" \
     -d "cores=2" \
     -d "net0=virtio,bridge=vmbr0" \
     -d "ide0=local-lvm:10" \
     -d "ostype=l26" \
     -d "ide2=local:cloudinit" \
     -d "template=9000" \
     -d "cipassword=MotDePasseFort"

🧰 3. Exemple en Python (via requests)

import requests

session = requests.Session()
login = session.post("https://IP:8006/api2/json/access/ticket", data={
    "username": "root@pam",
    "password": "TON_MDP"
}, verify=False)

ticket = login.json()["data"]["ticket"]
csrftoken = login.json()["data"]["CSRFPreventionToken"]
cookies = {"PVEAuthCookie": ticket}
headers = {"CSRFPreventionToken": csrftoken}

# Création VPS
resp = session.post("https://IP:8006/api2/json/nodes/pve/qemu", headers=headers, cookies=cookies, data={
    "vmid": "110",
    "name": "vps-auto",
    "cores": 2,
    "memory": 2048,
    "net0": "virtio,bridge=vmbr0",
    "ide0": "local-lvm:10",
    "ide2": "local:cloudinit",
    "ostype": "l26",
    "template": "9000",
    "cipassword": "MotDePasse123"
}, verify=False)

print(resp.status_code, resp.text)

🧠 Bonus : à intégrer dans ton interface client

Une fois fonctionnel :

  • Relie ce script à un formulaire client
  • Génère un VM ID unique
  • Active une API interne sécurisée

Tu obtiens un système d’hébergement automatisé sans avoir besoin d’un WHMCS ou d’un panel tiers.


✅ Conclusion

Avec l’API Proxmox, tu peux construire ton propre panel d’hébergement VPS. C’est puissant, modulaire, et surtout totalement indépendant des solutions commerciales.