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.
⚡ 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
Essential browser for WineJS workflow & extensions.
Download →
WineJS Firefox Addon
DigitalOcean Droplet Manager
One-click droplet creation + WineJS installer.
Install add-on →
WineJS Firefox Addon
Digital Ocean Droplets - Terminal integration, script runner,
quick deploy.
Install add-on →
⚙️ Deploy WineJS in minutes
1. Firefox extension with integrated installer
2. Configure domain & droplet
3. One-click droplet creation
4. Open terminal in your browser
5. Copy & run — instant WebOS server
7. Run the WineJS installer script
8. WineJS install completed in 5-10minutes
9. Fully open source, inspect & extend
curl -o "winejs.sh" "https://gitgpt.chat/rtx/winejs.sh" && chmod +x "winejs.sh" && sudo "./winejs.sh"
⚡ 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
📌 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)
Essential IDE for WineJS workflow & extensions.
Download →
WineJS Project Packager
Pack and upload Windows apps for WineJS
Install add-on →
WineJS Project Packager Web
Pack and upload Web apps for WineJS
Install add-on →
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.)
- Copy the template script (e.g.,
winejs_install_forgejo.sh)
- 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.)
- Download/place an icon in the icons directory
- Run the script
That's it. Your app is now available at
https://yourdomain.com/appname.
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.
- Place your Windows EXE and all its files in a folder
- Right-click the folder in VS Code
- Select
WineJS: Package Windows App
- Enter the app name (auto-filled from folder name)
- Pick the main EXE from the scanned list
- Choose icon option:
- Extract from EXE – preview grid, pick the best size
- External URL – provide a direct image link
- Default icon – uses WineJS placeholder
- 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.
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.
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.
- 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
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.
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.
- Place your Windows EXE and all its files in a folder
- Right-click the folder in VS Code
- Select
WineJS: Create macOS Desktop App (No Terminal)
- Enter the app name (auto-filled from folder name)
- Pick the main EXE from the scanned list
- 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
- Select app category (
Game, Graphics, Utility, etc.)
- 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.
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.
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.
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.
🖥️
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.
- 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.
✅ 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.
- 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.