Skip to content

JackBrenn/quakejs-rootless

 
 

Repository files navigation

QuakeJS Rootless Project

Play multiplayer Quake III Arena in your browser with Podman / Docker

Docker Hub

Demo

Try it live: gibs.oldschoolfrag.com

About

This project fork provides a fully local QuakeJS server built on @treyyoder's original QuakeJS project with the goal of a creating modern, lightweight, and secure alternative.

Key improvements in this fork:

  • Modern base: Docker Hardened Image (Debian 13), Node.js 22.x LTS, Nginx-light
  • Security: Significant CVE reduction, goal of zero High or Critical CVEs, runs as non-root
  • Updated NPM packages where possible
  • Multiplexed web and game traffic over a single port
  • Small image size (~280MB)

What this fork has not done (so far):

  • Recompile original game code from ioquake3 (still old game code)
  • Introduce new functionality

Quick Start

Using Podman (Recommended)

podman run -d \
  --name quakejs \
  -p 8080:8080 \
  docker.io/awakenedpower/quakejs-rootless:latest

Using Docker Run

docker run -d \
  --name quakejs \
  -p 8080:8080 \
  docker.io/awakenedpower/quakejs-rootless:latest

Then open your browser and navigate to http://localhost:8080 to start playing!

Using Docker Compose

Create a docker-compose.yml file:

services:
  quakejs:
    container_name: quakejs
    image: awakenedpower/quakejs-rootless:latest
    ports:
      - '8080:8080'
    restart: unless-stopped

Then run:

docker-compose up -d

Building from Source

Building with Podman (Recommended)

  1. Clone the repository:
git clone https://github.com/JackBrenn/quakejs-rootless.git
cd quakejs-rootless
  1. Build the image:
podman build -t quakejs-rootless:latest .
  1. Run the container:
podman run -d \
  --name quakejs \
  -p 8080:8080 \
  quakejs-rootless:latest

Building with Docker

  1. Clone the repository:
git clone https://github.com/JackBrenn/quakejs-rootless.git
cd quakejs-rootless
  1. Build the image:
docker build -t quakejs-rootless:latest .
  1. Run the container:
docker run -d \
  --name quakejs \
  -p 8080:8080 \
  quakejs-rootless:latest

Configuration

Server Configuration

The server configuration can be customized by modifying server.cfg.

Ports

  • 8080 - Multiplexed Web interface and Game server port. Web requests are handled by Nginx directly, while WebSocket game traffic is seamlessly forwarded internally. This makes proxying behind SSL natively supported via a single port.

What's Different?

This fork builds upon the excellent work of @treyyoder/quakejs-docker with the following updates:

Component Original This Fork
Base OS Ubuntu 20.04 Debian 13 Docker Hardened Image
Node.js 14.x 22.x LTS
Web Server Apache 2 Nginx Light
Networking Dual Port Single Port Multiplexed via Nginx
CVEs 5 critical, 14 high, 999+ medium 0 critical, 0 high, 2 medium, 15 low
Container User root non-root

CVE counts as of 04.04.2026 — Results provided by Docker Scout.

🙏 Credits & Acknowledgments

This wouldn't be possible without these projects or contributors:

License

MIT

About

Play multiplayer Quake III Arena in your browser with rootless Podman / Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 99.7%
  • Other 0.3%