WineJS
the first real WebOS

One server. One domain. One unified install script template.
Install any Windows app → gets a URL. Install any Web app → gets a URL.
40+ apps already working. Add more in minutes.
WineJS Logo Try it now!
WineJS installation completed dashboard

⚡ Windows apps

KasmVNC + Wine (Wine Is Not an Emulator). Real compatibility layer, no VM overhead.

🌐 Web apps

Docker containers, automatically integrated. Same script template for both worlds.

🔗 Unified result

https://yourdomain.com/appname — no manual nginx, no port fights.

📁
Shared storage across ALL apps — the collaboration hub:

Every app on your WineJS server — Windows apps, web apps, games, tools — shares the same upload and download folder at /var/www/uploads.

What does this mean in practice?

• A 3D artist uploads a model to /upload (DumbDrop portal)
• A game developer opens MilkShape 3D at /milkshape → loads the model from /uploads → edits it → saves back to /uploads
• Anyone can then download the finished model from /download (FileServer portal)

No USB drives. No email attachments. No "send me the file." Just one shared workspace. All apps see it. All users can access it.

This turns your WineJS server into a collaborative production pipeline — perfect for game jams, remote teams, classrooms, or just moving files between Windows apps and web apps without leaving your browser.

📦 In order to install WineJS you need these three apps

Firefox Developer Edition

Firefox Developer Edition

Essential browser for WineJS workflow & extensions.

Download →
WineJS DigitalOcean Manager

WineJS Firefox Addon
DigitalOcean Droplet Manager

One-click droplet creation + WineJS installer.

Install add-on →
WineJS Firefox Addon

WineJS Firefox Addon

Digital Ocean Droplets - Terminal integration, script runner, quick deploy.

Install add-on →

⚙️ Deploy WineJS in minutes

extension installer
1. Firefox extension with integrated installer
create droplet set domain
2. Configure domain & droplet
create droplet button
3. One-click droplet creation
open terminal
4. Open terminal in your browser
quick command copy-paste
5. Copy & run — instant WebOS server
terminal installation
7. Run the WineJS installer script
terminal installation
8. WineJS install completed in 5-10minutes
open source snippet
9. Fully open source, inspect & extend

🚀 QUICK TERMINAL COMMAND — deploy WineJS on any Linux server

curl -o "winejs.sh" "https://gitgpt.chat/rtx/winejs.sh" && chmod +x "winejs.sh" && sudo "./winejs.sh"
📖WineJS is fully open-source · Inspect it, fork it, contribute. No secrets. No lock-in.

⚡ DigitalOcean droplet ready script — creates a fresh VM with WineJS preinstalled.
Netlify / static hosting also supported. Everything automated, from nginx to SSL.

📁 40+ apps ready to install · everything just a link

MilkShape 3D Windows App
Forgejo GitLFS
VSCode Server
ArchiveBox
Artalk
BitPoll
Bugzilla
Cal
Castopod
ChangeDetection
Chhoto URL
ChiefOnboarding
CommaFeed
ConvertX
Dagu
Directory Lister
Discount Bandit
Dittofeed
Droposs
Ganymede
Huly
Karaoke Eternal
Mergeable
Mumble
n8n
Neko
OpenSpy
Owncast
Paperless-ngx
Postiz
Pretix
PufferPanel
Saleor
Screego
SearXNG
SolidInvoice
Sosse
Svix
Sympa
Webhook Tester
+ more coming

📌 Same script template for any app — Windows or web

No manual nginx config, no port management, no authentication setup, no storage mounting.
WineJS turns a server into an operating system where every application – Windows or web – is just a link.

winejs_install_[app].sh → yourdomain.com/appname

📦 In order to install apps on WineJS you need vscode, and these extensions

VSCode (Visual Studio Code)

VSCode (Visual Studio Code)

Essential IDE for WineJS workflow & extensions.

Download →
Pack and upload Windows apps for WineJS(DigitalOcean Spaces Required)

WineJS Project Packager

Pack and upload Windows apps for WineJS

Install add-on →
Pack and upload Web apps for WineJS(DigitalOcean Spaces Required)

WineJS Project Packager Web

Pack and upload Web apps for WineJS

Install add-on →
📐

The Universal Web App Template Pattern

WineJS installation is based on a pre-defined template. Your application must follow the template format to be easily installed. Once you do, you can share it as winejs_install_yourappname_what_it_does.sh.

The WineJS platform (domain, network, ports, shared storage, nginx, translator) creates a universal installer template that works for ANY self-hosted web app. The pattern is:

✓ Verify WineJS platform → /opt/winejs exists, network ready
✓ Get domain → from existing WineJS config or user input
✓ Find next available port → auto-detects, no conflicts
✓ Create directories → consistent structure (/opt/winejs/apps/[app], /opt/winejs/data/[app], etc.)
✓ Generate config.json → app metadata, port, icon, category
✓ Create docker-compose.yml → container definition, volume mounts, network
✓ Add to nginx → reverse proxy route at /appname
✓ Create helper script → winejs-[app] CLI tool
✓ Create uninstall script → clean removal
✓ Restart translator → app appears at https://yourdomain.com/appname
By following this guide, we translated 40 different installers in under 1 hour. You write one template, then for each app you:
  • Find the official Docker Compose or install docs on GitHub
  • Extract the volume mounts, ports, environment variables
  • Wrap it in the template with WineJS conventions
  • Add app-specific features (webhooks, auto-heal, etc.)
🔧 To add your own app to WineJS, you just need to:
  1. Copy the template script (e.g., winejs_install_forgejo.sh)
  2. Replace app-specific values:
    • APP_LOGO_URL, APP_NAME, CATEGORY, DESCRIPTION
    • Docker image and version
    • Port mapping
    • Volume mounts (where data persists)
    • Environment variables
    • Any custom features (webhook, auto-heal, etc.)
  3. Download/place an icon in the icons directory
  4. Run the script

That's it. Your app is now available at https://yourdomain.com/appname.

📦

The Windows Packager Pattern

WineJS Packager is a VS Code extension that turns any Windows application into an installable package for your WineJS server. Right-click any folder → package it → get an install_yourapp.sh script. You must be able to upload your package to somewhere for WineJS to download.

The packager follows a universal pattern that works for ANY Windows application. The process is:

✓ Right-click any folder → extension activates
✓ Scan for EXE files → filters out installers/uninstallers
✓ User selects main executable → the app launcher
✓ Handle icon → extract from EXE (with preview), external URL, or default
✓ Create ZIP archive → full app folder compressed
✓ Upload to Spaces → both .zip and icon to rtx/wine/
✓ Generate install script → install_yourapp.sh with all URLs embedded
✓ Save to foldername_install/ → next to original folder
The install script contains everything needed: It downloads from Spaces, finds the next available port, creates directories, generates launch.sh with auto-heal, creates config.json with metadata, builds docker-compose.yml with gamepad/Wiimote support, copies the icon, patches KasmVNC (no control bar), and starts the container.

One script. One app. One URL. The system is designed for one app per URL. Once installed, the app is always on — even if you close your browser, the container keeps running. And if the app crashes? The auto-heal monitor restarts it immediately.

When you open the URL, the app launches in full-screen mode, automatically filling the available screen space. No borders. No toolbars. No distractions. Just the app, ready to use, on any device.
🔧 To package your own Windows app for WineJS, you just need to:
  1. Place your Windows EXE and all its files in a folder
  2. Right-click the folder in VS Code
  3. Select WineJS: Package Windows App
  4. Enter the app name (auto-filled from folder name)
  5. Pick the main EXE from the scanned list
  6. Choose icon option:
    • Extract from EXE – preview grid, pick the best size
    • External URL – provide a direct image link
    • Default icon – uses WineJS placeholder
  7. Select app category (Game, Graphics, Utility, etc.)

That's it. You now have foldername_install/install_yourapp.sh. Run it on any WineJS server. Your app appears at https://yourdomain.com/yourapp.

☁️ What gets uploaded to DigitalOcean Spaces:
  • rtx/wine/yourapp.zip – the full Windows application package
  • rtx/wine/images/yourapp.png – the app icon

The install script downloads directly from your Spaces CDN. No manual file transfers. No scp. No rsync. Just run the script.

📝 Registry Auto-Import (wineregkey.reg)

The packager automatically detects a file named wineregkey.reg in your Windows app folder and injects it into the Wine registry during installation.

✓ During packaging → extension checks for wineregkey.reg
✓ Sets hasRegFile = true → passes to install script generator
✓ During installation → install script runs regedit /S wineregkey.reg inside the container
✓ Registry keys merge into the app's dedicated Wine prefix
⚙️
How it works under the hood:
wineregkey.reg is a standard Windows registry file (exported from regedit). Wine includes a regedit command that understands .reg files. The /S flag runs silently with no prompts. The registry keys get merged into the Wine prefix for that app only – no system-wide changes.
🎯 What you can do with this:
  • Pre-set registry keys before the app first runs
  • Register DLLs (regsvr32 equivalents)
  • Set file associations so your app opens specific file types
  • Configure app settings that would normally require clicking through setup wizards
  • Skip first-run dialogs and tutorials
📄 Example wineregkey.reg file:
Windows Registry Editor Version 5.00
        
[HKEY_CURRENT_USER\Software\MyApp]
"Setting1"="value1"
"FirstRun"=dword:00000000

[HKEY_LOCAL_MACHINE\Software\MyApp]
"InstallPath"="C:\\Program Files\\MyApp"

⚠️ Powerful but use wisely: Instead of making users run installers or manually edit registry, just drop a .reg file in the folder and the packager handles the rest. Avoid putting license keys or serial numbers in public scripts.

🍷

The Desktop Packager Pattern

WineJS Desktop Packager is a VS Code extension that turns any Windows EXE into a native macOS desktop app. Right-click a folder → create a .app bundle. No terminal. No manual Wine config.

The extension follows a universal pattern that works for ANY Windows application. The process is:

✓ Right-click any folder → extension activates
✓ Scans for EXE files → filters out installers/uninstallers
✓ Extracts real icons from EXE → using icoutils + wrestool
✓ Creates macOS app bundle → AppName.app/Contents/MacOS/launcher
✓ Generates Info.plist → app metadata, category, bundle ID
✓ Converts PNG to .icns → macOS native icon format
✓ Creates symlink or copies files → instant creation (symlink mode)
✓ Places app on Desktop + ~/Applications
✓ Adds to Dock automatically → via PlistBuddy
✓ Creates install/uninstall scripts → Install.command + Uninstall.command
✓ Signs the app bundle → Gatekeeper compatibility
The magic is in the launcher: Instead of manually configuring Wine prefixes or dealing with terminal commands, the extension generates a launcher script that calls open "$EXE_PATH". macOS Launch Services handles the rest – finding Wine, setting up the environment, running the Windows app. No terminal window appears. No bouncing Dock icon. It just works.
🔧 To package your own Windows app, you just need to:
  1. Place your Windows EXE and all its files in a folder
  2. Right-click the folder in VS Code
  3. Select WineJS: Create macOS Desktop App (No Terminal)
  4. Enter the app name (auto-filled from folder name)
  5. Pick the main EXE from the scanned list
  6. Choose icon option:
    • Extract from EXE – pulls real icons from the Windows executable
    • External URL – provide a direct image link
    • Default icon – uses WineJS placeholder
  7. Select app category (Game, Graphics, Utility, etc.)
  8. Wait 2-3 seconds – the .app bundle is created instantly

That's it. Your Windows app is now a native macOS app. Double-click to launch. No terminal. No Wine config. No headaches.

📦 What gets generated:
  • AppName.app – native macOS application bundle
  • Placed on your Desktop + ~/Applications
  • Automatically added to your Dock
  • Install.command – reinstall script (in ~/.winejs-scripts/)
  • Uninstall.command – complete removal script
  • Wine prefix at ~/.wine-AppName/ (separate for each app)

⚠️ Requirement: Wine must be installed on your Mac (brew install --cask wine-stable). The extension handles everything else.

💰

The Cost Reality

Most "one-click app" platforms charge you per application. Want WordPress? $5. Want Nextcloud? Another $5. Want a game server? Another $5.

Each app requires its own server. Its own IP address. Its own SSL certificate. Its own nginx configuration. Its own everything.

By the time you have 10 apps, you're paying $50+ per month for 10 different servers running at 5% capacity each. That's inefficient and expensive.

❌ Traditional Platforms
📦 WordPress → $5/mo → separate server
📦 Nextcloud → $5/mo → separate server
📦 Game Server → $5/mo → separate server
📦 n8n → $5/mo → separate server
📦 10 apps = $50+/month
⚙️ Each server runs at ~5% capacity (wasted resources)
✅ WineJS
🍷 One server → $6/mo
🌐 One domain → all apps share it
🔒 One SSL certificate → covers everything
🚀 Unlimited apps → same server
⚙️ Server runs efficiently at optimal capacity
🧮
The math is simple:
Traditional approach: 10 apps × $6 = $60/month + management overhead for 10 servers
WineJS: 1 server × $6 = $6/month + zero overhead
You save $54/month – or $648/year – for every 10 applications.
🌐 All running on the same $6 DigitalOcean droplet:
https://yourdomain.com/milkshape → Windows 3D modeling app
https://yourdomain.com/forgejo → Git server
https://yourdomain.com/n8n → Automation workflow
https://yourdomain.com/ganymede → Twitch archiver
https://yourdomain.com/paperless → Document management
https://yourdomain.com/yourapp → Whatever you want

All with HTTPS. All with auto-start containers. All with shared storage. All with gamepad/Wiimote support. All on ONE server.

🎯
This changes the economics of self-hosting. You're no longer locked into paying per application or managing dozens of underutilized servers. WineJS turns a single $6 server into a platform that can run unlimited applications – Windows apps, web apps, automation tools, game servers, and more – all sharing the same infrastructure.

🍷 WineJS. One server. Unlimited apps. Your infrastructure. Your rules.

⚠️

Technical Limitations & The Real Revolution

🖥️
Hardware Reality: Most standard DigitalOcean droplets (and similar VPS providers) do not include GPU acceleration. Windows apps running through Wine + KasmVNC on CPU-only servers will feel laggy – fine for utilities, document editors, and lightweight tools, but not suitable for 3D rendering, gaming, or graphics-intensive workloads.

For GPU-accelerated Windows apps, you need a dedicated server with passthrough GPU (or a provider like Vultr Bare Metal, Hetzner AX-series, or a local homelab). The platform supports it – the cloud provider just needs to offer it.
🌍
But here's where it gets revolutionary:

WineJS enables multi-user access to any Windows application. Multiple people can connect to the same app instance simultaneously, each controlling their own mouse and keyboard input. The server sees each connection as a separate session.

This isn't screen sharing. This is true collaborative access to software that was never designed for collaboration.
💡 What this unlocks:
  • Abandonware preservation – Rare Windows 95/98/XP software that no longer runs on modern machines? Run it in a browser. No installation. No VM. Just a URL.
  • Legacy business apps – That invoicing system from 2005 that only runs on Windows XP? Put it online. Your whole team can access it from anywhere, on any device.
  • Collaborative creative work – Two designers in different countries, both controlling the same 3D modeling app simultaneously. One sculpts, another adjusts lighting. Real-time.
  • Training & education – Teacher runs the software, students connect and follow along. No one needs to install anything.
  • Museum & archive access – Historic software, interactive exhibits, digital preservation – accessible to anyone with a browser.
🔗
The revolutionary part: Any Windows application – from an obscure 1998 shareware game to a professional 3D modeling tool – becomes just a URL. You share the link. Anyone clicks it. The app runs. No installation. No compatibility checks. No "sorry, this only works on Windows."

That's not just convenient. That changes who gets to use what software.

🍷 WineJS. Turn any Windows app into a web app. Share the link. Collaborate. Preserve. Revolutionize.

🌍

The Open Invitation

Already working right now: wine.gitgpt.chat — Windows apps and web apps running simultaneously on the same server. Live. Right now.

Speed matters:
• Project IGI (400MB game) → ZIP + upload: 3-4 minutes → install: 2-3 minutes
• Forgejo Git server → install: 2-3 minutes
• Uninstall any app → ~10 seconds
🔓
Access by default — you control the locks:
Once you install an app on WineJS, anyone with the URL can access it. No password. No login screen. Just the app.

Password protection is removed by default because every app handles authentication differently:
Web apps (Forgejo, Paperless, etc.) → built-in user/password systems. They already have their own login.
Windows apps (games, MilkShape 3D, etc.) → no built-in authentication. They were never designed for multi-user web access.

You decide: If you want to password-protect a Windows app, you can add authentication at the nginx level or set up a simple auth proxy. The platform supports it — but by default, it's open. Share the link. Let people use it. Add locks only where you need them.

Your server. Your rules. Your audience.
🖥️ Tested & working (even if laggy on CPU-only servers):
  • Project IGI
  • Return to Castle Wolfenstein (RTCW)
  • MilkShape 3D
  • Hitman: Codename 47
  • Medal of Honor: Pacific Assault
  • Sonic Vegas Pro
  • RyAudio Sample Librarian
  • ...and more Windows apps running in browser

⚠️ Laggy but it works! GPU-powered servers would unlock full performance. The platform is ready — the cloud provider just needs to offer it.

🛠️
Help wanted — join the revolution: Some games will need tweaking (widescreen fixes, controller mappings, etc.). If you're a modder, reverse engineer, or just someone who loves old games/softwares — help us build the library. Package your favourite abandonware, share the install script, and let others run it with one click. - Discord link above. Feel free to join the community!
🔗
The big vision: Twilight (and similar archives) could become a source for any old Windows app — instantly runnable in a browser. No installation. No VM. No compatibility headaches. Just a URL.

This changes how we think about software. Share your favourite Windows or web app with anyone, anywhere, with just a link.

🍷 Try it. Break it. Improve it. Share it. This is yours now too.

🐙 GitHub 📜 WineJS Install Script 🔗 MultiBash ☕ Support Us 💬 Discord