[SOLVED] Proxmox API call per Node Red

baris1344

New Member
Jun 2, 2023
23
2
3
Hi, ich versuche die Proxmox API per Node Red auszulesen, leider ohne Erfolg. Ich habe bei Node Red SSL Zertifikat überprüfung ausgeschaltet und will jetzt die API auslesen. Kann mir jemand hier weiter helfen? Ich bin mir nicht sicher ob ich unten im Header alles richtig eingetragen habe oder ob ich irgendwas falsch beschrieben oder vergessen habe.
Bei dem Ticket war ich mir auch nicht sicher ob es "PVEAuthCookie" oder "PVEAuthToken" heißen soll. Anbei ein Screenshot meiner Konfiguration.
Ich weiß das ich die Rückgabe auf JSON Objekt stellen muss, habe es hier aus Testzwecke mal auf UTF-8 Stehen.

1686742685832.png
 
Hi,

Kenn jetzt zwar Node Red nicht, aber eigentlich willst du hier vermutlich Token-basierte Authentifizierung verwenden. Dazu muss du zuerst ein Token einrichten [1] und dann deinem Tool sagen dass es den Header Authorization mit PVEAPIToken=API@pve!$tokenName=$token befüllt. Wobei du hier $token und $tokenName entsprechend ersetzen musst und das Token die entsprechenden Berechtigungen braucht. Mehr sollte nicht notwendig sein.

Basic-Authentifizierung solltest du ausschalten, dass ist nicht was du willst. Je nachdem was es da für andere Authentifizierungstypen gibt, kann man evt. den Header auch da setzen.

[1]: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_tokens
 
Last edited:
  • Like
Reactions: baris1344
Super, bitte markiere den Thread als "Solved" in dem du oben unter "Edit Thread" den entsprechenden Prefix setzt. So können andere diese Lösung leichter finden.
 
  • Like
Reactions: baris1344
Ich habe mal noch eine Frage, wenn ich meine Festplatten auf listen will mit

/api2/josn/nodes/pve/disks/list

bekomme ich nur ein null ausgegeben, im Postman kriege ich allerdings alle Festplatten mit ihren Daten ausgegeben, eine Idee woran das liegen könnte?
 
/api2/josn/nodes/pve/disks/list
Vielleicht hast du dich ja nur hier vertippt, aber "json" nicht "josn". Sonst, verwendest du das gleiche Token?
 
Wie gesagt kenne ich mich mit Node Red nicht wirklich aus. Bei mir funktioniert das ganze mit diesem curl command

Bash:
curl --location 'https://$nodeIPOrHostname:8006/api2/json/nodes/$nodeName/disks/list' \
--header 'Accept: application/json' \
--header 'Authorization: PVEAPIToken=$token'

Musst natürlich die entsprechenden Werte für die Variablen setzen. Aber damit sollte das ganze eigentlich klappen. Kannst evt. mehr Infos schicken welchen Request Node Red da abschickt?
 
Du könntest mal in /var/log/pveproxy/access.log nachschaun was der pveproxy zu dem Request logt. Da sollte das Token, die Methode, der Pfad und der Status des Requests geloggt werden. Z.B. mit cat /var/log/pveproxy/access.log | grep "disks".
 
Last edited:
Ok, wie schaut der Request in Node Red dann aus? Würd mich jetzt schon interessieren :)
 
Also ich hab grade raus gefunden das ich die Cookies mit übergeben muss im Header
Nein, API Tokens haben nur eine Beschränkung für Usermanagement, wie etwa Cookie Ticket erstellen, und Authentifizierung wie Password und TFA ändern.

Für alles andere ist es nicht nötig ein Cookie Ticket zu verwenden.
Wenn es mit Cookie funktioniert, lässt das darauf schließen, dass der API Token in dem Fall entweder nicht richtig übergeben wurde, oder (hier etwas Wahrscheinlicher) zu wenig Berechtigungen hatte.
 
  • Like
Reactions: sterzy
1686817654717.png

So Sieht das bei mir jetzt aus, ich muss nurnoch raus finden wie ich am besten username und password übergeben kann um ein Ticket für die Cookies auszustellen, oder kann man irgendwie einstellen das die nicht ablaufen?
 
So Sieht das bei mir jetzt aus, ich muss nurnoch raus finden wie ich am besten username und password übergeben kann um ein Ticket für die Cookies auszustellen, oder kann man irgendwie einstellen das die nicht ablaufen?
Genau dafür gibt es ja die Token. Wenn es so wie du hier zeigst funktioniert, bedeutet das nur, dass der User mehr Rechte hat als das Token. Bitte schau nochmal nach, ob du auch dem Token die entsprechenden Rechte gegeben hast und dass sowohl Cookie als auch Token auf den gleichen User Bezug nehmen. Bitte beachte das Token und User nicht dieselben Rechte haben müssen und man diese unabhängig voneinander konfigurieren muss.

Bzw. ist es so, dass du hier den Ticket Endpoint abfragst. Hier verhält es sich so wie Thomas beschreibt, dass du mit einem Token kein Ticket erstellen kannst. Das sollte aber auch nicht notwendig sein, wenn du das Token mit den entsprechenden Rechten ausstattest die du für Node Red brauchst.
 
Last edited:
Hast du diese aber auch dem Token gegeben und nicht nur dem User? Diese musst du getrennt nochmal unter Permissions > Add > API Token Permission setzen.
 
  • Like
Reactions: baris1344
Ja genau. Wobei die Rolle APIAdmin halt die entsprechenden Rechte beinhalten muss für Node Red. Und wie gesagt, der Ticket Endpoint oben ist ein Sonderfall, aber der sollte nicht notwendig sein.
 
also sollte das so wie ich das habe schon richtig sein oder? Nur aus irgendeinem Grund klappt es noch nicht ganz
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!