Provides install/update systemd workflow for git-based deploys to Ubuntu VPS. Co-authored-by: Cursor <[email protected]>
132 lines
3.5 KiB
Markdown
132 lines
3.5 KiB
Markdown
# 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.
|