Files
eden-room/README.md
T
DawnsorrowandCursor e89943224d Add Eden Smash Ultimate VPS room deployment scripts.
Provides install/update systemd workflow for git-based deploys to Ubuntu VPS.

Co-authored-by: Cursor <[email protected]>
2026-06-20 22:47:19 -05:00

3.5 KiB
Raw Blame History

eden-room

Deploy a dedicated Eden multiplayer lobby on an Ubuntu VPS. Designed for git-based deploys (git clone / git pull).

Default game: Super Smash Bros. Ultimate (01006A800016E000).

Requirements

  • Ubuntu VPS with a public IP
  • Port 24872 open (TCP + UDP) in cloud firewall and UFW
  • Eden token from your PC (~/.config/eden/qt-config.inieden_token)
  • Optional: DNS A record (grey cloud / DNS-only in Cloudflare) pointing at the VPS

Cloudflare proxied (orange cloud) records do not work for game traffic. Use DNS-only.

Quick start (VPS)

sudo apt update && sudo apt install -y git curl

sudo git clone https://your-gitea.example.com/you/eden-room.git /opt/eden-room
cd /opt/eden-room

cp env.example .env
chmod 600 .env
nano .env   # set EDEN_TOKEN, ROOM_NAME, etc.

sudo ./scripts/install.sh
sudo systemctl start eden-room
sudo journalctl -u eden-room -f

Deploy updates

On the VPS after pushing changes to Gitea:

cd /opt/eden-room
sudo ./scripts/update.sh

Re-download the eden-room binary when Eden releases a new version:

# bump EDEN_RELEASE_VERSION in .env first, then:
sudo UPDATE_BINARY=1 ./scripts/update.sh

Configuration (.env)

Variable Description
EDEN_TOKEN From Eden config on your PC (required for public listing)
ROOM_NAME 420 characters, shown in public lobby browser
ROOM_DESCRIPTION Optional lobby description
PREFERRED_GAME Display name for the lobby
PREFERRED_GAME_ID Hex title ID (01006A800016E000 for Smash Ultimate)
PORT Room port (default 24872)
MAX_MEMBERS 216 players
PASSWORD Optional room password
WEB_API_URL Metaserver URL (default https://api.ynet-fun.xyz)
EDEN_RELEASE_VERSION Eden release tag for binary download
EDEN_ROOM_ARCH x86_64-unknown-linux-musl or aarch64-unknown-linux-musl

How players connect

Public lobby: Eden → Multiplayer → Browse Public Game Lobby

Direct connect: Eden → Multiplayer → Direct Connect

  • Server: your domain or VPS IP
  • Port: 24872 (or whatever you set in .env)

In-game, use local wireless / LDN — not Nintendo Online.

Verify public listing

curl -s https://api.ynet-fun.xyz/lobby | jq '.rooms[] | select(.name == "YOUR_ROOM_NAME")'

Troubleshooting

Service won't start

sudo journalctl -u eden-room -n 50 --no-pager
cat /opt/eden-room/logs/eden-room.log

Public listing fails but room works

Some VPS hosts hit JWT registration errors. Players can still Direct Connect. If the lobby browser doesn't load, add to /etc/hosts:

28.165.181.135 api.ynet-fun.xyz

Check port is listening

sudo ss -tulnp | grep 24872

Repository layout

eden-room/
├── env.example          # copy to .env (gitignored)
├── banlist.txt          # room ban list (persisted)
├── scripts/
│   ├── install.sh       # first-time VPS setup
│   ├── update.sh        # git pull + restart
│   └── start-room.sh    # invoked by systemd
├── systemd/
│   └── eden-room.service  # reference unit file
└── bin/
    └── eden-room        # downloaded by install.sh (gitignored)

Push to Gitea

On your dev machine:

cd eden-room
git remote add origin https://your-gitea.example.com/you/eden-room.git
git push -u origin main

Never commit .env — it contains your Eden token.