<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HorusGod</title>
    <description>The latest articles on DEV Community by HorusGod (@horusgod007).</description>
    <link>https://dev.to/horusgod007</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3809576%2F28291694-f4ba-49fe-8e33-4b398946aeec.png</url>
      <title>DEV Community: HorusGod</title>
      <link>https://dev.to/horusgod007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/horusgod007"/>
    <language>en</language>
    <item>
      <title>I Built CloudDesktop — Turn Any Linux VPS Into a Browser-Based Desktop (Free &amp; Open Source)</title>
      <dc:creator>HorusGod</dc:creator>
      <pubDate>Fri, 06 Mar 2026 09:46:58 +0000</pubDate>
      <link>https://dev.to/horusgod007/i-built-clouddesktop-turn-any-linux-vps-into-a-browser-based-desktop-free-open-source-2o3n</link>
      <guid>https://dev.to/horusgod007/i-built-clouddesktop-turn-any-linux-vps-into-a-browser-based-desktop-free-open-source-2o3n</guid>
      <description>&lt;p&gt;Ever wanted a full Linux desktop in your browser?&lt;/p&gt;

&lt;p&gt;No SSH. No PuTTY. No setup headaches.&lt;br&gt;
Just open a tab — and you're in. 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Problem
&lt;/h2&gt;

&lt;p&gt;I wanted a persistent Linux environment I could reach from anywhere — my phone on the go, a tablet, even a friend's laptop.&lt;/p&gt;

&lt;p&gt;Every solution I found was either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💸 Expensive (cloud desktops cost $$$)&lt;/li&gt;
&lt;li&gt;🔧 Painful to set up (VNC configs, firewalls, SSL hell)&lt;/li&gt;
&lt;li&gt;📵 Desktop-only (forget using it on mobile)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I spent weeks and built CloudDesktop from scratch.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ What it looks like
&lt;/h2&gt;

&lt;p&gt;Here's the login screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyspo78c0bdhy1pt6s94h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyspo78c0bdhy1pt6s94h.png" alt="Login Screen" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And once you're in — a full XFCE desktop, in your browser:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1spbctrcrm7mj95nywbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1spbctrcrm7mj95nywbb.png" alt="Desktop" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ One command to rule them all
&lt;/h2&gt;

&lt;p&gt;sudo bash install.sh&lt;/p&gt;

&lt;p&gt;That's it. The installer auto-configures:&lt;/p&gt;

&lt;p&gt;✅ XFCE desktop + TigerVNC&lt;br&gt;
✅ WebSocket bridge (noVNC)&lt;br&gt;
✅ Node.js + Express backend&lt;br&gt;
✅ Nginx reverse proxy + SSL&lt;br&gt;
✅ Firewall (UFW) + Fail2ban&lt;br&gt;
✅ Systemd services (auto-start on boot)&lt;/p&gt;




&lt;h2&gt;
  
  
  📱 Works on EVERY device
&lt;/h2&gt;

&lt;p&gt;This was the hardest part to get right.&lt;/p&gt;

&lt;p&gt;CloudDesktop is mobile-first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual trackpad cursor (like Microsoft RD Client)&lt;/li&gt;
&lt;li&gt;Pinch to zoom + scroll&lt;/li&gt;
&lt;li&gt;On-screen keyboard&lt;/li&gt;
&lt;li&gt;Auto-resolution on orientation change&lt;/li&gt;
&lt;li&gt;Fullscreen PWA mode — no browser chrome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install it as a native app on iOS, Android, Windows, macOS — all from your browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 One live session, all devices
&lt;/h2&gt;

&lt;p&gt;All your devices connect to the same live desktop.&lt;/p&gt;

&lt;p&gt;Start coding on your PC → pick up exactly where you left off on your phone.&lt;br&gt;
No sync. No cloud storage. Just your desktop, everywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Settings &amp;amp; customization
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejusrc5raqh4wr0igy73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejusrc5raqh4wr0igy73.png" alt="Settings Panel" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adjust resolution, manage sessions, toggle features — all from a clean settings panel inside the browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Claude Code built right in
&lt;/h2&gt;

&lt;p&gt;This is my favorite part.&lt;/p&gt;

&lt;p&gt;CloudDesktop has first-class Claude Code support with dedicated dock icons:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvajrvjek9ao053j19bbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvajrvjek9ao053j19bbp.png" alt="Claude Code in Dock" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code — launch CLI in a terminal from the dock&lt;/li&gt;
&lt;li&gt;Claude Fast — one-click sandbox mode for quick tasks&lt;/li&gt;
&lt;li&gt;Directory Picker — choose your working folder before launching&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔒 Security? Covered.
&lt;/h2&gt;

&lt;p&gt;This runs on the open internet, so security was non-negotiable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔐 Bcrypt password hashing&lt;/li&gt;
&lt;li&gt;🎟️ JWT session tokens (httpOnly cookies)&lt;/li&gt;
&lt;li&gt;📲 TOTP two-factor authentication&lt;/li&gt;
&lt;li&gt;🚫 Rate limiting on auth endpoints&lt;/li&gt;
&lt;li&gt;🛡️ Fail2ban + UFW firewall&lt;/li&gt;
&lt;li&gt;🔒 HTTPS enforced (Let's Encrypt or self-signed)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ How it works under the hood
&lt;/h2&gt;

&lt;p&gt;Browser ──HTTPS──▸ Nginx ──▸ Express API (auth, files, resolution)&lt;br&gt;
                       └──▸ WebSocket ──▸ websockify ──▸ VNC (TigerVNC/XFCE)&lt;/p&gt;

&lt;p&gt;Simple, battle-tested stack. No magic, no vendor lock-in.&lt;/p&gt;




&lt;h2&gt;
  
  
  💚 100% Free &amp;amp; Open Source
&lt;/h2&gt;

&lt;p&gt;No hidden fees.&lt;br&gt;
No premium tiers.&lt;br&gt;
No telemetry.&lt;br&gt;
No nonsense.&lt;/p&gt;

&lt;p&gt;Fork it. Break it. Make it yours.&lt;/p&gt;

&lt;p&gt;👉 GitHub — &lt;a href="https://github.com/HorusGod007/CloudDesktop" rel="noopener noreferrer"&gt;https://github.com/HorusGod007/CloudDesktop&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If this helped you or looks useful — a ⭐ on GitHub means the world and helps others discover it. Drop your questions below, I read every comment! 🙏&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>linux</category>
      <category>selfhosted</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
