Skip to content
Documentation

Getting Started

Install, launch, and get a server running. A native desktop app - no web panel to host, no docker-compose spelunking, no SSH-and-tail-the-log.

Step 1 → 3

Quick start

From download to a running Minecraft server in minutes.

1Install MineUI

Grab the build for your platform from GitHub Releases. Linux gets an AppImage (120 MB, no install - mark it executable and run; GStreamer is bundled so UI audio works everywhere) or a 7.8 MB .deb; Windows a ~6 MB setup exe; macOS a ~7 MB .dmg for both Intel and Apple Silicon:

1 · Linux · AppImage
$ chmod +x MineUI_2.12.0_amd64.AppImage && ./MineUI_2.12.0_amd64.AppImage
2 · Debian / Ubuntu
$ sudo apt install ./MineUI_2.12.0_amd64.deb
3 · Windows
$ MineUI_2.12.0_x64-setup.exe
4 · macOS
$ open MineUI_2.12.0_aarch64.dmg  # Intel: MineUI_2.12.0_x64.dmg

The released binaries are free. Only building from source requires a HeroUI Pro license token - see Contributing. Java is only needed on the machine that runs the server (Simple mode); Advanced mode just needs Docker or Podman.

2Your first server (Simple mode)

Simple mode is the default: MineUI runs a managed vanilla server for you. Open the Create Server flow (for another server later: App Settings → Add server → Plain Minecraft server) and:

  1. Pick a Minecraft version - MineUI downloads the official server jar from Mojang's manifest and verifies its SHA-1 before anything runs.
  2. Set the memory allocation for the Java process.
  3. Accept the Minecraft EULA - the same step you'd do by hand in eula.txt, surfaced in the UI.
  4. Start it. MineUI auto-configures RCON with a generated password and supervises the Java process - start, stop, restart, and crash detection are all handled.

From there the dashboard states the server's condition in one word - Online, Starting up…, Stopped - next to Start, Stop and Restart, plus a How players join card with the address to type for each case; the Status page shows live TPS, MSPT, players, and version; and logs stream in real time - no polling.

The version you picked is not final. Since 2.10.0, with the server stopped, Server Settings → Performance & network → Change version… downloads the server for another Minecraft version, backs the world up first, and switches in place. Moving to an older version needs an extra tick, because an older Minecraft usually cannot open a world saved by a newer one.

3Advanced mode: create or attach a container

Want Paper, Fabric, Forge, or another modded server? Advanced mode runs it in a Docker or Podman container - MineUI auto-detects both runtimes (Podman first). Open App Settings (the sliders button in the header), choose Add server, and pick a route:

  • Modded or modpack server - MineUI creates an itzg/minecraft-server container for you. Pick a server type - Vanilla, Paper, Purpur, Fabric, Quilt, Forge, or NeoForge - the Minecraft version, memory, and ports, and whether the server is reachable from the network or from this computer only. Since 2.11.0, Extra ports for mods (Simple Voice Chat, Plasmo Voice, Geyser, BlueMap, squaremap, Dynmap) are published too; MineUI does not install the mods. MineUI picks the image tag with the Java that version needs, generates the RCON password, and attaches itself. The world lives in a named volume (<container>-data). Added one by mistake? Remove this server on the form drops it before anything is created.
  • A modpack - in the same flow, choose a modpack instead of a server type. Search Modrinth right in the app (only packs that can run on a server are listed, most downloaded first), paste a CurseForge pack's page address or slug, or - since 2.8.0 - pick the zip the CurseForge app makes with Export profile (MineUI reads the pack's name, Minecraft version and loader from its manifest, and the mods download on the container's first start). Pick the Minecraft version, and the server comes up with the pack's loader and mods installed. No API key is needed for any of them; memory defaults to 6144 MB for a pack; a zip for Minecraft 1.16 or older is refused. The pack is applied when the container is created - to switch packs, delete the container in Server Settings and create it again.
  • A container I already run - already running your server in Docker or Podman? Enter the container's name, ports, and RCON password and MineUI attaches to it. itzg/minecraft-server-style containers, with the world under /data, work well.

MineUI does not manage compose files, so yours stay exactly as you wrote them, and deleting is always your call: a container is removed only when you ask - Delete container in the Danger zone of Server Settings (which keeps the server, so you can create it again with another loader or pack), or the tick box when you remove a server. Both keep the world unless you also tick Also delete its world data and type the container's name; a world stored in a folder on your computer is never deleted. You can add up to 16 servers and run them side by side; each keeps its own settings, schedule, and backups, and removing one by itself only makes the app forget it.

How a server is run - Simple or Advanced - is chosen when you add it. Since 2.9.0 there is no Simple/Advanced toggle in the header: changing it lives under Advanced in Server Settings, is refused while the server is running, and asks first - nothing is deleted or moved.

Have a .zip of mods for a server that already exists - a zipped folder, or a server pack? Mods → Add mod or plugin unpacks the jars inside and installs them in one go.

4Installing Podman or Docker

Advanced mode needs a container runtime. Either works; MineUI finds it by itself and prefers Podman when both exist. If neither is installed, the app shows these same steps for your OS wherever a container is needed - the create flow, the dashboard of a container server, Server Settings - with a Check again button. A runtime that is installed but not running (Docker Desktop closed, podman machine stopped) is reported as installed but not responding, with how to start it.

Linux · Podman (recommended) / Docker
# Podman
$ sudo apt install podman   # or: sudo dnf install podman · sudo pacman -S podman · sudo zypper install podman

# Docker
# Install Docker Engine (docs.docker.com/engine/install), then:
$ sudo usermod -aG docker $USER   # log out and back in - MineUI runs docker as you, without sudo
Windows · Podman (recommended) / Docker
# Podman
$ wsl --install   # once, then restart
$ winget install RedHat.Podman
$ podman machine init
$ podman machine start   # or: Podman Desktop (podman-desktop.io)

# Docker
$ winget install Docker.DockerDesktop   # then start it once
macOS · Podman (recommended) / Docker
# Podman
$ brew install podman
$ podman machine init
$ podman machine start   # or: Podman Desktop (podman-desktop.io)

# Docker
$ brew install --cask docker-desktop   # then start it once

Installed, but MineUI still reports none? An app started from a launcher can have a shorter PATH than your terminal (common with Homebrew on macOS). Put the full path to podman or docker in Server Settings → Runtime binary override.

Guides

Feature guides

Every major surface of the app, and what it does for you.

Create a server

The stepper flow behind Simple mode (Add server → Plain Minecraft server): pick a Minecraft version, set memory, accept the EULA - MineUI downloads the SHA-1-verified jar, configures RCON, and supervises the Java process. The flow explains the EULA and RCON, says why Create is disabled when it is, and gives Java install advice for every OS.

Several servers

MineUI manages up to 16 servers at once, each with its own mode, connection, RCON allowlist, scheduled tasks, backup policy, player notes, and activity log. Switch with the header switcher or the dashboard's All servers strip (state, players, start/stop for any server); add, rename, and remove them in App Settings → Servers. Removing a server by itself only makes MineUI forget it - container, world, and backups stay - unless you tick the box to delete its container too. The first server is the only one that cannot be removed.

Create a container

Add server → Modded or modpack server creates an itzg/minecraft-server container - a server type (Vanilla, Paper, Purpur, Fabric, Quilt, Forge, or NeoForge) or a modpack; any Minecraft version; memory; ports (plus, since 2.11.0, Extra ports for mods - a Common mods menu offers Simple Voice Chat, Plasmo Voice, Geyser, BlueMap, squaremap and Dynmap; MineUI only publishes the port, it does not install the mods); reachable from the network or this computer only. MineUI picks the image tag with the Java the version needs, generates the RCON password, and attaches itself. The world lives in a named volume (<container>-data). A Remove this server button on the form drops a server added by mistake before anything is created.

Start from a modpack

In the create flow choose A modpack instead of a server type, then one of three sources: search Modrinth in the app (only packs that can run on a server are listed, most downloaded first), paste a CurseForge pack's page address or slug, or - CurseForge zip, since 2.8.0 - pick the file the CurseForge app makes with Export profile (manifest.json plus an overrides folder). MineUI reads a zip's name, Minecraft version and loader from its manifest and copies it into the container; on the first start the image downloads the listed mods and applies the overrides. Pick the Minecraft version (fixed from the manifest for a zip), and the server starts with the pack's loader and mods installed. No API key for any source; memory defaults to 6144 MB. A zip for Minecraft 1.16 or older is refused - the Java 8 image has no CurseForge API key. The pack is applied when the container is created - to switch packs, delete the container in Server Settings and create it again.

Attach a container

Add server → A container I already run attaches to a Docker or Podman container you set up yourself (auto-detected, Podman first) with the world under /data - e.g. an itzg/minecraft-server image. You enter its name, ports, and RCON password. MineUI does not manage compose files, and deletes a container only on your explicit, confirmed request.

Delete a container

Delete container, in the Danger zone of Server Settings, removes the container and keeps the server, so you can create it again - the way to switch loader or modpack. Remove server in App Settings can take the container along with a tick box. Both keep the world unless you also tick Also delete its world data and type the container's name; then the data volume (world, configs, mods, backups) goes too. A world stored in a folder on your computer is never deleted, and every deletion lands in the activity log. For a Simple server the Danger zone has Delete server files instead: it removes the world, its settings and every backup stored with it, asks for the server's name typed, and is unavailable while the server runs.

Dashboard

The home page states the open server's condition as one thing - Online, Starting up… (running but not answering yet: the minutes a modpack needs on first start), Starting…, Stopping…, Stopped or Crashed - with a sentence saying what to expect. Since 2.11.0 the How players join card shows the address to type - on this computer, on your home network, from the internet (router steps, and a Look up my public address button that contacts api.ipify.org only when pressed) - with a Copy button. Start, Stop and Restart are only enabled when they make sense, say what actually happened, and Stop/Restart ask first when players are online. The log streams live below - no polling.

Status

Whether players can join, game speed (TPS) explained with its 1/5/15-minute averages, MSPT, player count, server version, and resource rings colored by what good means, plus the activity log - in plain words - of every action taken from the app or by the scheduler. When the server is stopped the page says so and carries the Start button.

Players

Online list, join/leave history with last-seen and IP parsed from the log stream, and a private note per player. Whitelist, Kick and Ban are up front; Make admin, Remove admin and Unban sit in a menu. Each action is explained and confirmed in its own words, and the result shown is the server's own reply. A stopped server keeps your notes visible and editable, and the page offers to start it.

Console

The Console page (called RCON before 2.9.0) sends commands to the running server, restricted to an allowlisted command set - only vetted commands ever reach the server, even with raw RCON configured. It shows which commands are allowed, keeps a transcript with Up/Down recall, and confirms stop. The allowlist is edited under Advanced in Server Settings.

Mods & plugins

Browse installed jars and add new ones from one dialog: choose mod or plugin (preselected from what the server runs), then a link (SSRF-hardened download) or a file from this computer (source-validated). A .zip of several mods - a zipped folder, or a server pack - is unpacked and its jars installed in one go, with a count of what was left out; configs in the zip are not installed. After adding or deleting on a running server a restart-to-apply banner carries the Restart button, and a mod made for another loader gets a warning. Server-utils upgrades the list to the true loaded-mod list.

Config editor

Edit server.properties and files under config/ in-app. Since 2.11.0 files are a folder tree with search (it matches the whole path and counts matches), the editor fills the window with line numbers, a Wrap lines switch and Revert, and Ctrl+S saves. A path allowlist keeps every edit inside the server directory. The editor and Save stay off until the opened file's own text has loaded, a failed read offers Try again, and leaving the page or switching files or servers with unsaved edits asks first.

Backups

World snapshots as portable .tar.gz archives - create, list, restore, and delete from the Backups page. A retention policy keeps only the newest N, and every new snapshot can be copied to a directory of your choice (both set in Server Settings → Backups). The page shows how many are kept and that older ones are deleted automatically, whether a second copy is set up, and which backup retention removed after a new one. Restore needs the server stopped and confirms with the backup's date and size, what it rolls back, and where the current world is kept. Backups of a stopped container server are listed like any other.

Scheduled tasks

Automatic restarts (with an optional chat warning 60 s ahead), scheduled backups, and timed chat broadcasts - every N hours, daily, or weekly at a local time, set per server. Jobs run while MineUI is open, for every server and not just the one on screen; a slot missed while it was closed is skipped, not run late.

Metrics

CPU, memory, and disk for the server process, plus network/block IO when attached to a container. Server-utils adds tick-based TPS/MSPT and per-dimension chunk/entity counts.

Server utils

Optional Forge 1.20.1 mod / Paper plugin inside the server JVM exposing an authenticated HTTP API (default 127.0.0.1:8787). Set its URL in Settings for enriched metrics.

Appearance: styles, light mode & sound

Four styles - Deepslate & Emerald (default), Phosphor Amber, Quantum Fluidity, Soft Glass - each with a dark and a light palette. App Settings → Appearance has Mode (Dark, Light, or Match system - Dark is the default), the style picker, and an optional accent override; a pick that would be unreadable on a light ground is shown darker in light mode and kept for dark mode. Light mode works with every style since 2.9.0: Calcite & Emerald, a paper console, Daybreak, and Soft Glass in warm paper and terracotta. Plus bundled offline fonts and UI sound - the volume and the sound set are in App Settings → Sounds.

Server Settings

Settings in the navigation is always the open server's own, in sections ordered by how often they are needed: This server (rename it right there), Performance & network (for a Simple server with Change version…, since 2.10.0: another Minecraft version in place, the world backed up first, the server stopped, an extra tick for an older version), Scheduled tasks, Backups (keep the newest N, second-copy folder with a Browse… folder picker), a collapsed Advanced section - connection details, container runtime and runtime binary override, server-utils URL, console command rules, downloads from your own network, and how the server is run (Simple or Advanced) - and a Danger zone with Delete container or Delete server files. One Unsaved changes - Discard / Save bar covers the whole page and names what is wrong before you save; leaving with unsaved edits asks first. The container name is locked behind Change…, and the RCON password can be revealed. How the server is run cannot be changed while it is running, and asks first. A Simple server also gets Open folder for its files and a Browse… button for the Java location. If neither Podman nor Docker is installed, the page shows the install steps for your OS with a Check again button.

App Settings

The sliders button in the header opens what is not about one server: the server list (add - Modded or modpack server, Plain Minecraft server, or A container I already run - rename, remove, with an optional tick box to delete a removed server's container too) Appearance: mode (Dark / Light / Match system), style, and accent; Sounds: a volume slider and four sound sets - Classic (the original), Blocks (chiptune), Glass (soft bells) and Terminal (relay ticks and beeps) - each with a Preview button; and About: the version and platform, where MineUI keeps its files (copy the path or open the folder), links to the website, changelog and issue tracker, and Check for updates. MineUI never checks on its own - the button asks GitHub for the newest release, tells you whether there is one, and links to the download page; nothing is downloaded or installed for you.

Optional companion

MineUI Server Utils

A small mod inside the server JVM that upgrades MineUI's metrics from educated guesses to ground truth.

mineui_server_utils (v0.2.0) ships as a Forge 1.20.1 mod and a Paper plugin. Drop it into your server's mods/ (Forge) or plugins/ (Paper) folder - it is not a standalone jar and needs JDK 17. It exposes an authenticated HTTP API on 127.0.0.1:8787 with these endpoints: /health, /properties, /players, /tps, /metrics, /mods, and /status.

With it installed, MineUI reads real tick TPS and MSPT, per-dimension chunk and entity counts, the true mod list, and cgroup metrics. Without it, MineUI still works - it falls back to server-list ping plus container/process metrics.

Security notes: binding to anything other than loopback requires setting MINEUI_SERVER_UTILS_TOKEN, and responses strip all rcon.* keys so the RCON password never crosses the wire.

Transparency

Where your configs live

MineUI edits real files in real places - behind a path allowlist - so you can always inspect, back up, or hand-edit them.

server.properties

In your server directory (Simple mode) or the container's /data (Advanced) - edited via the in-app config editor
enable-rcon=true
rcon.port=25575
max-players=20
white-list=true

config/ directory

config/… under the server root - path-allowlisted, so edits can never escape the server directory
config/
├── paper-global.yml
└── <mod or plugin configs>

MineUI app data

Standard per-platform app-data directory (appearance choices, the server list, per-server settings, managed-server state)
Linux    ~/.local/share/studio.i4c.mineui/
Windows  %APPDATA%\studio.i4c.mineui\
macOS    ~/Library/Application Support/studio.i4c.mineui/

Server utils (optional)

mineui_server_utils runs inside the server JVM - API on 127.0.0.1:8787 by default
# Non-loopback binding refuses to start without a token
MINEUI_SERVER_UTILS_TOKEN=<secret>
# rcon.password / rcon.port / query.port are
# always stripped from API responses

Reference

Pages reference

Every page of the app with its capabilities. 11 pages, one click away.

Dashboard

The home page - the open server's controls and live log, plus the All servers strip for everything else MineUI manages

Capabilities

All servers strip: state, players, start / stop for any serverheader server switcherserver identity: loader + version · container · portone status: Online / Starting up… / Starting… / Stopping… / Stopped / Crashed, with what to expectHow players join card: the address to type for this computer, your home network and the internet, each with Copy; router steps, Look up my public address (asks api.ipify.org only when pressed), extra ports, the firewall step for your systemstart / stop / restart - enabled only when they make sense; Stop and Restart ask first when players are onlinelive log

Quick access

Dashboard → Restart

Dashboard → All servers → Start

Forge 1.21.1 · mc-forge · port 25566

Status

Live health in plain words - whether players can join, game speed, resources, and the activity log

Capabilities

"Players can join" - or what state the server is in insteadgame speed (TPS) with 1 / 5 / 15-minute averages + MSPTplayer countserver versionCPU, memory, disk rings colored by what good meansactivity log of every admin and scheduler action, in plain wordsstopped server: says so, with the Start button

Quick access

Status → Game speed (TPS)

TPS 20.0 · MSPT 4.2 · 3 players

Players

Online list plus join/leave history parsed from the log stream, with moderation as buttons - each explained and confirmed

Capabilities

online playersjoin/leave historylast-seen + IP per playerWhitelist / Kick / Ban up frontMake admin / Remove admin / Unban in a menuthe server's own reply shown as the resultprivate note per player - visible and editable while the server is stoppedstopped server: says so, with the Start button

Quick access

Players → select a player → Whitelist

Players → select a player → menu → Make admin

Players → Note → "builder, trusted"

Console

The Server Console page (the nav item was RCON before 2.9.0) - send commands to the running server; only vetted ones run, even with raw RCON access configured

Capabilities

curated command allowlist, shown on the pagetranscript with Up / Down recallpresets built from the allowed commandsstop asks for confirmationPaper/Spigot tps output parsingauto-configured RCON in Simple modestopped server: says so, with the Start button

Quick access

Console → tps

Console → whitelist add Steve

Mods

Browse installed mods and plugins, and add new ones from a link, a file on this computer, or a whole zip of mods

Capabilities

installed-jar browserAdd mod or plugin dialog: mod or plugin, preselected from what the server runsfile from this computer (source-validated)download from a link (SSRF-hardened)unpack a .zip of several mods - jars installed in one go, configs left outrestart-to-apply banner with the Restart button after adding or deleting on a running serverwarning when a mod is made for another loaderworks while a container server is stoppedtrue loaded-mod list with server-utils attached

Quick access

Mods → Add mod or plugin → paste a link

Mods → Add mod or plugin → mods.zip → Several mods

Config

Edit server.properties and files under config/ without leaving the app

Capabilities

folder tree of files, search over the whole path with a match countserver.properties and config/ file editingline numbers, Wrap lines switch, Revert, Ctrl+S to savepath allowlist - edits can't escape the server directoryrelative paths in both modeseditor and Save off until the opened file has loaded; a failed read offers Try againasks before leaving or switching files with unsaved edits

Quick access

Config → server.properties → enable-rcon=true

Backups

World snapshots as portable .tar.gz archives - create, browse, restore, delete

Capabilities

create .tar.gz snapshotlist with creation timestampsrestore - server stopped, confirmed with the backup's date and sizedelete old backupsretention shown: how many are kept, and which backup a new one pushed out (set in Server Settings → Backups)second copy shown: the folder every new snapshot is copied to, or that none is set uplists and deletes while a container server is stopped

Quick access

Backups → Create backup

world-20260926-040000.tar.gz

Settings

Server Settings - the open server's own name, performance, schedule, backups, and connection, in sections ordered by how often they are needed; persisted locally per server

Capabilities

This server: rename it right thereNetwork and ports (container servers): change the extra ports or open a "this computer only" server to your network - the container is rebuilt around the same data volume, server stoppedPerformance & network - for a Simple server with Change version…: another Minecraft version in place, world backed up first, server stopped, an extra tick for an older versionScheduled tasks: restart / backup / broadcast - every N hours, daily, weeklyBackups: keep the newest N + second-copy folder (Browse… opens a folder picker)Simple server: Open folder for the server's files, Browse… for the Java locationAdvanced (collapsed): connection details - container name (behind Change…), ports, RCON password (can be revealed)Advanced: container runtime (Podman / Docker) + runtime binary override, server-utils URLAdvanced: console command rules, downloads from your own networkAdvanced: how the server is run - Simple or Advanced; not while it is running, and it asks firstDanger zone: Delete container (world kept unless you also tick it and type the container's name) or Delete server files for a Simple serverone Unsaved changes - Discard / Save bar; asks before you leave with unsaved editsinstall steps for Podman / Docker when neither is found, with Check again

Quick access

Settings → Scheduled tasks → Add task

Settings → Performance & network → Change version… → pick a version

Settings → Network and ports → add 24454 UDP → Apply

Settings → Advanced → Server-utils URL → http://127.0.0.1:8787

Settings → Danger zone → Delete container → confirm

App Settings

What is not about one server - the server list, appearance (mode, style, accent), sounds, and About. Opened with the sliders button in the header

Capabilities

servers: add, rename, remove (up to 16; the first server cannot be removed)add server: Modded or modpack server / Plain Minecraft server / A container I already runremoving a server deletes nothing by itself - a tick box can take its container along, the world only with a second tick and the container's name typedappearance - Mode: Dark / Light / Match system (Dark by default)appearance - Style: Deepslate & Emerald, Phosphor Amber, Quantum Fluidity, Soft Glass, each with a dark and a light paletteappearance - accent override (shown darker in light mode when it would be unreadable)sounds - volume slider and four sound sets: Classic, Blocks (chiptune), Glass (soft bells), Terminal (relay ticks and beeps), each with Previewabout - version and platform, where MineUI keeps its files (copy the path or open the folder), links to the website, changelog and issue trackerabout - Check for updates: manual only, MineUI never checks on its own; it tells you and links to the download page

Quick access

App Settings → Servers → Add server

App Settings → Appearance → Mode → Light

App Settings → Appearance → Style → Phosphor Amber

App Settings → Sounds → Glass → Preview

App Settings → About → Check for updates

Modded or Modpack Server

The Advanced-mode create flow, opened by Add server → Modded or modpack server - MineUI makes an itzg/minecraft-server container from a server type or a modpack and attaches to it, no command line

Capabilities

A server type: Vanilla, Paper, Purpur, Fabric, Quilt, Forge, NeoForgeA modpack: Modrinth search in the app, a CurseForge pack's page address or slug, or CurseForge zip - the CurseForge app's Export profile file, name and version read from its manifest - no API keyany Minecraft versionmemory + game and RCON ports (6144 MB default for a pack)Extra ports for mods (TCP or UDP) with a Common mods menu: Simple Voice Chat 24454 UDP, Plasmo Voice (game port over UDP), Geyser 19132 UDP, BlueMap 8100, squaremap 8080, Dynmap 8123 - the port is published, the mod is not installedreachable from the network or this computer onlyimage tag with the Java the version needsgenerated RCON passwordworld in a named volume (<container>-data)install steps for Podman / Docker when neither is foundRemove this server - back out before anything is created

Quick access

Add server → Modded or modpack server → A server type → Forge 1.21.1 → Create server

Add server → Modded or modpack server → A modpack → search Modrinth → cobblemon-fabric → 1.21.1

Add server → Modded or modpack server → A modpack → CurseForge zip → pick the exported profile

Create Server

The Simple-mode stepper, opened by Add server → Plain Minecraft server - from nothing to a running vanilla server without a terminal

Capabilities

Minecraft version pickermemory allocationEULA acceptance step, explainedSHA-1-verified official jar downloadRCON auto-configurationJava version check + process supervision, with Java install advice for every OSRemove this server - back out before anything is created

Quick access

Create Server → pick version → set memory → accept EULA

When things break

Troubleshooting

Known issues and their fixes - most are already shipped, so updating usually solves it.

A friend cannot connect to my server

Open the Dashboard and read the How players join card: it shows the address to type for each case - on this computer, on your home network (this computer's network address, not 127.0.0.1) and from the internet (the router steps; Look up my public address contacts api.ipify.org only when you press it) - and says when only this computer can connect and why. A container server created as "this computer only" can be opened to your network in Server Settings → Network and ports (the server has to be stopped; MineUI rebuilds the container around the same data volume, so the world, mods, settings and backups stay). MineUI does not configure routers or firewalls - the card names the steps for your system. With Podman on Windows the server runs inside WSL and other devices cannot reach it until Windows is set up (mirrored networking on Windows 11 22H2 or newer; on Windows 10, TCP-only port forwarding); UDP voice ports may not work there. A voice chat mod also needs its own port published (Extra ports for mods) and opened on the router and firewall; MineUI only publishes the port, it does not install or configure the mod.

The managed server won't start - EULA not accepted

Mojang requires accepting the EULA before a server will boot. The Create Server stepper has an explicit EULA step - go back through it, or set eula=true via the Config page, then start the server again.

No container runtime - neither Podman nor Docker is installed

Since MineUI 2.7.0 the app tells you what to do: wherever a container is needed and no runtime is found - the create-container flow, the dashboard of a container server, Server Settings - it shows the install steps for Linux, Windows, and macOS with copyable commands, opening on your OS, and a Check again button. The same steps are in Installing Podman or Docker above. Either runtime works; MineUI prefers Podman when both exist.

Windows + Podman: the container runs and the log says Done, but the dashboard stays Offline and RCON does not connect

Two causes, both on Podman's WSL provider. (1) A server made with MineUI 2.7.1 or earlier was published on 127.0.0.1 inside the Podman machine, which Windows cannot reach; 2.7.2 publishes the ports so they arrive on the Windows host's own 127.0.0.1 - update, delete the container (Server Settings → Danger zone → Delete container; the world can be kept) and create the server again. (2) The machine runs rootful (podman machine inspect --format {{.Rootful}} says true): a rootful machine publishes with NAT rules, not a listening socket, and WSL's localhost relay only mirrors listening sockets, so its ports never reach Windows. Switch it to rootless - podman machine stop; podman machine set --rootful=false; podman machine start - then create the server again (the two modes keep separate containers; copy the world out first with podman cp if it matters). MineUI 2.7.3 detects this and says so on the dashboard and the Status page, with the VM address the server answers at meanwhile.

Creating or starting a container fails with "crun: controller pids is not available under /sys/fs/cgroup/non-systemd/…"

Podman gives every container a default pids limit, and on some Podman machines (seen on WSL) the cgroup tree cannot take one. MineUI 2.7.1 handles it: when the runtime reports exactly this, the half-made container is removed and created once more with no pids limit, the way Docker runs containers. Update to 2.7.1 or newer and create the server again. On 2.7.0, remove the container with the runtime CLI (podman rm -f <name>) first. If the error appears when you press Start (a server whose ports were changed in 2.11.0 gets the limit back), update to 2.11.1: Start lifts the limit in place and tries again. On 2.11.0, run podman update --pids-limit=0 <name> once and start again. If it still fails (the lift is refused, or this computer gives containers no pids controller at all), 2.12.0 opens a dialog on Start with the command to lift the limit by hand and, on Linux, the systemd setting that gives your containers the controller, ready to copy.

MineUI says to install Podman or Docker, but one is installed

Three causes. (1) The runtime is installed but not running - Docker Desktop is closed, or the podman machine is stopped. Before 2.9.0 MineUI reported that as nothing installed; 2.9.0 says the runtime is installed but not responding and how to start it (open Docker Desktop, or podman machine start), then Check again. (2) The Linux AppImage on 2.8.0 or earlier: the AppImage pointed podman at its own bundled, older libseccomp, so every podman call failed (undefined symbol: seccomp_export_bpf_mem) and MineUI found no runtime on a machine that has Podman. 2.9.0 gives podman, docker and java a clean environment inside an AppImage - update; the .deb was never affected. (3) A short PATH: an app started from a launcher can have a shorter PATH than your terminal (common with Homebrew on macOS), and MineUI finds the runtime by running the podman or docker command. Put the full path to the binary in Server Settings → Advanced → Runtime binary override and press Check again - since 2.9.0 the override also works while the runtime setting is on Auto. If both runtimes are installed, MineUI prefers Podman; the Container runtime setting picks one explicitly.

Backups or mods look empty on a stopped container server

Fixed in 2.9.0. Before it, the backups and mods of a stopped container server were invisible: the page said "No backups yet" - although restoring requires the server to be stopped. Listing and deleting now work while the container is stopped, and a listing that fails is shown as an error, never as an empty list. Update to 2.9.0 or newer; your backups were there all along.

The server I was managing seems to have vanished after a click in the header

Before 2.9.0 the header had a Simple/Advanced toggle, and one click re-pointed the open server at the other kind - which looked exactly like the server had been deleted. Nothing was deleted or moved. On 2.9.0 the toggle is gone: how a server is run lives under Advanced in Server Settings, cannot be changed while the server is running, and asks first. If a server is pointed at the wrong kind, open Server Settings → Advanced and set it back.

The config editor saved the wrong text into a file

A bug before 2.9.0: selecting a file switched its name at once while the editor still held the previous file's text, and Save stayed enabled. 2.9.0 keeps the editor and Save off until the opened file's own text has loaded, shows a failed read with Try again, ignores late reads of a previously clicked file, and asks before switching files with unsaved edits. Update; a file that was overwritten this way has to be corrected by hand.

I want to switch the server's loader or modpack

A modpack or server type is applied when the container is created, so switch by starting over: Delete container in the Danger zone of Server Settings removes the container and keeps the server, then the create flow reappears prefilled and you pick the new type or pack. The world is kept unless you also tick Also delete its world data and type the container's name. To add a set of mods to the server you already have instead, see the next entry.

I want a different Minecraft version on my plain server

Since 2.10.0 a plain (Simple) server changes version in place - no deleting, no restoring. Stop the server, open Server Settings → Performance & network → Change version…, and pick the version. MineUI checks that your Java fits it, downloads the server for that version, backs the world up first (a normal backup, listed on the Backups page), and switches. Moving to an older version needs an extra tick, because an older Minecraft usually cannot open a world saved by a newer one. A container server is different: its version is set when the container is created, so there you delete the container (Server Settings → Danger zone → Delete container, which keeps the world unless you also tick it) and create it again with the version you want.

I have a zip of mods, not single jars

Mods → Add mod or plugin takes the .zip as it is: when the file you pick or link to is a zip, the dialog asks whether it is several mods or one. Choose several and MineUI unpacks the .jar files inside - a zipped folder of mods, or the mods folder of a server pack - installs them in one go, and lists what went in and how many other files were left out (configs are not installed). Limits: 500 jars, 256 MiB each, 2 GiB in total. A launcher modpack file (Modrinth .mrpack-style or a CurseForge export) contains no mods, only a list to download - create the server from a modpack instead; a CurseForge export goes straight into the CurseForge zip tab there.

A server made from a modpack is not up yet

Creating from a pack resolves when the container has started, not when the server inside is ready: on first boot the image downloads the pack (for a CurseForge zip, the mods its manifest lists), installs its loader and mods, and only then starts the server, which can take minutes for a large pack. Since 2.9.0 the dashboard shows Starting up… for exactly this - running but not answering yet - and turns Online when players can join; the log stream shows the Done line. Pick a Minecraft version the pack actually has a build for - the version selects the Java image, and a pack on the wrong Java does not start. A CurseForge zip takes its version from the manifest, so there is nothing to get wrong there.

My pack was made in the CurseForge app and isn't published anywhere

Export it: in the CurseForge app open the profile, choose Export profile, and keep the zip it writes (manifest.json plus an overrides folder). In MineUI's create flow choose A modpack → CurseForge zip and pick that file. Since 2.8.0 MineUI reads the pack's name, Minecraft version and loader from the manifest, copies the zip into the container before its first start, and the image downloads the listed mods and applies the overrides - no API key, and the Minecraft version is taken from the pack. Packs for Minecraft 1.16 and older are refused: the Java 8 image those versions need carries no CurseForge API key. The zip must be under 512 MB, and if creating fails at any step the half-made container is removed so you can try again.

I don't have a container to attach to

Since MineUI 2.6.0 you don't need to make one by hand: App Settings → Servers → Add server → Modded or modpack server creates an itzg/minecraft-server container for you (pick a server type or a modpack, the Minecraft version, memory, and ports) and attaches to it. The first run can take a few minutes while the runtime pulls the image. Prefer your own? Start a container whose world lives under /data - docker run -d -e EULA=TRUE -v ./data:/data -p 25565:25565 itzg/minecraft-server - then use Add server → A container I already run and enter its name, ports, and RCON password.

RCON connection refused

Check server.properties: enable-rcon=true, a non-empty rcon.password, and that rcon.port (default 25575) is reachable from the app. In Simple mode MineUI configures RCON when it creates the server, and a container created from Add server → Modded or modpack server gets a generated RCON password with RCON published on 127.0.0.1 only; for containers you attach to, you may need to set these yourself and restart the server. The connection details MineUI uses are under Advanced in Server Settings, where the RCON password can be revealed to compare. If the server is simply stopped, 2.9.0 says so on the Console, Players and Status pages and offers Start instead of a connection error.

RCON read timed out on a Forge server (say, broadcasts, restart warnings)

Before MineUI 2.6.0, a command with no output - say, and with it scheduled broadcasts and restart warnings - waited 5 s and was reported as timed out on Forge even though it ran, because Forge sends no reply packet for empty output. 2.6.0 fixes this, and also reassembles RCON output longer than 4096 bytes (large mod or player lists) that used to be cut off. Update to 2.6.0 or later.

The AppImage won't start on Linux

Make it executable first: chmod +x MineUI_2.12.0_amd64.AppImage. If it still fails, your distro may be missing FUSE (needed by all AppImages) - install libfuse2/fuse, or use the deb package instead.

The window never appears on Linux with an NVIDIA GPU (Wayland)

WebKitGTK's DMA-BUF renderer aborts on NVIDIA + Wayland before the first frame. MineUI 2.5.0 and later switch it off automatically when the NVIDIA kernel module is present. On an older build, launch with WEBKIT_DISABLE_DMABUF_RENDERER=1 in the environment.

A scheduled task didn't run

Jobs run only while MineUI is open, and a slot that passed while the app was closed is skipped rather than run late. Restart and broadcast jobs also require the server to be running (the Status page's activity log records "server not running" when they're skipped). Schedules are per server, so check the right server is open, then check the job's next-run time in Server Settings → Scheduled tasks and use Run now to test it.

Enriched metrics (tick-based TPS/MSPT, chunk/entity counts) are missing

Those come from the optional mineui_server_utils mod/plugin. Verify it's installed in the server (JDK 17 required) and that Server Settings → Advanced → Server-utils URL points at it (default http://127.0.0.1:8787 - try curl http://127.0.0.1:8787/health). If it binds a non-loopback host, MINEUI_SERVER_UTILS_TOKEN must be set or it refuses to start. Without it, MineUI falls back to server-list ping + container/process metrics.

Still stuck? Open an issue - include your platform, the mode you're in (Simple or Advanced), and the server log around the failure.

AGPL-3.0

Contributing

Issues and PRs are welcome at github.com/I4cTime/mineui. MineUI is AGPL-3.0-only; the released binaries are free - building from source needs a HeroUI Pro license token.

run from source
# Prerequisites: pnpm, Rust (rustup), and a HeroUI Pro token
$ git clone https://github.com/I4cTime/mineui && cd mineui
$ pnpm install
$ pnpm tauri dev

# Production desktop bundle
$ pnpm tauri build

The Rust core (mineui-core) carries the test suite - 254 tests behind 55 typed IPC commands. Without a HeroUI Pro token, pnpm install appears to succeed but @heroui-pro/react resolves empty and the build fails. Start with the README, and if MineUI saves you time, there's a Ko-fi.

Ready to run your server?