Ubuntu port of Funcom's Alpine installer + curated CVar catalog for Dune Awakening private servers. MIT-licensed, with prominent Funcom IP boundary.
  • HTML 40.4%
  • Python 27.4%
  • Rust 15.4%
  • TypeScript 8%
  • Shell 4.9%
  • Other 3.8%
Find a file
Sponge 04689ba704 Merge develop: P3 seam buildout — 4 new seam services + inventory/economy authority decision (#193-#199)
Promotes the P3.3/P3.4 service-seam work to main: #193 inventory/economy authority design,
#194 component re-census, #195 inventory / #196 economy / #197 broadcast / #198 knowledge
seam services, #199 craft/trade gate close-out. Six fat-Rust-shell seam services now built +
isolation-validated; remaining work is world-gated (DB swap, oracle cutover) or the P3.5
realtime core.
2026-06-18 13:08:17 -07:00
clean-room-server P3 #198/#199: build the tech-knowledge seam service (6th) + definitively close the craft/trade gate 2026-06-18 12:28:51 -07:00
DataExtract Add patch-tiered server CVar tuning catalog 2026-06-16 11:38:06 -07:00
docs P3 #198/#199: build the tech-knowledge seam service (6th) + definitively close the craft/trade gate 2026-06-18 12:28:51 -07:00
rust P3 #198/#199: build the tech-knowledge seam service (6th) + definitively close the craft/trade gate 2026-06-18 12:28:51 -07:00
tools #186 P3.1: asset-extraction tool + map the bind-half-live load constraints 2026-06-16 17:43:00 -07:00
ubuntu-scripts #186 P3.1: diagnose engine-content boot crash + prove native registration at runtime 2026-06-16 16:14:27 -07:00
web Patches panel: cheat_unlock + ini proven path, fix misleading prefer badge 2026-06-11 01:29:02 -07:00
.gitignore #190 P3.4 pilot: first fat-Rust-shell gameplay service (svc/persist) built + live-validated 2026-06-16 20:50:36 -07:00
install-r1.sh R2.1: dual-stack posture — keep bash+Python as supported secondary, recommend Rust+Node 2026-06-06 11:47:02 -07:00
ISSUES.md ISSUES: document cosmetic db-dbdepl-util Error Job 2026-05-25 20:38:04 -07:00
LICENSE license+readme: prohibit commercial / paid Dune Awakening server operation 2026-05-24 14:30:42 -07:00
README.md web + daemon: guided Configure editor over the full tuning surface + native apply/cvar-check; bash→legacy (#83 #84) 2026-06-08 14:18:20 -07:00

Dune Awakening — Server Tools

A clean, scriptable toolkit for installing, running, and tuning your own Dune: Awakening Self-Hosted Server on Linux.

Steam app 4754530 · self-hosted, private, non-commercial use

License: MIT Stack: Rust + Node + bash Orchestration: k3s Platforms: Ubuntu · Debian · Fedora · Alpine Affiliation: Independent


What this is

Dune: Awakening ships a self-hosted server tool through Steam, but running it well means hand-driving Kubernetes (k3s), containerd image imports, four Funcom operators, and a per-world database. This project wraps all of that in two things you can actually use:

  • One command to stand a server up (dune setup) and one to run it (dune server start), on any common Linux distribution.
  • A documented map of every value you can tune — thousands of console variables (CVars) and class config settings, extracted from your own server binary and organized so you can find the knob you want.

You bring a Steam-purchased copy of the server tool; this repository brings the glue, the automation, and the reference material. Nothing here is a Funcom product, and no Funcom game content is redistributed (see Legal & IP boundary).


Table of contents


Choose your stack

The Rust dune binary + Node/React-TSX web UI is the correct, recommended way forward — that is where the work goes. The bash ubuntu-scripts/ + Python web server are legacy: kept as a battle-tested fallback/reference, but no longer the path new features land on. Use the Rust + web stack unless you have a specific reason to stay on bash.

Rust dune + web UI (recommended) bash ubuntu-scripts/ + Python web (legacy)
What One distro-agnostic Rust binary plus a Node + React/TSX web interface. The original Ubuntu port of Funcom's Alpine installer plus a Python panel server.
Best for Everything — new installs on any common distribution and a graphical control panel. A fallback for the longest-running, most-exercised code path; reference.
Distro model Abstracts the init system and package manager — runs on systemd and OpenRC, apt and dnf and apk. Targets systemd + apt (Ubuntu/Debian family).
Install install-r1.sh ubuntu-scripts/setup.sh

Both stacks drive the exact same underlying system — k3s, kubectl, steamcmd, the Funcom battlegroup lifecycle, and the edge-advertisement step. The opaque bg-util editor handoff is preserved byte-for-byte in both. Server-data extraction (tools/dune-extract/, Python) is shared by both and feeds the web viewers — it is the canonical extractor, not part of the legacy bash stack.


Prerequisites

Requirement Why
A Steam-installed Dune: Awakening Self-Hosted Server (app 4754530) Supplies the container images and Funcom scripts the installer imports.
Rust toolchain Builds the dune binary.
Node.js 20 or newer Builds the web UI (skip with --no-web).
jq, openssl, curl Runtime helpers the installer checks for.

Install

# From the repository root:
./install-r1.sh            # build + install to /usr/local/bin (prompts for sudo)
# Alternatives:
./install-r1.sh --user     # install to ~/.local/bin (no sudo)
./install-r1.sh --no-web   # the dune binary only, skip the web UI
./install-r1.sh --build-only

This installs dune, the dune-server and battlegroup command aliases, and a dune-web launcher.

Stand up and run a server

dune doctor                # read-only: confirm detected distro / init / package manager
dune setup                 # install k3s + operators, then create your world
dune server start          # bring the world up and print the player connect address
dune server status         # live world + per-map game-server state

No need to type sudo. Cluster commands need root to read k3s's configuration. Run dune-server status (or setup, battlegroup, etc.) as your normal user and the binary re-launches itself under sudo automatically, prompting once. Read-only commands such as dune doctor never ask.

Optional: the web control panel

dune daemon &              # privileged loopback API on 127.0.0.1:8787
dune-web                   # serve the web UI on 127.0.0.1:8080

Open http://127.0.0.1:8080 for the home portal, the install/server panels, and the item and CVar database browsers. The API contract is documented in docs/api/daemon-api.md; build details live in rust/README.md and web/README.md.


Quick start — bash (legacy)

The bash stack is legacy — kept as a battle-tested fallback. New features land on the Rust + web stack above; use this only if you have a specific reason to prefer the original Ubuntu path.

# 1. Steam-install the server tool (app 4754530) and note its folder.
# 2. Host prerequisites:
sudo apt update && sudo apt install -y jq openssl coreutils gawk grep curl sudo
sudo add-apt-repository multiverse && sudo apt install -y steamcmd   # for `battlegroup update`

# 3. Install k3s (single-binary Kubernetes — official one-liner):
curl -sfL https://get.k3s.io | sh -

# 4. Run the installer (preflight runs first and fails fast on missing deps):
bash ubuntu-scripts/setup.sh

Full prerequisites, the battlegroup admin CLI (status | start | stop | restart | edit | backup | ...), and troubleshooting are in ubuntu-scripts/README.md. Known bootstrap quirks are tracked in ISSUES.md.


The dune command surface

A single binary, dispatched by subcommand (and by the dune-server / battlegroup aliases).

Command Purpose
dune setup Preflight, install k3s, install the four Funcom operators, and create a world.
dune server start | stop | restart | status | address | edge World lifecycle and the player-facing connect address.
dune battlegroup ... Battlegroup administration (list, status, backup, edit, and more).
dune cvar-check Boot-time read-back: verify which CVars your world actually loaded.
dune cvar-dump / config-dump / tuning-dump Offline catalog generation from your own server binary (CVars / class config / combined).
dune doctor Read-only probe of the detected distribution, init system, and package manager.
dune net status | sync | mode Network mode (direct port-forward vs tunnel) and host-IP-change reconciliation.
dune daemon The privileged, loopback-only HTTP API the web UI talks to.

Tuning your server (CVars & class settings)

A Dune: Awakening server is tuned through console variables (CVars) in UserEngine.ini and class config settings ([/Script/Module.Class] sections) in UserGame.ini. Apply changes with battlegroup apply-default-usersettings, then restart the world.

The hard part is knowing what exists. This repository ships a curated, generated catalog under DataExtract/CVAR/:

Start here What it gives you
TUNING-SURFACE.md The map of everything tunable without modifying the game binary — which CVars and class settings are reachable from an INI file versus which are hardcoded or cheat-gated.
tuning-surface.html A single self-contained browser view of the entire INI-reachable surface, with search, filters, and copy-to-INI.
CVARS-INDEX.md The console-variable index — 38 namespaces, each with its own detail file (for example CVARS-Vehicle.md, CVARS-Sandworm.md, CVARS-Net.md).
CVARS-SERVER.md The server-relevant console variables.
CONFIG-SETTINGS.md The UCLASS config settings for UserGame.ini / UserEngine.ini.

These files document names and behavior extracted from the binary you own; the names themselves remain Funcom's intellectual property. Regenerate the catalog from your own server binary with dune cvar-dump, dune config-dump, and dune tuning-dump.

Note. Some values are flagged inside the game engine as cheat-only and are silently ignored when set from a normal config file on a stock shipping server. TUNING-SURFACE.md marks these; dune cvar-check shows you what your running world actually loaded.


Platform support

The distro-agnostic stack abstracts the init system and package manager rather than assuming any one distribution. "End-to-end" below means a full run of dune setup through to game servers reporting Running.

Distribution Init / packages Status
Ubuntu 24.04 / 26.04 systemd / apt Verified end-to-end on live bare metal and in a VM (both game servers running).
Debian 12 systemd / apt Verified end-to-end in a VM (both game servers running).
Fedora 43 systemd / dnf Verified end-to-end in a VM (both game servers running).
Alpine 3.21 OpenRC / apk (musl libc) Verified end-to-end in a VM (one game server running; the second is purely a memory-sizing limit, not a code limit).
Arch, RHEL/Rocky/Alma, openSUSE systemd / pacman, dnf, zypper Detected and mapped by dune doctor; full bring-up not yet exercised.

The compiled dune binary is also available as a single static (musl) artifact that runs on both glibc and musl hosts. Detailed evidence and per-distribution notes are in docs/SUPPORT-MATRIX.md.


Project layout

Path Contents
rust/ The dune binary (dune CLI library + crate) and the privileged loopback daemon.
web/ The Node + React/TSX web UI (home portal, install/server panels, item and CVar viewers).
ubuntu-scripts/ The bash installer and battlegroup admin CLI (the legacy stack).
tools/dune-extract/ The Python extraction tooling shared by both stacks (the canonical extractor, not part of the legacy bash stack).
DataExtract/CVAR/ The curated, generated CVar and class-config catalog.
docs/ Architecture, the daemon API contract, the platform support matrix, and connectivity references.
install-r1.sh Build-and-install entry point for the recommended stack.
ISSUES.md Known bootstrap quirks and their workarounds.

Security model

  • The daemon binds loopback only (127.0.0.1) and is the single component that performs privileged operations. The web server reverse-proxies to it; the browser never holds the daemon token.
  • Privilege is requested, not assumed. Cluster commands self-elevate through sudo only when run as a non-root user, and only for operations that need it.
  • The bg-util editor handoff is kept byte-identical to Funcom's original invocation, so the opaque editor integration is never altered.
  • Your credentials stay yours. Your Funcom login token and any instance- specific addresses are read at runtime and are never committed to this repository.

Not affiliated with Funcom. Provided as-is, for private-server use only.

Dune: Awakening is the intellectual property of Funcom Oslo A/S and the Dune rights holders (Legendary Entertainment, Herbert Properties LLC). All trademarks, characters, lore, game content, and engine-string identifiers cataloged here (CVar names and UCLASS paths) remain the sole property of their respective rights holders. Only the original installer code, tooling, and the curation, organization, and annotation of the catalog are MIT-licensed work in this repository. You must independently purchase and Steam-install the Self-Hosted Server tool from Funcom to use any of this. The full boundary is in LICENSE.

Takedown / rights-holder contact. If Funcom Oslo A/S, the Dune rights holders, or any party with a legitimate IP claim wishes this repository to be taken down, modified, or amended in any way, please contact sponge@unityailab.com or contact@unityailab.com directly. This repository operates in full compliance with the wishes of all named IP holders and will be removed or amended on request — no cease-and-desist or legal escalation needed. A direct email to either address is the fastest path to resolution.

Not redistributed here (and enforced by .gitignore): Funcom's container images (images/), Funcom's original Alpine scripts (scripts/), any personal Funcom login token, and raw uncurated string dumps. Forks must preserve these exclusions — Funcom's content and personal credentials never belong in a derivative repository.


License, use restrictions & contributing

Original work is licensed MIT with a prominent IP-boundary notice — see LICENSE.

You may

  • Fork, modify, and redistribute the original code and the curation of the catalog under MIT.

You may not

  • Claim ownership of CVar names, UCLASS paths, or Dune trademarks — those remain Funcom's.
  • Redistribute Funcom's images/ or scripts/ — they are not in this repository and not covered by its license.
  • Run a commercial or paid Dune: Awakening server with this tooling. Paid access, paid boosters, pay-for-play, server-rental businesses, donation-tier- gated content, or any arrangement exchanging money for access to a server running on this tooling is prohibited. This repository is for private, non- commercial servers only. Funcom has not sanctioned commercial self-hosting, and running one undermines that goodwill.

Contributing — clean-room hygiene. Do not paste from Funcom's Alpine scripts. Describe the desired behavior in plain English in your issue or pull request, and the fix is derived independently. Running on a distribution outside those listed above? Open an issue — dune doctor and the bash preflight warn on unknown systems, and small adjustments may be all that is needed.