feat: add Dolphin traversal server for GameCube/Wii netplay
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
Self-hosted NAT hole-punching relay for Dolphin emulator netplay. Enables online play for ALL GameCube and Wii games without players needing to open ports (Mario Party 4-7, MKDD, Smash Melee, etc). Multi-stage Docker build compiles only the traversal_server target. UDP ports 6262 (primary) and 6226 (NAT probe). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -214,6 +214,20 @@ services:
|
|||||||
limits:
|
limits:
|
||||||
memory: 128M
|
memory: 128M
|
||||||
|
|
||||||
|
dolphin-traversal:
|
||||||
|
build:
|
||||||
|
context: ../servers/dolphin-traversal
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: dolphin-traversal
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "6262:6262/udp"
|
||||||
|
- "6226:6226/udp"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 64M
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
postgres_data:
|
postgres_data:
|
||||||
minio_data:
|
minio_data:
|
||||||
|
|||||||
2
servers/dolphin-traversal/.dockerignore
Normal file
2
servers/dolphin-traversal/.dockerignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*.md
|
||||||
|
.git
|
||||||
51
servers/dolphin-traversal/Dockerfile
Normal file
51
servers/dolphin-traversal/Dockerfile
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Dolphin Emulator Traversal Server
|
||||||
|
# Lightweight NAT hole-punching relay for Dolphin netplay
|
||||||
|
# Supports ALL GameCube/Wii games via Dolphin
|
||||||
|
|
||||||
|
# --- Build stage ---
|
||||||
|
FROM debian:bookworm AS build
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
build-essential cmake git pkg-config \
|
||||||
|
libfmt-dev libenet-dev libcurl4-openssl-dev \
|
||||||
|
libbz2-dev liblzma-dev libzstd-dev zlib1g-dev \
|
||||||
|
liblzo2-dev liblz4-dev libspng-dev \
|
||||||
|
libusb-1.0-0-dev libevdev-dev libpugixml-dev libxxhash-dev \
|
||||||
|
libminiupnpc-dev libhidapi-dev libsystemd-dev libudev-dev \
|
||||||
|
glslang-dev glslang-tools \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /dolphin
|
||||||
|
|
||||||
|
RUN git clone --depth 1 https://github.com/dolphin-emu/dolphin.git . \
|
||||||
|
&& git submodule update --init --recursive --depth 1
|
||||||
|
|
||||||
|
RUN mkdir build && cd build && cmake .. \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DENABLE_QT=OFF \
|
||||||
|
-DENABLE_NOGUI=OFF \
|
||||||
|
-DENABLE_CLI=OFF \
|
||||||
|
-DENABLE_TESTS=OFF \
|
||||||
|
-DUSE_DISCORD_PRESENCE=OFF \
|
||||||
|
-DENABLE_AUTOUPDATE=OFF \
|
||||||
|
-DENABLE_ANALYTICS=OFF
|
||||||
|
|
||||||
|
RUN cd build && cmake --build . --target traversal_server -j$(nproc)
|
||||||
|
|
||||||
|
# --- Runtime stage ---
|
||||||
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
libfmt9 libstdc++6 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN useradd -r -s /bin/false dolphin
|
||||||
|
|
||||||
|
COPY --from=build /dolphin/build/Binaries/traversal_server /usr/local/bin/traversal_server
|
||||||
|
|
||||||
|
USER dolphin
|
||||||
|
|
||||||
|
EXPOSE 6262/udp
|
||||||
|
EXPOSE 6226/udp
|
||||||
|
|
||||||
|
CMD ["traversal_server"]
|
||||||
Reference in New Issue
Block a user