A deploy tool, a server mod and a Discord bot for Linux VPS and dedicated servers.
Answer a few questions and get a running server with live skills and leaderboards, two-way chat,
a 🐧 penguin hunt leaderboard, raid alerts, automatic backups and updates, and full control from Discord.
🌐 Website · 🚀 Quick start · ✨ Features · 📸 Screenshots · 🤖 Bot · 🔧 Mod & API · 🏢 For game hosts · 💬 Help
Note
Players don't install anything. Everything runs on the server, and people join as usual.
Never set up a server before? This is for you. It takes about 15 minutes, most of it waiting for the game to download.
| 🖥️ A Linux server | A VPS or dedicated server with Ubuntu 22.04 or newer or Debian 12+, 64-bit. The game wants 2 GB of RAM plus 1 GB per player, so 8 GB for a full server of 6. About 20 GB of disk. |
| 💬 A Discord server | One where you can add bots (you own it or you're an admin). |
| 🎮 Your Dragonwilds Player ID | In the game: Settings, at the very bottom (there's a copy button). It makes you the server's owner. |
- Open the Discord Developer Portal and click New Application. Name it after your server.
- Go to Bot, click Reset Token and copy the token somewhere safe. It's a password: never share it.
- On the same page, turn on Message Content Intent and save.
- In Discord: User Settings → Advanced → Developer Mode on. Then right-click your own name and Copy User ID.
You don't need to invite the bot yet: the installer gives you the link.
Your host gives you an IP address, a user (often root or ubuntu) and a password or key.
On Windows open Terminal (or PowerShell); on a Mac open Terminal. Then:
ssh root@YOUR.SERVER.IPType yes if it asks about the fingerprint, then your password (it stays invisible while you type).
Paste this and press Enter:
curl -fsSLO https://raw.githubusercontent.com/joaopmsilva/RSDWServerAPI/main/install.sh && sudo bash install.shIt checks your system, then asks:
| Question | What to put |
|---|---|
| Your Dragonwilds Player ID | From the game, see above |
| Server name, world name | Anything you like. Players find the world by its exact name (16 characters at most) |
| World password | Enter for none, or a password to keep it private |
| Admin password | Press Enter to take the generated one, or pick your own |
| Game port | Press Enter for 7777 |
| Bot token | The token from step 1 (it's checked with Discord straight away) |
| Your Discord user ID | From step 1. This makes you an admin of the bot |
| Daily restart time | When to update and restart each day, like 05:00 |
Then it does everything else by itself: packages, Node.js, the game server (about 6 GB), the mod, the bot, the services, hourly backups, the daily restart and the firewall.
At the end the installer prints an invite link. Open it, pick your Discord server and press Authorize. The bot makes its own channels straight away:
📁 Your Server Name
#server-info how to join, who's on, server health (always up to date)
#server-status online / offline / restarts / backups
#game-chat talk to players in game from Discord
#activity level-ups, quests, the weekly recap
#deaths who died, and to what
#bot-commands use the bot here
#link-your-character players link their Discord to their character
and sends you a DM with the admin commands. Drag the category wherever you like.
In the game: Worlds → Public, search your world name, join. To get admin in game, open
Settings → Server Management and enter the admin password (the installer keeps it in
/etc/rsdw/install.env).
Tip
Can't find the server? Your host may have its own firewall in its control panel: allow
UDP 7777 there. Crossplay servers also show an invite code in #server-info for console players.
🔄 Updating, changing settings, and where everything lives
| To... | Do |
|---|---|
| Update the bot and mod | Nothing: you get a DM with an Update now button when a release comes out. Or /admin update |
| Update the game | Automatic, every day at your restart time. Or /server action:update |
| Change your answers | sudo bash install.sh --reconfigure |
| Update everything by hand | sudo bash install.sh again (your world, settings and bot data are kept) |
| More bot settings | sudo nano /home/dragonwilds/rsdw-bot/.env, then sudo systemctl restart rsdw-bot (all explained in CONFIG.md) |
| Restart the game server | /server action:restart in Discord, or sudo systemctl restart dragonwilds |
| Watch the bot's log | sudo journalctl -u rsdw-bot -f |
| What | Where |
|---|---|
| Game server | /home/dragonwilds/rs_server (service dragonwilds) |
| Game settings | rs_server/RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini |
| Mod and its settings | rs_server/librsdwapi.so, rs_server/rsdwapi/settings.ini |
| Discord bot | /home/dragonwilds/rsdw-bot (service rsdw-bot) |
| Backups | /home/dragonwilds/backups (hourly, newest 10 kept) |
Already run a server set up by hand? The installer picks up your existing settings, or follow the manual setup guide.
|
|
|
|
⚙️ Under the hood
- Update-resistant: the mod finds what it needs by name in the game's own type information, so a patch that moves things around rarely needs a new build
- Self-checking:
/api/diagnosticssays exactly what a game update broke instead of serving nonsense, and the bot DMs the admins about it - Light: about 3% of one core, reading memory instead of running code on the game thread
- Instant events: chat, joins, deaths, kills and penguins reach Discord as they happen
- REST API and optional Source RCON, each with auth, an IP whitelist and rate limits (MOD.md)
- Safe by default: the API only listens on the machine itself, the bot can only start, stop and restart the game service, and admin commands only answer the IDs you gave
- Bans that survive restarts, offline players by SteamID64
Sample players. Rendered from the bot's own embed code by bot/docs/screenshots/generate.mjs, so they match what the bot posts.
flowchart LR
subgraph VPS["🖥️ Your Linux server, set up by install.sh"]
direction LR
Game["🐉 Dragonwilds server<br/><sub>+ librsdwapi.so</sub>"]
API[("REST API<br/><sub>127.0.0.1:8080</sub>")]
Bot["🤖 Discord bot<br/><sub>Node.js · systemd</sub>"]
Game --- API
Bot -- "players, events,<br/>broadcast, kick" --> API
end
Bot <-- "slash commands,<br/>chat, notices" --> Discord(["💬 Discord"])
Players(["🧑🤝🧑 Players"]) <--> Game
| Part | What it is |
|---|---|
The mod · librsdwapi.so |
Loaded into the game server with LD_PRELOAD. Reads players, quests, kills and penguins straight from the game's memory and serves them over a local REST API, plus a live event feed (chat, joins, leaves, deaths, kills, penguins). Details in MOD.md. |
The bot · bot/ |
Runs next to the server as its own service and talks to the API. Keeps running while the server is down, and remembers everyone's last known stats. |
The installer · install.sh |
Sets up the machine, the game, the mod and the bot, and the services, backups and daily restart that keep them running. Run it again to update. |
Updating the bot never needs a server restart. A new mod build loads at the next server start.
Run a game server hosting company? The mod is one file loaded with LD_PRELOAD, and the bot is a
small Node.js app, so both fit panel-based hosting (Pterodactyl, Pelican and others).
HOSTING.md explains how to offer it, and I'm happy to help set it up.
- Questions, bugs, ideas: message me on Discord, joaosilvajs (my DMs are open), or run
/admin contactin your server - Bug reports: GitHub issues. Include your versions (
/admin updateshows them) and, for a crash, the newest file in the bot'sdata/crashes/ - After a game patch something may stop working until the next release:
/admin diagnosticsshows what
| bot/README.md | Everything the Discord bot does, command by command |
| bot/CONFIG.md | Every bot setting |
| MOD.md | The mod: settings, REST API, RCON, in-game commands |
| DEPLOY.md | Setting it all up by hand, and the developer's update scripts |
| HOSTING.md | For game server hosts |
| 📜 Quest guides | Every Dragonwilds quest and activity guide, by the same author |
| 🐧 Penguin map | All 208 penguin spots on an interactive map |
Issues and pull requests are welcome, especially after a game patch. If something stops working,
include the output of /api/diagnostics and the start of rsdwapi/logs/api.log (the engine
discovery lines), with tokens removed.
Released under the MIT License, see LICENSE.
The mod is based on dkoz/RSDWServerAPI by Kozejin; the installer, the Discord bot, the event feed and the rest were added on top. Not affiliated with Jagex. RuneScape: Dragonwilds is a trademark of Jagex Ltd. Provided as is, without warranty of any kind; use it at your own risk.


















