<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>KasmVNC Blog</title>
        <link>https://docs.kasmvnc.com/how-to</link>
        <description>KasmVNC Blog</description>
        <lastBuildDate>Wed, 07 May 2025 18:58:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Running behind a reverse proxy]]></title>
            <link>https://docs.kasmvnc.com/how-to/reverse_proxy</link>
            <guid>https://docs.kasmvnc.com/how-to/reverse_proxy</guid>
            <pubDate>Wed, 07 May 2025 18:58:55 GMT</pubDate>
            <description><![CDATA[Run KasmVNC over HTTP first]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="run-kasmvnc-over-http-first">Run KasmVNC over HTTP first<a href="https://docs.kasmvnc.com/how-to/reverse_proxy#run-kasmvnc-over-http-first" class="hash-link" aria-label="Direct link to Run KasmVNC over HTTP first" title="Direct link to Run KasmVNC over HTTP first" translate="no">​</a></h2>
<ol>
<li class=""><a class="" href="https://docs.kasmvnc.com/docs/install">Install KasmVNC</a>.</li>
<li class="">Copy this code into <code>~/.vnc/kasmvnc.yaml</code>:</li>
</ol>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">network</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">interface</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 127.0.0.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">ssl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">require_ssl</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">udp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">public_ip</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 127.0.0.1</span><br></span></code></pre></div></div>
<ol start="3">
<li class="">Run <code>vncserver</code>.</li>
<li class="">Verify that KasmVNC is running over HTTP by navigating to <a href="http://localhost:8444/" target="_blank" rel="noopener noreferrer" class="">http://localhost:8444</a>.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="setting-up-a-reverse-proxy">Setting up a reverse proxy<a href="https://docs.kasmvnc.com/how-to/reverse_proxy#setting-up-a-reverse-proxy" class="hash-link" aria-label="Direct link to Setting up a reverse proxy" title="Direct link to Setting up a reverse proxy" translate="no">​</a></h2>
<p>Copy this configuration to <code>/etc/nginx/sites-available/kasmvnc</code>:</p>
<div class="language-nginx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-nginx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">server {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     listen 9443 ssl;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     location / {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # The following configurations must be configured when proxying to Kasm Workspaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # WebSocket Support</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_set_header        Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_set_header        Connection "upgrade";</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # Host and X headers</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_set_header        Host $host;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_set_header        X-Real-IP $remote_addr;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_set_header        X-Forwarded-Proto $scheme;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # Connectivity Options</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_http_version      1.1;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_read_timeout      1800s;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_send_timeout      1800s;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_connect_timeout   1800s;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_buffering         off;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # Allow large requests to support file uploads to sessions</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         client_max_body_size 10M;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # # Proxy to KasmVNC using SSL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         proxy_pass https://127.0.0.1:8444;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # Proxy to KasmVNC without SSL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         # proxy_pass http://127.0.0.1:8444;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> }</span><br></span></code></pre></div></div>
<p>Please note that default Debian snakeoil certificates are used. The configured certificates work on Debian-based systems, but may not on others. Please see <code>/etc/kasmvnc/kasmvnc.yaml</code> for certificate locations on for non-Debian-based systems. The locations are at <code>pem_certificate</code> and <code>pem_key</code> keys.</p>
<ol>
<li class="">Enable the configuration with <code>ln -s /etc/nginx/sites-available/kasmvnc  /etc/nginx/sites-enabled/</code>.</li>
<li class="">Restart nginx with <code>systemctl restart nginx</code>.</li>
<li class="">Navigate to <a href="https://localhost:8443/" target="_blank" rel="noopener noreferrer" class="">https://localhost:8443/</a>, username/password is <code>kasm_user/vncpassword</code>.</li>
</ol>]]></content:encoded>
        </item>
    </channel>
</rss>