Skip to content

Dune: Awakening

Server-side support for a self-hosted Dune: Awakening battlegroup. Players install nothing. The sidecar is required; the plugin is optional.

  • 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.

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.

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=ServiceBroadcast

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’s internal authentication backend and create an fls user.
  • docker-exec: set DUNE_RMQ_CONTAINER and mount the Docker socket.
  • kubectl-exec: set DUNE_K8S_NAMESPACE and DUNE_K8S_POD for stock Funcom k3s.

Start the sidecar:

Terminal window
docker compose -f docker-compose.example.yml --env-file .env up -d --build

Without 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:

Terminal window
npm ci --omit=dev
npm run catalogue
node dist/index.js

Set 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.

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:

Terminal window
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.

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.

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).

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.

✅ 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.

Download the Dune: Awakening connector