quakejs

quakejs

Docker app from A75G's Repository

Overview

QuakeJS is a port of ioquake3 to JavaScript with the help of Emscripten.
IMPORTANT Use Custom:br0 https://youtu.be/2VnQxxn00jU?t=121 put Fixed IP address, then copy the ip and access it using you broswer
[span style='color: #ff9900;']DON'T USE BRIDGE I'M NOT RESPONSABLE FOR Unraid CONFLICTING WITH PORT 80 FOR THIS DOCKER

logo

quakejs-docker

Docker Image CI

Fully local and Dockerized QuakeJS server. This project bundles assets and server binaries so gameplay does not depend on content.quakejs.com.

Quick Start (Docker Compose)

From the repository root:

docker compose up --build -d

Then open:

http://localhost:8080

To stop:

docker compose down

Quick Start (Docker Run)

Build locally:

docker build -t treyyoder/quakejs:latest .

Run:

docker run -d --name quakejs -p 8080:80 treyyoder/quakejs:latest

Configuration

  • A single published port carries everything: the page, the game assets, and the game itself. The client adapts to whatever origin the browser used (any host, any port, HTTP or HTTPS), and Apache inside the container proxies websocket upgrades to the internal game server on 27960 — so no second port mapping is needed and the game works behind a TLS-terminating reverse proxy over wss://.
  • The HTTP_PORT environment variable from older versions is gone; no configuration is needed for the page to find its server.
  • Main game settings live in server.cfg.
  • Remote administration is disabled by default. Set a strong rconpassword in server.cfg before enabling it.
  • See Quake 3 server variable reference at https://www.quake3world.com/q3guide/servers.html.

Non-Docker Testing

You can run this project without Docker by reproducing the container steps:

  1. Clone https://github.com/nerosketch/quakejs and run npm install.
  2. Copy server.cfg into both quakejs/base/baseq3/server.cfg and quakejs/base/cpma/server.cfg.
  3. Copy include/ioq3ded/ioq3ded.fixed.js to quakejs/build/ioq3ded.js.
  4. Copy include/assets into quakejs/html/assets.
  5. Update quakejs/html/index.html host/port in the same way entrypoint.sh does.
  6. Serve quakejs/html on your desired HTTP port and run:
node build/ioq3ded.js +set fs_cdn localhost:8080 +set fs_game baseq3 +set dedicated 1 +exec server.cfg

Notes

  • This repo targets current Docker Compose syntax (no compose file version key).
  • The container installs Node 22 by default (configurable via Docker build argument NODE_MAJOR).
  • The game server listens on TCP 27960 inside the container (QuakeJS clients connect over WebSockets), but browser traffic reaches it through the published HTTP port via Apache's websocket proxy. Publish -p 27960:27960 additionally only if something needs to hit the game socket directly.

Credits

Thanks to begleysm and their QuakeJS fork/documentation:

Install Quakejs on Unraid in a few clicks.

Find Quakejs in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Quakejs Review the template variables and paths Click Install

Categories

Download Statistics

1,171,779
Total Downloads
2,135
This Month
1,667
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
treyyoder/quakejs:latest
Last Updated2022-08-30
First Seen2020-05-03

Runtime arguments

Web UI
http://[IP]:[PORT:80]/
Network
br0
Shell
sh
Privileged
false

Template configuration

HTTPVariable

HTTP

Target
80
Default
80
Value
80
Game PortPorttcp

Game Port

Target
27960
Default
27960
Value
27960
SERVERVariable

Put your Fixed IP address Here

Default
192.168.0.266
Value
192.168.0.266
HTTP_PORTVariable

HTTP_PORT

Default
80
Value
80