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]>
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
# 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` | 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
|
||||
|
||||
```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.
|
||||
Reference in New Issue
Block a user