Provides install/update systemd workflow for git-based deploys to Ubuntu VPS. Co-authored-by: Cursor <[email protected]>
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.ini→eden_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 |
4–20 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 |
2–16 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.