-
released this
2026-07-02 14:56:32 +00:00 | 26 commits to main since this releaseAdded
- Linux Netinstall. Each RouterOS version now mirrors the Linux Netinstall CLI
(netinstall-<ver>.tar.gz) alongside the Windows tool (netinstall-<ver>.zip). The two are marked
distinctly in the listing and the legend —netinstall · win(amber) andnetinstall · linux
(orange). Versions that predate the Linux tool simply skip it (the missing file 404s and is ignored). --forcereinstall.sudo ./src/deploy.sh --forcerebuilds the images and force-recreates the
containers for the version you're already on — no version change, no prompt, no host/config/./data
changes.
Changed
updateis a no-op when already current. On the latest release with no target given,updateno
longer prompts or rebuilds — it reports "already on the latest version", exits 0, and prints a visible
note pointing at--forceto rebuild the current version.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Linux Netinstall. Each RouterOS version now mirrors the Linux Netinstall CLI
-
released this
2026-07-02 14:21:35 +00:00 | 28 commits to main since this releaseAdded
updateshows the version transition. It now prints the installed version and an explicit
upgrading vX → vYline (orre-installing vX/switching to <branch>) before rebuilding, so it's
clear what you're moving from and to.- Clickable source link.
download.mikrotik.comin the page footer is now a link to
https://download.mikrotik.com (opens in a new tab).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-02 14:14:20 +00:00 | 29 commits to main since this releaseChanged
- Landing page: soft centred spotlight. Added a subtle fixed radial-gradient behind the content — a
gentle lift down the centre column that fades into the darker edges — to draw focus to the centre.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Landing page: soft centred spotlight. Added a subtle fixed radial-gradient behind the content — a
-
released this
2026-07-02 13:32:19 +00:00 | 30 commits to main since this releaseFixed
--allleft fail2ban installed but not running. fail2ban aborts the entire server (exit 255) if
any enabled jail's logpath is missing, and two were: therecidivejail's/var/log/fail2ban.log
never exists on Rocky (fail2ban logs to the journal), and on a fresh install Caddy's access log doesn't
exist yet when hardening runs (before the stack is built). Hardening now pre-creates both — sets
logtargetto a real file for recidive and touches the access log (owned by the rootless container
uid) — and verifies the service actually started, warning instead of falsely reportingok.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-02 12:33:07 +00:00 | 31 commits to main since this releaseAdded
updatemarks the installed version in the version list (e.g.v0.4.1 (latest, current)), so
it's clear which one is running.updaterefuses downgrades. Selecting a release tag older than the installed version stops with
guidance rather than rolling back — same-version re-installs, forward moves, and branch refs still
work. Documented indoc/UPDATES.md(with the manual, unsupported bypass).
Fixed
- Ambiguous
vX.Y.Zref / wrong checkout.updateand the installer now check out release tags via
refs/tags/<tag>, so a same-named local branch (e.g. a strayheads/v0.4.0left by an earlier
git checkoutDWIM) can no longer shadow the tag or emitwarning: refname '…' is ambiguous. Release
tags always check out detached at the tagged commit.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-02 12:07:19 +00:00 | 32 commits to main since this releaseAdded
set-operatorcommand — set or clear the operator/org name + contact email (shown in the PUBLIC
page footer and the outbound User-Agent) without editing YAML. Blank a field to clear it; blank both to
drop the footer credit. Unattended viaPM_OPERATOR_NAME/PM_OPERATOR_EMAIL.- Version selection for
update—updatenow fetches all branches + tags and lists the 5 most
recent releases to choose from (Enter = latest). Also acceptsupdate <tag|branch>,
update --ref <ref>, orPM_REF. Tags check out detached; branches fast-forward to the remote. - Install from a release tag — the installer builds from the latest release tag by default
(checkout + re-exec so the whole install and every image come from that version). Override with
--ref <tag|branch>(e.g.--ref mainto track a branch) orPM_REF.
Changed
- Operator identity is empty by default. The installer no longer prompts for operator name/email, so
a personal address can't land in a public footer by accident — set it deliberately viaset-operator,
PM_OPERATOR_*, or anoperator:block inpackagemini.yml. Example-config note expanded (PUBLIC).
Fixed
- Garbled "already configured" hint. The status footer hint passed ANSI color codes as
printf%s
arguments, which are printed literally (\033[0m…); moved the colors into the format string so they
render. The hint now points at./src/deploy.sh update.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-01 20:43:11 +00:00 | 33 commits to main since this releaseAdded
updatecommand —sudo ./src/deploy.sh updatepulls the latest source (git pull --ff-only),
rebuilds the container images, recreates the stack, and prints status. An in-place application
upgrade path that never runsdnf, never reboots, and never touchespackagemini.yml/.env/./data.uptimein thestatusSystem box (host uptime, e.g.5d 2h).- Double-entry password confirmation when setting credentials —
set-goaccess-creds,
set-mirror-creds, andset-mirror-auth onnow prompt for the password twice and re-prompt on
mismatch. Preset env vars (PM_GOACCESS_PASS,PM_BASICAUTH_PASS) still skip the prompt so
unattended installs are unaffected. doc/UPDATES.md— documents the three update layers: install-timednf upgrade, hourly
dnf-automaticsecurity auto-updates withwhen-neededauto-reboot, anddeploy.sh update.
Changed
- Auto-update reboot policy is now enforced. The
hardendnf-automaticsetup replaces any
existingreboot_command(stock Rocky shipsshutdown -r +5with a generic message) with
packagemini'sshutdown -r +2+ wall message, instead of leaving the vendor value in place when the
key already exists.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-06-20 19:20:44 +00:00 | 34 commits to main since this releaseChanged
- Coherent status colors. One rule everywhere: dim keys, white facts (versions, names,
counts, sizes, URLs, dates), green good-states (on/enabled/running/applied/enforcing/key-only),
yellow caution, dim secondary notes only (parentheticals, uptime, commit ref). Removes the cyan
sprinkled on some numbers/URLs and un-dims the Content/Sync values. Refreshed status screenshot.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Coherent status colors. One rule everywhere: dim keys, white facts (versions, names,
-
released this
2026-06-20 18:59:05 +00:00 | 37 commits to main since this releaseValidated end-to-end on a clean Rocky 9 re-provision, which surfaced and fixed several latent bugs
the long-running deployment had been masking, and a full install/status UX overhaul.Fixed
- bcrypt hash corruption: the compose
$-escaping used${h//$/$$}, where$$expands to the
shell PID — corrupting every basic-auth hash and crash-looping the web container. Nowsed-based. - Status Sync box dropped before the first sweep completed: an unguarded
grepunder
set -euo pipefailaborted the render. Status is nowset +e(read-only reporting can't abort). - stderr noise from
firewalld(ALREADY_ENABLED) and compose recreates is captured/suppressed.
Changed
- Unified, high-contrast CLI: install and
statusnow share one visual language — green
numbered[n]stage headers, bright text, indented✓/•rows (no boxes, no red banners, no
[packagemini]prefix).--verbose/PM_VERBOSE=1streams raw tooling output; failures show the
captured output. Timestamps render in RFC 5322 with the operator's timezone offset. - Timezone no longer prompted on every
--all— the host zone is kept automatically (preset
PM_TIMEZONEto change), so a re-run is fully non-interactive.
Added
set-timezone <zone>command (sets host tz +.envTZ, reloads sync for release dates).- Refreshed documentation screenshots (status dashboard +
deploy.sh --allinstall run).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- bcrypt hash corruption: the compose
-
released this
2026-06-20 15:33:17 +00:00 | 48 commits to main since this releaseSupersedes 0.2.3 (whose release did not publish due to the workflow bug below). Carries the full
supply-chain pinning from 0.2.3 plus the fix.Security
- Supply-chain pinning. Base images by
@sha256digest (python:3.12-slim,caddy:2,
caddy:2-builder,alpine:3); Caddyv2.11.4+ xcaddy modulescaddy-dns/desec@v1.1.0and
mholt/caddy-ratelimit@v0.1.0; Python deps exact +pip --require-hashes; thecaddyimage for
hash-password; lazydockerv0.25.2with SHA-256 verification; release-workflow image + deps.
See DESIGN.md → Supply chain.
Fixed
- Release workflow: the hashed
requirements-dev.txtwas missing pytest 9'spygments
dependency, sopip --require-hashesfailed in CI; addedpygments==2.20.0. Verified in a clean venv.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Supply-chain pinning. Base images by