parent
e3357140bc
commit
f7e2f71a42
15 changed files with 107 additions and 144 deletions
@ -1,55 +1,7 @@ |
|||||||
# Docker Doom Server |
# Doom Server |
||||||
|
|
||||||
## Usage |
## Project Layout |
||||||
|
|
||||||
```text |
Different flavors of DOOM can be found in their respective folders. Only |
||||||
docker run --rm -it \ |
crispy-doom and zandronum are currently functioning. See the README.md in those |
||||||
-e IWAD_URL=https://files.jerryaldrichiii.com/public/doom2.wad \ |
folders for more info. |
||||||
-e RETRO_MODE=true \ |
|
||||||
-e ITEM_RESPAWN=true \ |
|
||||||
-e SV_HOSTNAME=doom.yourdomain.com \ |
|
||||||
-p 10666:10666/udp \ |
|
||||||
jerryaldrichiii/doom-server |
|
||||||
``` |
|
||||||
|
|
||||||
### Configurables (set via ENV) |
|
||||||
|
|
||||||
- IWAD_URL=https://files.jerryaldrichiii/public/doom2.wad - Specify IWAD : |
|
||||||
- RETRO_MODE=true - Enable my idea of retro doom. It does the following: |
|
||||||
- Disables jumping |
|
||||||
- Disables mouse look |
|
||||||
- Disables crouching |
|
||||||
- Disables altering FOV |
|
||||||
- Disables crosshairs |
|
||||||
- Enables forced weapon switching on pickup |
|
||||||
- ITEM_RESPAWN=true - Enable item (including weapons) respawning |
|
||||||
|
|
||||||
## Connecting |
|
||||||
|
|
||||||
### Locally (For testing) |
|
||||||
|
|
||||||
- Download Zandronum: [https://zandronum.com/download](https://zandronum.com/download) |
|
||||||
- Download the same Doom IWAD that is on the server (Set via IWAD_URL env var) |
|
||||||
- `wget https://files.jerryaldrichiii.com/public/freedm.wad` |
|
||||||
- Connect to the server: |
|
||||||
- `zandronum -iwad /path/to/freedm.wad -connect localhost` |
|
||||||
|
|
||||||
### FreeDM - doom.jerryaldrichiii.com |
|
||||||
|
|
||||||
- Download Zandronum: [https://zandronum.com/download](https://zandronum.com/download) |
|
||||||
- Download the same Doom IWAD that is on the server: |
|
||||||
- `wget https://files.jerryaldrichiii.com/public/freedm.wad` |
|
||||||
- Connect to the server: |
|
||||||
- `zandronum -iwad /path/to/freedm.wad -connect doom.jerryaldrichiii.com` |
|
||||||
|
|
||||||
### Doom 2 (Shareware) - doom.jerryaldrichiii.com |
|
||||||
|
|
||||||
- Download Zandronum: [https://zandronum.com/download](https://zandronum.com/download) |
|
||||||
- Download the same Doom IWAD that is on the server |
|
||||||
- `wget https://files.jerryaldrichiii.com/public/doom2.wad` |
|
||||||
- Connect to the server: |
|
||||||
- `zandronum -iwad /path/to/doom2.wad -connect doom.jerryaldrichiii.com:10667` |
|
||||||
|
|
||||||
## Notes |
|
||||||
|
|
||||||
See WIP/ for other nearly finished attempts of other servers |
|
||||||
|
@ -0,0 +1,28 @@ |
|||||||
|
FROM alpine as build |
||||||
|
|
||||||
|
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories |
||||||
|
RUN apk --no-cache add autoconf automake gcc git make musl-dev sdl2-dev sdl2_mixer-dev sdl2_net-dev |
||||||
|
|
||||||
|
WORKDIR /src/ |
||||||
|
|
||||||
|
ARG VERSION=5.11.1 |
||||||
|
|
||||||
|
RUN git clone -b crispy-doom-${VERSION} --depth 1 https://github.com/fabiangreffrath/crispy-doom |
||||||
|
RUN cd crispy-doom && ./autogen.sh && make |
||||||
|
|
||||||
|
FROM alpine |
||||||
|
|
||||||
|
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories |
||||||
|
RUN apk --no-cache add sdl2 sdl2_mixer sdl2_net tini |
||||||
|
|
||||||
|
EXPOSE 2342/udp |
||||||
|
|
||||||
|
COPY --from=build /src/crispy-doom/src/crispy-server /usr/local/bin/crispy-server |
||||||
|
|
||||||
|
RUN adduser -D doom |
||||||
|
USER doom |
||||||
|
|
||||||
|
COPY ./entrypoint.sh . |
||||||
|
|
||||||
|
# Using tini here because the crispy-doom process does not respect signals |
||||||
|
ENTRYPOINT ["tini", "--", "/entrypoint.sh"] |
@ -0,0 +1,53 @@ |
|||||||
|
# Doom Server (Crispy Doom) |
||||||
|
|
||||||
|
## Usage |
||||||
|
|
||||||
|
```text |
||||||
|
docker run --rm -it \ |
||||||
|
-e DOOM_SERVER_NAME=doom.yourdomain.com \ |
||||||
|
-p 2342:2342/udp \ |
||||||
|
jerryaldrichiii/doom-server-crispy:latest |
||||||
|
``` |
||||||
|
|
||||||
|
## Environment Variables |
||||||
|
|
||||||
|
### `DOOM_SERVER_PORT` |
||||||
|
|
||||||
|
The UDP port for the server to listen on. |
||||||
|
|
||||||
|
### `DOOM_SERVER_PUBLIC` |
||||||
|
|
||||||
|
If set to `true`, then it will register the server with |
||||||
|
[master.chocolate-doom.org](https://master.chocolate-doom.org) |
||||||
|
|
||||||
|
### `DOOM_SERVER_NAME` |
||||||
|
|
||||||
|
If `DOOM_SERVER_PUBLIC="true"` then the value of this variable will be used for |
||||||
|
the server name on [master.chocolate-doom.org](https://master.chocolate-doom.org). |
||||||
|
|
||||||
|
## Connecting |
||||||
|
|
||||||
|
First, download [Crispy Doom](http://latest.chocolate-doom.org/) |
||||||
|
|
||||||
|
Then, if you are the first player (the host), connect using the following: |
||||||
|
|
||||||
|
``` |
||||||
|
crispy-doom -iwad ~/path/to/your/IWAD -connect DOCKER_HOST_IP -deathmatch -nomonsters |
||||||
|
``` |
||||||
|
|
||||||
|
Or, if you are joining a game, connect using the following: |
||||||
|
|
||||||
|
``` |
||||||
|
crispy-doom -iwad ~/path/to/same/IWAD/as/host -connect DOCKER_HOST_IP |
||||||
|
``` |
||||||
|
|
||||||
|
### NOTES |
||||||
|
|
||||||
|
Some things to keep in mind about using this server: |
||||||
|
- The first person connecting "configures" the server (e.g. `-nomonsters`, `-iwad`, etc) |
||||||
|
- All players must end their game for another player to join |
||||||
|
- There is a max of 8 players |
||||||
|
|
||||||
|
## More Info |
||||||
|
|
||||||
|
See: [https://www.chocolate-doom.org/wiki/index.php/Multiplayer](https://www.chocolate-doom.org/wiki/index.php/Multiplayer) |
@ -0,0 +1,21 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
if [ "$DOOM_SERVER_PUBLIC" = "true" ]; then |
||||||
|
DOOM_SERVER_PUBLIC="-server" |
||||||
|
else |
||||||
|
DOOM_SERVER_PUBLIC="-privateserver" |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$DOOM_SERVER_NAME" ]; then |
||||||
|
DOOM_SERVER_NAME="-servername ${DOOM_SERVER_NAME}" |
||||||
|
else |
||||||
|
DOOM_SERVER_NAME="" |
||||||
|
fi |
||||||
|
|
||||||
|
set -eux |
||||||
|
|
||||||
|
crispy-server \ |
||||||
|
-port "${DOOM_SERVER_PORT:-2342}" \ |
||||||
|
${DOOM_SERVER_PUBLIC} \ |
||||||
|
"${DOOM_SERVER_NAME}" |
||||||
|
|
@ -1,3 +0,0 @@ |
|||||||
# Failed Attempts |
|
||||||
|
|
||||||
Failed attempts at getting various other servers running |
|
@ -1,18 +0,0 @@ |
|||||||
FROM debian:stable-slim |
|
||||||
|
|
||||||
RUN apt-get update -y && apt-get install -y chocolate-doom |
|
||||||
|
|
||||||
RUN apt-get clean autoclean && apt-get autoremove --yes && rm -rf /var/lib/{apt,dpkg,cache,log}/ |
|
||||||
|
|
||||||
RUN mkdir -p /export/libs |
|
||||||
|
|
||||||
COPY extract_server.sh / |
|
||||||
RUN bash /extract_server.sh /usr/games/chocolate-server /export/libs |
|
||||||
|
|
||||||
FROM debian:stable-slim |
|
||||||
|
|
||||||
COPY --from=0 /export /srv |
|
||||||
|
|
||||||
EXPOSE 10666/udp |
|
||||||
|
|
||||||
CMD LD_LIBRARY_PATH=/srv/libs /srv/chocolate-server -privateserver -port 10666 |
|
@ -1,7 +0,0 @@ |
|||||||
# Chocolate Doom |
|
||||||
|
|
||||||
Chocolate Doom is neat for it's retro appeal, but it doesn't really work |
|
||||||
outside of a LAN party imo. I eventually went with Zandronum due to it's Linux |
|
||||||
support and modern online play capabilities. |
|
||||||
|
|
||||||
If you want to build this make sure you copy in extract_server.sh from above. |
|
@ -1,39 +0,0 @@ |
|||||||
# Switch to alpine to serve content built above |
|
||||||
FROM ubuntu:latest |
|
||||||
|
|
||||||
RUN apt-get update -y |
|
||||||
RUN apt-get install -y cmake wget g++ unzip |
|
||||||
|
|
||||||
RUN mkdir /src |
|
||||||
|
|
||||||
WORKDIR /src |
|
||||||
|
|
||||||
RUN wget https://github.com/odamex/odamex/archive/0.8.1.tar.gz |
|
||||||
RUN tar xvzf *.tar.gz |
|
||||||
|
|
||||||
COPY build_odamex.sh /build_odamex.sh |
|
||||||
RUN /build_odamex.sh |
|
||||||
|
|
||||||
RUN wget https://github.com/freedoom/freedoom/releases/download/v0.12.1/freedm-0.12.1.zip |
|
||||||
RUN unzip freedm*.zip |
|
||||||
RUN cp freedm*/freedm.wad /export |
|
||||||
|
|
||||||
# Using debian slim as opposed to alpine because |
|
||||||
# odamex uses libraries only available in glibc |
|
||||||
FROM debian:stable-slim |
|
||||||
|
|
||||||
COPY --from=0 /export/odasrv /srv/odasrv |
|
||||||
COPY --from=0 /export/odamex.wad /srv/odamex.wad |
|
||||||
COPY --from=0 /export/freedm.wad /srv/freedm.wad |
|
||||||
COPY odasrv.cfg /srv/odasrv.cfg |
|
||||||
|
|
||||||
# RUN useradd --no-create-home --shell /bin/false odamex |
|
||||||
RUN useradd -m --shell /bin/false odamex |
|
||||||
|
|
||||||
RUN chown -R odamex:odamex /srv/ |
|
||||||
|
|
||||||
USER odamex |
|
||||||
|
|
||||||
CMD /srv/odasrv -config /srv/odasrv.cfg |
|
||||||
|
|
||||||
EXPOSE 10666/udp |
|
@ -1,6 +0,0 @@ |
|||||||
# Docker Odamex |
|
||||||
|
|
||||||
You can use this to build a Odamex Doom server. |
|
||||||
|
|
||||||
I put a lot of work into this, but ultimately went with Zandronum due to it's |
|
||||||
compatibility with Linux. I couldn't get audio working with Odamex :( |
|
@ -1,16 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
|
|
||||||
set -e |
|
||||||
|
|
||||||
cd /src/odamex* |
|
||||||
|
|
||||||
mkdir /export |
|
||||||
|
|
||||||
cp odamex.wad /export |
|
||||||
|
|
||||||
mkdir build |
|
||||||
cd build && cmake .. -DCMAKE_BUILD_TYPE=MinSizRel -DBUILD_CLIENT=0 -DBUILD_ODALAUNCH=0 |
|
||||||
|
|
||||||
make odasrv |
|
||||||
|
|
||||||
cp server/odasrv /export |
|
@ -1,2 +0,0 @@ |
|||||||
sv_usemasters 0 |
|
||||||
|
|
Loading…
Reference in new issue