Skip to content

Releases: scirr/MCMANAGER

MC Manager v3.0.1

Choose a tag to compare

@github-actions github-actions released this 01 Nov 09:10

MC Manager v3.0.1

Fix release for 3.0.0.

Fixed

  • Updating from 2.4.8 with mc update left 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 file mcmanager-app, and mc update keeps it
    up to date. If you already updated from 2.4.8 and mc fails, extract
    MCManager-Linux.zip and run sudo ./install.sh again: your servers and
    settings are kept.
  • Updating from 2.11 with mc update now 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\MCManager and 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 run install.bat as administrator (needs Python 3.10+).
  • Linux: sudo apt install ./mcmanager_3.0.1_all.deb (or sudo dnf install ./mcmanager-3.0.1-1.noarch.rpm), then sudo 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:
    extract MCManager-Linux.zip, run ./install.sh as root; the app is ./mcmanager-app.
  • macOS: extract MCManager-macOS.zip, run ./install.sh as your user (not with
    sudo). For the desktop app, unzip MCManager-App-macOS.zip and move
    MCManager.app to 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

Choose a tag to compare

@github-actions github-actions released this 01 Nov 01:49

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 service MCManagerDaemon (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 on answers
    unsupported_on_windows), cgroup and swap figures (null).

  • Forge and NeoForge start through java directly on their argument files
    (win_args.txt is generated from unix_args.txt when missing), and every
    server JVM carries -Dmcmanager.server=<folder> so it is always found again.

  • Local API. The daemon serves the /v1 API 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 enable serves 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; roles viewer, 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 add pairs and
    pins the certificate).

  • Linux packages. .deb and .rpm (/opt/mcmanager, /usr/bin/mc,
    sudo mcmanager-setup <user>); mc update defers 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
    ps and lsof, servers live in ~/Library/Application Support/MCManager.
    The macOS firewall does not filter by port: mc prints 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).

Fixed

  • A mc stop followed by mc resume before 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 500 instead 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's data filter 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 doctor now 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 --json on a stopped server is now a failure. It answers
    ok:false, code:"server_offline" and exits 1 (it used to answer
    ok:true and exit 0). online (0), max (null), players ([]) and
    state are still present. Without --json the command still prints an
    information line and exits 0.
  • --json on mc stop, mc rcon, mc schedule, mc language and mc daemon.
    stop answers like POST /v1/servers/{server}/stop; rcon answers
    code:"rcon_reply" with server, command and reply (no ANSI codes, no \r),
    or fails with server_offline / rcon_failed; schedule answers
    schedule_updated (invalid times exit 2); language answers language;
    daemon start|stop|restart|status answers daemon_started, daemon_stopped,
    daemon_restarted or daemon_status (installed, running). mc daemon status
    is new.
  • Every failure has a message. The text is localised (FR or EN, as chosen
    with mc language); branch on code, which is stable and never translated.
    not_found always carries target and available (a list of id:name).
  • The nested error object is obsolete. mc status, mc players and
    mc active failures still carry error: {code, detail} next to the
    top-level fields for compatibility. Read code, message and detail
    instead; the alias will be removed in a later major version.
  • mc config get --json answers
    {"ok":true,"code":"config","server":...,"config":{...},"secrets_set":[...]}.
    Secret settings are not in config; secrets_set lists their names.
    mc config get <key> --json answers {"code":"config_value","key":...,"value":...,"write_only":false};
    a secret key answers write_only:true and no value unless --reveal is
    given. An unset key is ok:false, code:"config_key_unset", exit 1.
    Without --json the output is unchanged.
  • mc alert list --json no longer returns "***". The secret, token
    and password fields of a channel are gone, not masked. secrets_set and
    header_names say what is configured.
  • mc java list <server> lists only that server (exit 3 and not_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\MCManager and 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 run install.bat as administrator (needs Python 3.10+).
  • Linux: sudo apt install ./mcmanager_3.0.0_all.deb (or sudo dnf install ./mcmanager-3.0.0-1.noarch.rpm), then sudo 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:
    extract MCManager-Linux.zip, run ./install.sh as root; the app is in app/
    (./app/mcmanager-app).
  • macOS: extract MCManager-macOS.zip, run ./install.sh as your user (not with
    sudo). For the desktop app, unzip MCManager-App-macOS.zip and move
    MCManager.app to 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...

Read more

MC Manager v2.11.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 01:31

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 hold keeps the connecting
    player on the line while the server wakes up, then relays the connection
    (PROXY protocol v2 for servers that support it); --hold-timeout bounds the
    wait. --freeze on suspends 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 status shows 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 and status.json up to date;
    it holds no secret, no address and, by default, no player name.
  • JSON everywhere. --json is now accepted by mc freeze, mc thaw,
    mc doctor (a list of checks with name, ok, level, detail, fix),
    mc resume, mc use, mc remove (needs --yes), mc mode, mc backup
    and mc logs.

Improved

  • status, active, players, java list and sleep status documents now
    carry ok and code at the top level (the existing error object stays).
  • Every date in a JSON document comes with an epoch twin in seconds (UTC):
    created_ts for backups and bans, join_ts and leave_ts for the player
    history, next_run_ts and last_run_ts for tasks, frozen_since_ts and
    frozen_expires_ts for a frozen world.
  • mc mod list --json keeps the version read from the jar in version and
    adds the one MC Manager tracks as tracked_version.
  • Server snapshots carry server next to name, like every other result.
  • mc router disable and mc router route remove give a server its public
    port back (server-port, empty server-ip) once nothing routes to it and
    it is not in hold mode, and say that a restart is needed. route add and
    default say so too, and mc router status lists 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 get showed the whole config.json
    (RCON password, Discord webhook, CurseForge key, alert channels, backup
    destinations). Secrets are now shown as *** and secrets_set lists their
    names; mc config get <key> on a secret needs --reveal and never prints
    in JSON. mc alert list gives webhook header names instead of values.
    mc backup remote list no longer returns the S3 access key or the path of
    a key or password file, only secrets_set. Error messages from alerts and
    destinations are redacted too, and a test now checks every --json command
    against a configuration full of recognisable fake secrets.
  • A stop and a resume were taken for a crash. A mc stop followed by
    mc resume before 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 as C:\Users\Jean Dupont\MCManager, the daemon service
    could not find its script because the path was not quoted. Run
    install.bat again 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

Choose a tag to compare

@scirr scirr released this 03 Aug 02:21

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.