Update: This fork has been updated to use Debian 12 as the base Docker image, upgraded Node.js from version 12 to 18, and includes a Python script to fix mixed content issues, allowing the game to function properly over HTTPS connections. The WebSocket connections will automatically use WSS when served over HTTPS.
A fully local and Dockerized quakejs server. Independent, unadulterated, and free from the middleman.
The goal of this project was to create a fully independent quakejs server in Docker that does not require content to be served from the internet. Hence, once pulled, this does not need to connect to any external provider, ie. content.quakejs.com. Nor does this server need to be proxied/served/relayed from quakejs.com
Simply pull the image treyyoder/quakejs
docker pull treyyoder/quakejs:latest
docker run -d --name quakejs -e HTTP_PORT=<HTTP_PORT> -p <HTTP_PORT>:80 -p 27960:27960 treyyoder/quakejs:latest
docker run -d --name quakejs -e HTTP_PORT=8080 -p 8080:80 -p 27960:27960 treyyoder/quakejs:latest
Send all you friends/coworkers the link: ex. http://localhost:8080 and start fragging ;)
Refer to quake3world for instructions on its usage.
version: '2'
services:
quakejs:
container_name: quakejs
environment:
- HTTP_PORT=8080
ports:
- '8080:80'
- '27960:27960'
image: 'treyyoder/quakejs:latest'
After pulling the repo, change both Dockerfile
and entrypoint.sh
from CRLF to LF.
Build the image with:
docker build --add-host=content.quakejs.com:127.0.0.1 -t treyyoder/quakejs:latest .
This fork includes a Python script (fix_mixed_content.py
) that modifies JavaScript files to support HTTPS connections. The script:
- Converts HTTP asset URLs to HTTPS
- Makes WebSocket connections use WSS protocol when the page is served over HTTPS
- Automatically runs during container startup
Thanks to begleysm with his fork of quakejs to which this was derived, aswell as his thorough documentation