feat: add Dolphin traversal server for GameCube/Wii netplay
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:
consultoria-as
2026-03-03 10:26:49 +00:00
parent 9436bb2faf
commit a3bd1ac2e6
3 changed files with 67 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
*.md
.git

View 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"]