Repository navigation
Releases: scirr/MCMANAGER
Release list
MC Manager v3.0.1
MC Manager v3.0.1
Fix release for 3.0.0.
Fixed
- Updating from 2.4.8 with
mc updateleft an installation that no longer
started (ModuleNotFoundError: mc_api): the old updater copies files one by
one and stopped on the folder holding the Linux desktop app. The Linux zip is
now flat, the app is the single filemcmanager-app, andmc updatekeeps it
up to date. If you already updated from 2.4.8 andmcfails, extract
MCManager-Linux.zipand runsudo ./install.shagain: your servers and
settings are kept. - Updating from 2.11 with
mc updatenow also installs the Linux desktop app.
Everything else is as in 3.0.0, whose notes describe the new
features.
Download
| File | Platform |
|---|---|
| MCManager-Setup.exe | Windows: installer (embedded Python, service, desktop app, Start menu shortcut) |
| MCManager.zip | Windows: manual install with install.bat; the package mc update uses |
| mcmanager_3.0.1_all.deb | Debian, Ubuntu: command line, daemon and desktop app |
| mcmanager-3.0.1-1.noarch.rpm | Fedora: command line, daemon and desktop app |
| MCManager-Linux.zip | Linux: manual install with install.sh, desktop app included as the single file mcmanager-app |
| MCManager-macOS.zip | macOS: command line and daemon (install.sh) |
| MCManager-App-macOS.zip | macOS: the desktop app, MCManager.app |
| SHA256SUMS, SHA256SUMS.sig | Signed hashes of every file above |
Installation
- Windows: run
MCManager-Setup.exe. It installs everything (no Python needed),
starts the service and adds the app to the Start menu. Servers and worlds live in
C:\ProgramData\MCManagerand are never touched by the uninstaller. The installer
is not code-signed yet: Windows SmartScreen shows "Windows protected your PC";
choose More info, then Run anyway. Without the installer: extract
MCManager.zip, then runinstall.batas administrator (needs Python 3.10+). - Linux:
sudo apt install ./mcmanager_3.0.1_all.deb(orsudo dnf install ./mcmanager-3.0.1-1.noarch.rpm), thensudo mcmanager-setup <user>. The desktop
app (mcmanager-app, menu entry "MC Manager") needs GTK 4 and libadwaita:
they are recommended packages, installed by default. Without a package:
extractMCManager-Linux.zip, run./install.shas root; the app is./mcmanager-app. - macOS: extract
MCManager-macOS.zip, run./install.shas your user (not with
sudo). For the desktop app, unzipMCManager-App-macOS.zipand move
MCManager.appto Applications. The app is not signed: on the first launch,
right-click it, choose Open, then confirm (or allow it in System Settings,
Privacy & Security).
Every file is signed in SHA256SUMS (Ed25519, checked by mc update) and carries a
build provenance attestation. mc update only replaces the core package of its
platform; the Windows installer, the packages and the app are updated by installing
the new version.
On the first mc command you will be asked to choose your language.
MC Manager v3.0.0
MC Manager v3.0.0
Cross-platform Minecraft server manager. A single bilingual (FR/EN) build per
platform. The language is chosen on first launch and can be changed anytime
with mc language fr|en.
The platform release: Linux and Windows now run the same code, with every
command available on both, and the daemon serves an HTTP API, locally and,
when you enable it, remotely over TLS. The JSON output of every command is
described by an OpenAPI 3.1 contract (api/openapi.json) that the test suite
checks against real --json runs, and failures follow one shape everywhere.
New
-
Windows at full parity. The Windows build is made from the same modules
as the Linux one: sleep mode, router, mods and modpacks by name, every
server type, managed Java, backups to sftp/S3/restic, alerts, players,
world tools, scheduled tasks, metrics and status page. The daemon runs as
the NSSM serviceMCManagerDaemon(downloaded on install and checked
against a pinned SHA-256); restarting it never stops the servers. Not
available on Windows: freezing a sleeping server (--freeze onanswers
unsupported_on_windows), cgroup and swap figures (null). -
Forge and NeoForge start through java directly on their argument files
(win_args.txtis generated fromunix_args.txtwhen missing), and every
server JVM carries-Dmcmanager.server=<folder>so it is always found again. -
Local API. The daemon serves the
/v1API on a Unix socket
(run/api.sock, owner only) on Linux and on 127.0.0.1 with a token on
Windows: 96 operations, long operations as jobs (202+/v1/jobs/{id}),
Server-Sent Events for state changes and the console.mc api status. -
Remote access, off by default.
mc remote enableserves the same API
over TLS 1.3 only, with a self-signed certificate whose fingerprint the
client pins. Devices pair with a one-time 8-digit code (mc remote pair)
and get a token stored hashed; rolesviewer,operator,admin, per
server. Rate limits, lock-out after repeated pairing failures, audit log
without secrets.mc remote devices list|revoke. -
mc --remote <profile> <command>drives a remote MC Manager: status,
start, stop, players, logs, backup and console (mc remote addpairs and
pins the certificate). -
Linux packages.
.deband.rpm(/opt/mcmanager,/usr/bin/mc,
sudo mcmanager-setup <user>);mc updatedefers to apt/dnf on such
installs. Removing the package never touches servers or worlds. -
macOS. The same core runs on macOS: the daemon is a LaunchAgent that
never stops the servers when it restarts, processes and ports are read with
psandlsof, servers live in~/Library/Application Support/MCManager.
The macOS firewall does not filter by port:mcprints the command to run. -
Desktop apps, first release. Linux (GTK 4 and libadwaita, also as a
Flatpak), Windows (WinUI 3) and macOS (SwiftUI), with the same features:- the server list with state, players and memory; start, stop, restart and
the live console; - the Players, Backups, Mods, Datapacks, World, Tasks, Alerts and Settings
tabs (sleep mode included), and an assistant to create a server, from a
modpack by name too; - a System page: Java runtimes, remote access (pairing, devices, roles,
audit log), the router, updates and rollback, diagnostics; - native notifications while the window is in the background: crashes and
failed backups, and players connecting once you turn it on.
Removals and resets ask for confirmation; secret settings are never shown,
only replaced; freezing is offered only where the server can do it. The
apps talk to MC Manager only through its API, on this machine or on a
paired remote one (pinned certificate; the device token is kept in the
macOS keychain, encrypted with DPAPI on Windows). - the server list with state, players and memory; start, stop, restart and
Fixed
-
A
mc stopfollowed bymc resumebefore the daemon's next check (30 s)
was taken for a crash; twice in ten minutes and the server was no longer
restarted. -
The sleep listener opened up to 5 s after the server was reported asleep;
a player joining in between was refused. -
On Windows the API module did not load (no Unix sockets there), which
stopped the daemon and the command line. -
On Windows the first-launch language question was asked even with
--json
or without a keyboard, which broke the JSON output of every script. -
Eleven documented failures of the API answered
500instead of their
status (kicking a player from a stopped server, for example). -
Archives are extracted with links leaving the folder, devices and absolute
paths refused, and Python'sdatafilter where available. -
Rolling back an update on Windows could fail on a file still in use.
-
On Windows the daemon service did not start when MC Manager was installed in
a folder whose path has a space (C:\Program Files,C:\Users\Jean Dupont):
the script path was not quoted.mc doctornow reports such a service as
outdated, and reinstalling the service fixes it.
Changes for scripts
These changes are visible to anything that parses --json output or exit
codes. Every command with --json answers {"schema":1,"ok":...,"code":...}
and exits 0 on success, 1 on failure, 2 on an invalid command line and 3 when
the server is unknown.
mc players --jsonon a stopped server is now a failure. It answers
ok:false,code:"server_offline"and exits 1 (it used to answer
ok:trueand exit 0).online(0),max(null),players([]) and
stateare still present. Without--jsonthe command still prints an
information line and exits 0.--jsononmc stop,mc rcon,mc schedule,mc languageandmc daemon.
stopanswers likePOST /v1/servers/{server}/stop;rconanswers
code:"rcon_reply"withserver,commandandreply(no ANSI codes, no\r),
or fails withserver_offline/rcon_failed;scheduleanswers
schedule_updated(invalid times exit 2);languageanswerslanguage;
daemon start|stop|restart|statusanswersdaemon_started,daemon_stopped,
daemon_restartedordaemon_status(installed,running).mc daemon status
is new.- Every failure has a
message. The text is localised (FR or EN, as chosen
withmc language); branch oncode, which is stable and never translated.
not_foundalways carriestargetandavailable(a list ofid:name). - The nested
errorobject is obsolete.mc status,mc playersand
mc activefailures still carryerror: {code, detail}next to the
top-level fields for compatibility. Readcode,messageanddetail
instead; the alias will be removed in a later major version. mc config get --jsonanswers
{"ok":true,"code":"config","server":...,"config":{...},"secrets_set":[...]}.
Secret settings are not inconfig;secrets_setlists their names.
mc config get <key> --jsonanswers{"code":"config_value","key":...,"value":...,"write_only":false};
a secret key answerswrite_only:trueand novalueunless--revealis
given. An unset key isok:false,code:"config_key_unset", exit 1.
Without--jsonthe output is unchanged.mc alert list --jsonno longer returns"***". Thesecret,token
andpasswordfields of a channel are gone, not masked.secrets_setand
header_namessay what is configured.mc java list <server>lists only that server (exit 3 andnot_found
for an unknown one) instead of ignoring the argument.
License
MC Manager is now distributed under the Mozilla Public License 2.0 (see
LICENSE). Using it stays free, including commercially; a modified version of
its files that you distribute must keep them under the MPL-2.0 with their
source available. Versions up to 2.5.0 remain under the MIT license.
Download
| File | Platform |
|---|---|
| MCManager-Setup.exe | Windows: installer (embedded Python, service, desktop app, Start menu shortcut) |
| MCManager.zip | Windows: manual install with install.bat; the package mc update uses |
| mcmanager_3.0.0_all.deb | Debian, Ubuntu: command line, daemon and desktop app |
| mcmanager-3.0.0-1.noarch.rpm | Fedora: command line, daemon and desktop app |
| MCManager-Linux.zip | Linux: manual install with install.sh, desktop app included in app/ |
| MCManager-macOS.zip | macOS: command line and daemon (install.sh) |
| MCManager-App-macOS.zip | macOS: the desktop app, MCManager.app |
| SHA256SUMS, SHA256SUMS.sig | Signed hashes of every file above |
Installation
- Windows: run
MCManager-Setup.exe. It installs everything (no Python needed),
starts the service and adds the app to the Start menu. Servers and worlds live in
C:\ProgramData\MCManagerand are never touched by the uninstaller. The installer
is not code-signed yet: Windows SmartScreen shows "Windows protected your PC";
choose More info, then Run anyway. Without the installer: extract
MCManager.zip, then runinstall.batas administrator (needs Python 3.10+). - Linux:
sudo apt install ./mcmanager_3.0.0_all.deb(orsudo dnf install ./mcmanager-3.0.0-1.noarch.rpm), thensudo mcmanager-setup <user>. The desktop
app (mcmanager-app, menu entry "MC Manager") needs GTK 4 and libadwaita:
they are recommended packages, installed by default. Without a package:
extractMCManager-Linux.zip, run./install.shas root; the app is inapp/
(./app/mcmanager-app). - macOS: extract
MCManager-macOS.zip, run./install.shas your user (not with
sudo). For the desktop app, unzipMCManager-App-macOS.zipand move
MCManager.appto Applications. The app is not signed: on the first launch,
right-click it, choose Open, then confirm (or allow it in System Settings,
Privacy & Security).
Every file is signed in SHA256SUMS (Ed25519, checked by mc update) and carries a
build provenance attestation. mc update only replaces the core package o...
MC Manager v2.11.0
MC Manager v2.11.0
Cross-platform Minecraft server manager. A single bilingual (FR/EN) build per
platform. The language is chosen on first launch and can be changed anytime
with mc language fr|en.
A network and supervision release: a smarter sleep mode, one public port for
several servers, Prometheus metrics and a public status page. It also closes
a secrets leak and fills the gaps in the JSON output. Linux only for now; the
Windows build changes only in its version number.
Every command with --json answers {"schema":1,"ok":...,"code":...} and
exits 0 on success, 1 on failure, 2 on an invalid command line and 3 when the
server is unknown. Fields are only ever added to existing documents.
New (Linux)
- Advanced sleep.
mc sleep enable --join-mode holdkeeps the connecting
player on the line while the server wakes up, then relays the connection
(PROXY protocol v2 for servers that support it);--hold-timeoutbounds the
wait.--freeze onsuspends the JVM instead of stopping it, so waking up
takes a moment instead of a full start. Banned IPs are refused before they
can wake anything.mc sleep statusshows the join mode, timeout and
freeze setting. - Hostname router.
mc router enable|disable|status,mc router route add <host> <server>/remove/list,mc router default <server>and
mc router allow|deny add|remove <CIDR>: several servers behind one public
port, chosen by the hostname the player typed (FML suffixes handled).
Connection limits per IP and per second, CIDR allow and deny lists, PROXY v2
in and out for trusted load balancers. - Metrics.
mc metrics serve [--bind HOST:PORT] [--allow-remote]exposes
a Prometheus endpoint (state, players, uptime, memory, TPS for Paper,
Purpur, Forge and NeoForge). It listens on loopback unless told otherwise. - Status page.
mc status-page enable|disable [--dir D] [--interval S] [--show-players]keeps a static public page andstatus.jsonup to date;
it holds no secret, no address and, by default, no player name. - JSON everywhere.
--jsonis now accepted bymc freeze,mc thaw,
mc doctor(a list of checks withname,ok,level,detail,fix),
mc resume,mc use,mc remove(needs--yes),mc mode,mc backup
andmc logs.
Improved
status,active,players,java listandsleep statusdocuments now
carryokandcodeat the top level (the existingerrorobject stays).- Every date in a JSON document comes with an epoch twin in seconds (UTC):
created_tsfor backups and bans,join_tsandleave_tsfor the player
history,next_run_tsandlast_run_tsfor tasks,frozen_since_tsand
frozen_expires_tsfor a frozen world. mc mod list --jsonkeeps the version read from the jar inversionand
adds the one MC Manager tracks astracked_version.- Server snapshots carry
servernext toname, like every other result. mc router disableandmc router route removegive a server its public
port back (server-port, emptyserver-ip) once nothing routes to it and
it is not in hold mode, and say that a restart is needed.route addand
defaultsay so too, andmc router statuslists the servers whose restart
is pending.- The address announced to players uses the port they really connect to (the
router's when the server sits behind it), and a proxy binds the port the
process listens on.
Fixed
- Secrets were printed.
mc config getshowed the wholeconfig.json
(RCON password, Discord webhook, CurseForge key, alert channels, backup
destinations). Secrets are now shown as***andsecrets_setlists their
names;mc config get <key>on a secret needs--revealand never prints
in JSON.mc alert listgives webhook header names instead of values.
mc backup remote listno longer returns the S3 access key or the path of
a key or password file, onlysecrets_set. Error messages from alerts and
destinations are redacted too, and a test now checks every--jsoncommand
against a configuration full of recognisable fake secrets. - A stop and a resume were taken for a crash. A
mc stopfollowed by
mc resumebefore the daemon's next check (30 s) counted as an unexpected
exit; twice in ten minutes and the server was no longer restarted. A stop
that was asked for is now remembered and never counted. - The sleep listener opened late. It came up to 5 s after the server was
reported asleep, and a player joining in between was refused. It now opens
in the same check that puts the server to sleep. - Windows: the service did not start from a folder with a space. Installed
in a path such asC:\Users\Jean Dupont\MCManager, the daemon service
could not find its script because the path was not quoted. Run
install.batagain after updating to repair an existing service. - Everything fixed in v2.10.0.
Updating
mc update. The systemd unit does not change. Hold mode, frozen sleep and the
router move the server to an internal port on 127.0.0.1: restart each server
once after enabling them (mc router status and mc sleep status tell you
when it is pending). Existing servers keep their configuration; the new keys
appear only once used. If you parse mc backup remote list --json or
mc alert list --json, read secrets_set and header_names instead of the
removed credential fields.
License
MC Manager is now distributed under the Mozilla Public License 2.0 (see
LICENSE). Using it stays free, including commercially; a modified version of
its files that you distribute must keep them under the MPL-2.0 with their
source available. Versions up to 2.5.0 remain under the MIT license.
Download
| File | Platform |
|---|---|
| MCManager.zip | Windows |
| MCManager-Linux.zip | Linux |
| SHA256SUMS, SHA256SUMS.sig | Signed hashes of both packages |
Installation
- Windows: extract the zip, then run install.bat as administrator.
- Linux: extract the zip, then run ./install.sh as root (sudo).
On the first mc command you will be asked to choose your language.
MC Manager v2.4.8
MC Manager v2.4.8
Cross-platform Minecraft server manager. A single bilingual (FR/EN) build per
platform. The language is chosen on first launch and can be changed anytime
with mc language fr|en.
Download
| File | Platform |
|---|---|
| MCManager.zip | Windows |
| MCManager-Linux.zip | Linux |
Installation
- Windows: extract the zip, then run install.bat as administrator.
- Linux: extract the zip, then run ./install.sh as root (sudo).
On the first mc command you will be asked to choose your language.