Dune: Awakening
Server-side support for a self-hosted Dune: Awakening battlegroup. Players install nothing. The sidecar is required; the plugin is optional.
Install
Section titled “Install”Requirements
Section titled “Requirements”- A self-hosted Dune battlegroup with a Funcom self-hosting token.
- Docker Compose or Node.js 22 on a host that can reach Postgres and the game RabbitMQ.
- A Takaro game server using the Generic connector and its registration token.
- About 16 GB of free memory for one map server; the CPU must support AVX2.
Download
Section titled “Download”Open the latest dune-vX.Y.Z release on
https://github.com/gettakaro/connectors/releases and download:
takaro-dune-sidecar-linux-<build>-<version>.tar.gz— required.takaro-dune-plugin-linux-<build>-<version>.tar.gz— optional.
Choose archives whose <build> matches your self-hosted server. Check them against
SHA256SUMS. Do not download the GitHub-generated “Source code” archives.
Configure the map server
Section titled “Configure the map server”Add both arguments to every map server process:
-ini:engine:[ConsoleVariables]:server.NotificationSystem.Enabled=true-ini:engine:[FuncomLiveServices]:ServerCommandsAuthToken=<a-long-random-secret>Add the commands below to
DuneSandbox/Saved/Config/LinuxServer/UserGame.ini, then restart the map server:
[AdminSetting.Global]+Allowed_GM_Commands=KickPlayer+Allowed_GM_Commands=ServiceBroadcastInstall the sidecar
Section titled “Install the sidecar”Unpack the sidecar archive and rename its folder to sidecar. Move docker-compose.example.yml
and .env.example out of it to beside it, and rename .env.example to .env. Keep .env
outside sidecar/: an upgrade replaces that folder.
dune-connector/├── docker-compose.example.yml├── .env└── sidecar/Set these values in .env:
| Setting | Value |
|---|---|
TAKARO_REGISTRATION_TOKEN |
Registration token from the Takaro game server. Can be pasted later, see below. |
TAKARO_IDENTITY_TOKEN |
Leave empty. The sidecar generates one and keeps it in /data. |
TAKARO_SERVER_NAME |
Optional. Takaro server names must be unique; empty uses Dune (<identity>). |
TAKARO_SENDER_NAME |
The same value as Takaro’s serverChatName. |
DUNE_PG_URL |
Read-only Postgres URL, including the build-specific database name. |
DUNE_RMQ_URL |
AMQPS URL for the game RabbitMQ, not the admin RabbitMQ. |
DUNE_RMQ_TLS_INSECURE |
true when using Funcom’s self-signed broker certificate. |
DUNE_GM_AUTH_TOKEN |
The exact ServerCommandsAuthToken configured above. |
DUNE_GM_PUBLISHER |
amqp, docker-exec, or kubectl-exec as described below. |
Choose the publisher that matches the battlegroup:
amqp: enable RabbitMQ’sinternalauthentication backend and create anflsuser.docker-exec: setDUNE_RMQ_CONTAINERand mount the Docker socket.kubectl-exec: setDUNE_K8S_NAMESPACEandDUNE_K8S_PODfor stock Funcom k3s.
Start the sidecar:
docker compose -f docker-compose.example.yml --env-file .env up -d --buildWithout a registration token the log shows a TAKARO_REGISTRATION_TOKEN not set banner and the
sidecar stays offline. Paste the token into .env and save it: the sidecar connects within a
few seconds, no restart needed. The same applies to TAKARO_IDENTITY_TOKEN, TAKARO_WS_URL and
TAKARO_SERVER_NAME; other .env changes need docker compose ... up -d again.
For a plain Node.js installation, run this inside the unpacked sidecar instead:
npm ci --omit=devnpm run cataloguenode dist/index.jsSet the DUNE_* values in the environment. The Takaro values are also read from ../.env
(beside sidecar/), and saving that file applies them without a restart. TAKARO_PROTOCOL is
read from it too, at start only.
The installation is ready when the log contains Identified with Takaro, the game server is
online in Takaro, and http://127.0.0.1:18891/health reports ok.
Optional plugin
Section titled “Optional plugin”The plugin adds live positions, entity kills, and detailed death attribution. Stop the map
server, unpack libtakaro-dune.so outside the game directory, and start only the map process with:
LD_PRELOAD=/opt/takaro/libtakaro-dune.so \TAKARO_PLUGIN_TOKEN=<shared-secret> \./DuneSandbox/Binaries/Linux/DuneSandboxServer-Linux-Shipping ...Set the same secret as DUNE_PLUGIN_TOKEN and set
DUNE_PLUGIN_URL=http://127.0.0.1:18890 for the sidecar. The sidecar must share the map
container’s network namespace or run on its host. Never apply LD_PRELOAD to the complete
battlegroup.
Optional shutdown hook
Section titled “Optional shutdown hook”Dune’s shutdown command displays a countdown but does not stop the map process. Set
DUNE_SHUTDOWN_CMD to an operator-owned stop script if Takaro should complete shutdowns. Without
the hook, the connector reports shutdown as unavailable.
Map in Takaro
Section titled “Map in Takaro”The sidecar declares the Hagga Basin map to Takaro: map id survival_1, x to the right, y
down, and the playable square from -457200 to 355600 on both axes (Unreal centimetres). It reads
these numbers from the server’s own level data. The dedicated server contains no map image, so you
upload one yourself: open the game server in the Takaro dashboard, go to the map, and upload the
image for Hagga Basin. Takaro uses the calibration from the connector and does not ask for one.
The image must be square and show exactly the playable square:
- the top-left pixel is the north-west corner (
x = -457200,y = -457200); - the bottom-right pixel is the south-east corner (
x = 355600,y = 355600).
The game’s own minimap texture T_Survival_WorldMap_MiniMap_D (4096 x 4096) has exactly this
frame. Export it as PNG from your own game client install (DuneSandbox/Content/Paks, for example
with FModel) and upload it unchanged. A screenshot of the in-game map works too, if you crop it to
the same square. Do not share the exported image: it is Funcom’s artwork.
Players on other maps (Deep Desert, social hubs) carry their own map id, for example
deepdesert_1, so they never show up on the Hagga Basin image. Those maps are not declared yet.
The map needs Takaro protocol version 1. Set TAKARO_PROTOCOL=0 in .env to stay on version 0;
this needs a restart (docker compose ... up -d, or restart node dist/index.js).
Upgrade
Section titled “Upgrade”Unpack the new sidecar archive somewhere else, replace only the sidecar folder with it, then
run the start command again. Keep .env and the sidecar /data volume; /data holds the
identity and connector-managed bans, so the server keeps its identity. To upgrade the plugin, stop the map server, replace
the .so with one for the same server build, and start it again.
What works, what doesn’t
Section titled “What works, what doesn’t”✅ supported · ⚠️ supported with a caveat · ❌ unavailable
| Feature | Status | Notes |
|---|---|---|
| Connection and heartbeat | ✅ | Server remains online while the sidecar runs. |
| Player list and lookup | ✅ | Includes names, identifiers, state, and position. |
| Player location | ✅ | Live with plugin; last saved position without it. |
| Player inventory | ✅ | Includes backpack and equipped gear. |
| Give an item | ✅ | Delivered without requiring a relog. |
| Item catalogue | ✅ | Generated during installation with display names. |
| Entity catalogue | ✅ | Full creature list requires the plugin. |
| Locations and points of interest | ⚠️ | Available, but Generic Takaro servers do not request them. |
| Console commands | ✅ | Unknown commands return a clear failure. |
| Broadcast messages | ⚠️ | On-screen panel is named; chat sender appears as []. |
| Private messages | ✅ | Delivered to one player. |
| Teleport player | ✅ | Position is re-read after moving. |
| Kick player | ✅ | Player can reconnect afterward. |
| Timed and permanent bans | ✅ | Connector enforces bans when players join. |
| Unban and ban list | ✅ | Expired bans are excluded automatically. |
| Server shutdown | ⚠️ | Requires an operator-provided stop hook. |
| Player joined and left events | ✅ | Includes quit, kick, and crash departures. |
| Player chat events | ✅ | Connector messages are not echoed back. |
| Player death events | ✅ | Includes environment, fall, and NPC causes. |
| Entity kill events | ✅ | Plugin reports entity and weapon display name. |
| Log events | ⚠️ | Secrets are redacted; at most 50 lines per 30 s are forwarded; Takaro does not retain logs. |
| Map | ⚠️ | Hagga Basin, calibrated by the connector; you upload the image (see Map in Takaro). Needs Takaro protocol v1 (not yet on takaro.io). |
| Module chat commands | ✅ | Commands run and answer in game chat. |
| Module hooks and cronjobs | ✅ | Hooks and scheduled jobs run normally. |
| Module teleports | ✅ | Teleport commands move the player. |
| Welcome messages and starter kits | ✅ | Delivered when the player joins. |
| Shop purchases and claims | ✅ | Supports bundles and offline orders. |
| Economy balances and commands | ✅ | Supports balances, debits, and leaderboards. |
| Game chat to Discord | ✅ | Player chat reaches the linked channel. |
| Discord to game chat | ✅ | Human messages render; bot posts are ignored. |
| Discord hooks and notices | ✅ | Hooks, cronjobs, joins, and leaves are posted. |
| Events during Takaro outages | ✅ | Queued and delivered once after reconnecting. |
| Automatic reconnect | ✅ | Recovers after network, server, or sidecar restarts. |
| Game update degradation | ✅ | Unsupported plugin features degrade without stopping others. |
This page is generated from the Dune: Awakening connector’s README in the gettakaro/connectors repository. Corrections belong there.