QuakeJS
QuakeJS is a self-hosted Docker server that runs a JavaScript port of ioquake3, letting homelabbers host browser-based multiplayer matches.
Platform availability
Available on 1 of 9 platforms
- Unraid
- TrueNAS (not listed)
- Umbrel (not listed)
- ZimaOS (not listed)
- Proxmox (not listed)
- Helm (not listed)
- Mac (not listed)
- Windows (not listed)
- Linux (not listed)
Health score?A 0-100 score computed nightly from four factors: maintained (40%: recent commits and steady activity), popular (25%: GitHub stars, log scale), easy to install (20%: platforms, install notes, setup guides, Docker image) and light to run (15%: minimum RAM, ARM support). When the source code has been checked, a fifth factor, security check (20%: automated scan for committed secrets, unsafe desktop-app settings, known-vulnerable dependencies and project hygiene; any serious finding caps it at 20), is added. Factors without data are left out and the rest are rescaled.
63/100 Good
- Maintained
- 79last commit 13 days ago
- Popular
- 48241 GitHub stars
- Easy to install
- 351 install platform, install notes, Docker image
- Light to run
- 801 GB minimum RAM, runs on ARM
Availability: platform listings confirmed today, links checked 15 days ago
- GitHub stars
- 241
- Open issues
- 0
- Last commit
- 2026-10-01
- Latest release
- v1.0
- Activity
- declining
Checked 7 days ago - source: GitHub (treyyoder/quakejs-docker)
Resources & Compatibility
Minimum requirements: 1 GB RAM, 1 GB disk. ARM (e.g. Raspberry Pi) is supported.
Checked 16 days ago - source: Docker Hub image tags and published docs
First-install notes
- Single published port Publish one host port to container port 80, such as 8080:80, because the web page, assets, console, and WebSocket traffic all use that port. source
Fetched 7 days ago - each note links to its source
Variants
Alternatives
No alternatives collected yet.
Common questions
How do I find the admin console password after the first container start?
Unless you set ADMIN_PASSWORD, the console generates one and prints it once to the container log. Check the container logs for the generated password, then sign in on the Admin login page.
What reverse proxy settings are needed for players to join and for admin actions to use real IPs?
Forward the single published port with websockets enabled and force HTTPS at the proxy. Set TRUSTED_PROXIES to the proxy address so kicks and bans see players' real addresses.
What state persists across container recreation, and how do I reset it?
Two volumes persist: quakejs-assets for maps and paks, and quakejs-state for password, settings, rotation, leaderboard, bans, audit trail, crash notes, and automatic backups. Recreating the container keeps them, while deleting the volumes resets the server.
Can the server use my own Quake 3 assets instead of the demo content?
The image ships demo content only. If you own Quake III Arena, upload pak0.pk3 from the console's Maps tab or point EXTRA_PAKS at a URL you control to get stock maps, bots, and retail textures.
How do I update the QuakeJS Docker server?
Pull the new image and recreate the container. The existing volumes carry over the installed assets and state.
Answers sourced from github.com
Community
- QuakeJS Bots? : r/selfhosted - Reddit (reddit)
- How to setup your own local QuakeJS server : r/quake - Reddit (reddit)
- Tutorial: Host your own QuakeJS (by @inolen ) server on # ... - Reddit (reddit)
- Newb QuakeJs question : r/selfhosted - Reddit (reddit)
- retro games selfhosted through browser and multiplayer option - Reddit (reddit)
Collected 11 days ago - public community threads