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

132 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# eden-room
Deploy a dedicated [Eden](https://eden-emu.dev/) 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)
```bash
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:
```bash
cd /opt/eden-room
sudo ./scripts/update.sh
```
Re-download the `eden-room` binary when Eden releases a new version:
```bash
# 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
```bash
curl -s https://api.ynet-fun.xyz/lobby | jq '.rooms[] | select(.name == "YOUR_ROOM_NAME")'
```
## Troubleshooting
**Service won't start**
```bash
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**
```bash
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:
```bash
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.