<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Аспро: ЛайтШоп [тема: [РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)]</title>
		<link>http://proxmox.su</link>
		<description>Новое в теме [РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-) форума Proxmox Виртуальная Среда на сайте Аспро: ЛайтШоп [proxmox.su]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Mon, 27 Apr 2026 00:22:26 +0300</pubDate>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337193/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			PHP: use Corsinvest\ProxmoxVE\Api\PveClient;<br />public function createCookie()<br /> &nbsp; &nbsp;{<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp;$client = new PveClient("192.168.99.230", 8006);<br /> &nbsp; &nbsp; &nbsp; &nbsp;if ($client-&gt;login('root', 'rootroot', 'pam')) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$csr = $client-&gt;ticketCSRFPreventionToken;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ticket = $client-&gt;ticketPVEAuthCookie;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$res['data'] = array('username' =&gt; 'root@pam', 'CSRFPreventionToken' =&gt; $csr, 'ticket' =&gt; $ticket);<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return json($res);<br /> &nbsp; &nbsp; &nbsp; &nbsp;}<br />//another file<br /> &nbsp; &nbsp;&lt;?php<br /><br />/*<br /> * SPDX-FileCopyrightText: Copyright Corsinvest Srl<br /> * SPDX-License-Identifier: GPL-3.0-only<br /> */<br /><br />namespace Corsinvest\ProxmoxVE\Api;<br /><br />/**<br /> * Class ClientBase<br /> * @package Corsinvest\ProxmoxVE\Api<br /> *<br /> * Proxmox VE Client Base<br /> */<br />class PveClientBase<br />{<br /><br /> &nbsp; &nbsp;/**<br /> &nbsp; &nbsp; * @ignore<br /> &nbsp; &nbsp; */<br /> &nbsp; &nbsp;//private-&gt;public<br /> &nbsp; &nbsp;public $ticketCSRFPreventionToken;<br /><br /> &nbsp; &nbsp;/**<br /> &nbsp; &nbsp; * @ignore<br /> &nbsp; &nbsp; */<br /> &nbsp; &nbsp;//private-&gt;public<br /> &nbsp; &nbsp;public $ticketPVEAuthCookie;<br /> &nbsp; &nbsp;} if you use get createCookie function can get a json array, JavaScript: var xhr = new XMLHttpRequest();<br /> &nbsp; &nbsp; &nbsp; &nbsp;xhr.open('GET', '/admin/pve.lxc/createCookie', true);<br />xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');<br /> &nbsp; &nbsp; &nbsp; &nbsp;xhr.withCredentials=true<br />xhr.onload = function() {<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (xhr.status === 200) {<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var res = JSON.parse(xhr.responseText);<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;console.log(res);<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PVE.UserName = res.data.username;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PVE.CSRFPreventionToken = res.data.CSRFPreventionToken<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setCookie('PVEAuthCookie',res.data.ticket,8600)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;createTerminal();<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;console.error('faild' + xhr.status);<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp; &nbsp; &nbsp;};<br /> &nbsp; &nbsp; &nbsp; &nbsp;var params = [];<br /> &nbsp; &nbsp; &nbsp; &nbsp;xhr.send(params); nginx proxy the pve server make sure in the same area <noindex><a href="https://127.0.0.1" target="_blank" rel="nofollow" >https://127.0.0.1</a></noindex> ,same cookies <br />
			<i>27.12.2023 04:40:00, xianzhi0520.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337193/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337193/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Wed, 27 Dec 2023 04:40:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337192/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Можешь поделиться кодом или ссылкой на GitHub? <br />
			<i>15.12.2023 20:18:00, dklinux7.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337192/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337192/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Fri, 15 Dec 2023 20:18:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337191/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я использую nginx proxy, чтобы PVE и мой PHP-проект работали по одному домену. Поэтому они оба могут использовать одни и те же куки. xterm или novnc websocket подключились. <br />
			<i>21.11.2023 15:14:00, xianzhi0520.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337191/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337191/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Tue, 21 Nov 2023 15:14:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337190/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Можешь объяснить, как ты это сделал? Весь процесс? <br />
			<i>21.11.2023 15:02:00, dklinux7.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337190/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337190/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Tue, 21 Nov 2023 15:02:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337189/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Наконец-то использую Nginx в качестве прокси, и JS устанавливает одинаковую Origin cookie — теперь работает!<br /><br />Код:<br />```<br />server {<br /> &nbsp; &nbsp;listen 80 default_server;<br /> &nbsp; &nbsp;rewrite ^(.*) https://$host$1 permanent;<br />}<br /><br />server {<br /> &nbsp; &nbsp;listen 443 ssl;<br /> &nbsp; &nbsp;server_name _;<br /> &nbsp; &nbsp;#ssl on;<br /> &nbsp; &nbsp;ssl_certificate /etc/Nginx1.15.11/conf/proxmox/pve-ssl.pem;<br /> &nbsp; &nbsp;ssl_certificate_key /etc/Nginx1.15.11/conf/proxmox/pve-ssl.key;<br /> &nbsp; &nbsp;proxy_redirect off;<br /> &nbsp; &nbsp;location ~ /pve {<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_http_version 1.1;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header Upgrade $http_upgrade;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header Connection "upgrade";<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Origin' '*' always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Methods' '*' always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Headers' '*' always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Credentials' true always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;#my php webapp<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_pass <noindex><a href="http://127.0.0.1:8989" target="_blank" rel="nofollow" >http://127.0.0.1:8989</a></noindex>;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_buffering off;<br /> &nbsp; &nbsp; &nbsp; &nbsp;client_max_body_size 0;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_connect_timeout &nbsp;3600s;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_read_timeout &nbsp;3600s;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_send_timeout &nbsp;3600s;<br /> &nbsp; &nbsp; &nbsp; &nbsp;send_timeout &nbsp;3600s;<br /> &nbsp; }<br /> &nbsp; &nbsp;location /api2/json {<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_http_version 1.1;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header Upgrade $http_upgrade;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_set_header Connection "upgrade";<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Origin' '*' always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Methods' '*' always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Headers' '*' always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;add_header 'Access-Control-Allow-Credentials' true always;<br /> &nbsp; &nbsp; &nbsp; &nbsp;#my pve server<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_pass <noindex><a href="https://192.168.99.230:8006" target="_blank" rel="nofollow" >https://192.168.99.230:8006</a></noindex>;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_buffering off;<br /> &nbsp; &nbsp; &nbsp; &nbsp;client_max_body_size 0;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_connect_timeout &nbsp;3600s;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_read_timeout &nbsp;3600s;<br /> &nbsp; &nbsp; &nbsp; &nbsp;proxy_send_timeout &nbsp;3600s;<br /> &nbsp; &nbsp; &nbsp; &nbsp;send_timeout &nbsp;3600s;<br /> &nbsp; }<br />``` <br />
			<i>17.07.2023 14:26:00, xianzhi0520.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337189/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337189/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Mon, 17 Jul 2023 14:26:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337188/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Можешь, пожалуйста, откликнись мне насчёт Cookie? <br />
			<i>14.07.2023 05:22:00, xianzhi0520.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337188/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337188/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Fri, 14 Jul 2023 05:22:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337187/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я не понимаю. <br />
			<i>06.07.2023 12:34:00, xianzhi0520.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337187/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337187/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Thu, 06 Jul 2023 12:34:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message337186/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_">[РЕШЕНО] noVNC через API: PVEAuthCookie (PVE Ticket) и Tunnel Auth (VNC Ticket) — как это сделать? :-)</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет, просто пытаемся разобраться с этим после двух дней работы.<br /><br />**Обновление:** Мы смогли исправить мелкие недочеты. Но все равно выдает 401 No Ticket, хотя есть VNC-билет от vncproxy, который передается в vncwebsocket noVNC (через путь), и, кажется, установлен cookie с PVE-билетом.<br /><br />**Обновление:** Ошибка No Ticket связана с Access Ticket для самого PVE. Это потребовало тонкой настройки для решения.<br /><br />```php<br />function pvewhmcs_noVNC($params) {<br /> &nbsp; &nbsp;$serverip = $params["serverip"];<br /> &nbsp; &nbsp;$serverusername = 'vnc';<br /> &nbsp; &nbsp;$serverpassword = Capsule::table('mod_pvewhmcs')-&gt;where('id', '1')-&gt;value('vnc_secret');<br /> &nbsp; &nbsp;$proxmox=new PVE2_API($serverip, $serverusername, "pve", $serverpassword);<br /> &nbsp; &nbsp;if ($proxmox-&gt;login()) {<br /> &nbsp; &nbsp; &nbsp; &nbsp;# Get first node name.<br /> &nbsp; &nbsp; &nbsp; &nbsp;$nodes = $proxmox-&gt;get_node_list();<br /> &nbsp; &nbsp; &nbsp; &nbsp;$first_node = $nodes[0];<br /> &nbsp; &nbsp; &nbsp; &nbsp;unset($nodes);<br /> &nbsp; &nbsp; &nbsp; &nbsp;$guest=Capsule::table('mod_pvewhmcs_vms')-&gt;where('id','=',$params['serviceid'])-&gt;get()[0] ;<br /> &nbsp; &nbsp; &nbsp; &nbsp;$vm_vncproxy=$proxmox-&gt;post('/nodes/'.$first_node.'/'.$guest-&gt;vtype.'/'.$params['serviceid'] .'/vncproxy', array( 'websocket' =&gt; '1' )) ;<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp;// Get both tickets prepared<br /> &nbsp; &nbsp; &nbsp; &nbsp;$pveticket = $proxmox-&gt;getTicket();<br /> &nbsp; &nbsp; &nbsp; &nbsp;$vncticket = $vm_vncproxy['ticket'];<br /> &nbsp; &nbsp; &nbsp; &nbsp;// $path should only contain the actual path without any query parameters<br /> &nbsp; &nbsp; &nbsp; &nbsp;$path = 'api2/json/nodes/' . $first_node . '/' . $guest-&gt;vtype . '/' . $params['serviceid'] . '/vncwebsocket?port=' . $vm_vncproxy['port'] . '&vncticket=' . urlencode($vncticket);<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp;$url = '/modules/servers/pvewhmcs/novnc_router.php?host=' . $serverip . '&pveticket=' . urlencode($pveticket) . '&path=' . urlencode($path) . '&vncticket=' . urlencode($vncticket);<br /> &nbsp; &nbsp; &nbsp; &nbsp;$vncreply='&lt;center&gt;&lt;strong&gt;Console (noVNC) prepared for usage. <noindex><a href="http://%27.$url.%27" target="_blank" rel="nofollow" >Click here</a></noindex> to open the noVNC window.&lt;/strong&gt;&lt;/center&gt;' ;<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp;return $vncreply;<br /><br /> &nbsp; &nbsp;} else {<br /> &nbsp; &nbsp; &nbsp; &nbsp;$vncreply='Failed to prepare noVNC. Please contact Technical Support.';<br /> &nbsp; &nbsp; &nbsp; &nbsp;return $vncreply;<br /> &nbsp; &nbsp;}<br />}<br />```<br /><br />Затем есть novnc\_router.php, который добавляет cookie локально для пользователя 'vnc' с ограниченными правами доступа на PVE, а затем перенаправляет на файл noVNC HTML для подключения. В файл передается PVE-билет, VNC-билет, IP-адрес сервера и путь запроса. Мы были вынуждены изменить наш подход, чтобы он работал только для одного домена из-за anti-CSRF (cookie могут распространяться только на поддомены), обновить DNS, чтобы это отразилось, а затем исправить кодирование VNC-билета, чтобы он выдерживал proxmox-api-daemon.<br /><br />```php<br />&lt;?php<br />// FILE: novnc_router.php<br />// TASK: Take WHMCS request, add browser cookie, then redirect to noVNC<br />if (isset($_GET['pveticket']) && isset($_GET['host']) && isset($_GET['path']) && isset($_GET['vncticket'])) {<br /> &nbsp; &nbsp;$pveticket = $_GET['pveticket'];<br /> &nbsp; &nbsp;$vncticket = $_GET['vncticket'];<br /> &nbsp; &nbsp;$host = $_GET['host'];<br /> &nbsp; &nbsp;$path = $_GET['path'];<br /><br /> &nbsp; &nbsp;// Get the requesting hostname/domain from request<br /> &nbsp; &nbsp;$whmcsdomain = parse_url($_SERVER['HTTP_HOST']);<br /> &nbsp; &nbsp;$domainonly = preg_replace("/^(.*?)\.(.*)$/","$2",$whmcsdomain['path']);<br /> &nbsp; &nbsp;setrawcookie('PVEAuthCookie', $pveticket, 0, '/', $domainonly);<br /><br /> &nbsp; &nbsp;// Create the final noVNC URL with the re-encoded vncticket<br /> &nbsp; &nbsp;$hostname = gethostbyaddr($host);<br /> &nbsp; &nbsp;$redirect_url = '/modules/servers/pvewhmcs/novnc/vnc.html?autoconnect=true&encrypt=true&host=' . $hostname . '&port=8006&password=' . urlencode($vncticket) . '&path=' . urlencode($path);<br /><br /> &nbsp; &nbsp;header('Location: ' . $redirect_url);<br /> &nbsp; &nbsp;exit;<br />} else {<br /> &nbsp; &nbsp;echo 'Error: Missing required info to route your request. Please try again.';<br />}<br />?&gt;<br />```<br /><br />noVNC затем правильно настроен с Web Socket config с 1.2.3.4, порт 8006 и путь: api2/json/nodes/syd-pvetest/qemu/103/vncwebsocket?port=5900&vncticket=PVEVNC%3A648F1097%3A%3ALF3XL%2FdXR%2FDhf<WBR/>&shy;XJMCPSduSCYkKEQn6m4lTkdnfQe9bSvCBQUFxaehjdyhhCd0EavucnmcTRZn<WBR/>&shy;dnQPaLKSlWzSaTpb4yEhL%2B8rvuw%2Fec%2BNLPMh7JOin7vSiQJR2nJ%2B<WBR/>&shy;GtO%2BYPMXV9aD4Ib0vzRwmcrjx21u387nnQTX%2Bof0Ap8L0u3xN1XCcabK<WBR/>&shy;IMRDwvMMt9Xd5hX7dwg%2BHVufzMarCr2surgkJk7pRDIXB5VzHDBd6%2FQD<WBR/>&shy;oD7t29uhsbboY94vVwNA0n4cn2wF0gqqnKE01eUQOm0OdGPE%2BvPpjSxIRk<WBR/>&shy;NzSnNeI2PoJ1vLZX%2BOluNUC9KGW2J27LszC78KEKzrvZcqQ%3D%3D<br /><br />Firefox не может установить соединение с сервером по адресу wss://1.2.3.4:8006/api2/json/nodes/syd-pvetest/qemu/103/vncwebsocket?port=5900&vncticket=PVEVNC%3A648F10... из-за 401 No Ticket.<br /><br />WHMCS и Proxmox находятся на разных "доменах" (Proxmox только по IP), но ошибка cookie была такой же без добавления 5-го параметра в setrawcookie().<br /><br />**Обновление 1:** Мы изменили способ установки cookie, чтобы это работало. И, конечно же, anti-CSRF означает только один домен.<br /><br />**Обновление 2:** Затем мы получили ответ "Invalid VNC Ticket" от PVE. Оказалось, что для этого нужно было дважды закодировать VNC-билет.<br /><br />**Обновление 3:** Мы изменили параметры запроса noVNC, чтобы включить autoconnect=true и encrypted=true, и передать пароль.<br /><br />[Ссылка на форум](<noindex><a href="https://forum.proxmox.com/threads/401permission-denied-invalid-pvevnc-ticket.34144/" target="_blank" rel="nofollow" >https://forum.proxmox.com/threads/401permission-denied-invalid-pvevnc-ticket.34144/</a></noindex>)<br /><br />[Ссылка на issue GitHub](<noindex><a href="https://github.com/ZzAntares/ProxmoxVE/issues/17#issuecomment-688937674" target="_blank" rel="nofollow" >https://github.com/ZzAntares/ProxmoxVE/issues/17#issuecomment-688937674</a></noindex>)<br /><br />[Ссылка на форум](<noindex><a href="https://forum.proxmox.com/threads/401permission-denied-invalid-pvevnc-ticket.110961/" target="_blank" rel="nofollow" >https://forum.proxmox.com/threads/401permission-denied-invalid-pvevnc-ticket.110961/</a></noindex>)<br /><br />[Ссылка на форум](<noindex><a href="https://forum.proxmox.com/threads/working-with-api-getting-401-no-ticket.75108/" target="_blank" rel="nofollow" >https://forum.proxmox.com/threads/working-with-api-getting-401-no-ticket.75108/</a></noindex>)<br /><br />Многие онлайн просто откатываются к использованию iframe GUI Proxmox VE, и я понимаю почему.<br /><br />Наконец-то у нас получилось! <br />
			<i>18.06.2023 16:17:00, linux.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message337186/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</link>
			<guid>http://proxmox.su/forum/messages/forum63/message337186/79339-resheno_-novnc-cherez-api_-pveauthcookie-_pve-ticket_-i-tunnel-auth-_vnc-ticket_-_-kak-eto-sdelat_-_</guid>
			<pubDate>Sun, 18 Jun 2023 16:17:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
	</channel>
</rss>
