Skip to content

Releases: maximdr86/tikpilot

v1.58.1 — operator names, screenshot mode, remember me

Choose a tag to compare

@maximdr86 maximdr86 released this 14 Aug 00:56

Everything since v1.56.0: readable mobile operator names, a screenshot mode
that hides the real fleet, a "Remember me" tick on the login form, and the
report and device-card work from 1.56.

Screenshot mode

Settings → Screenshot mode. Site and group names, addresses, identities,
client names, MAC addresses, WireGuard keys, the API user and the accounts
in the audit log are replaced with made-up ones. Addresses come from the
ranges reserved for documentation (RFC 5737), MAC addresses are built with
the locally administered bit, so neither can be met in a live network.

The substitution happens over the finished reply, on its way to the browser:
the database is never touched, so there is nothing to forget to switch off
and nothing to repair afterwards. Names are stable, so screenshots of
different pages add up to one coherent picture, and on the English interface
the made-up names are English too.

It is turned on for one browser and lasts 8 hours; everyone else keeps
seeing the real data. While it is on, a pink "demo" badge sits in the menu.
This is a convenience, not a protection: anyone already signed in can turn
it off.

The screenshots in the README are taken from a live 49-router fleet with
this mode on.

Human-readable operator names

The address registry hands back RU-MTU-20060821 and
T2RU-SUBSCRIBER-POOL-NET. The panel now turns those into МТС and Tele2
and shows them as a coloured badge. The mapping lives in
app/operators.json; anything the panel does not recognise is collected in
Settings → Operator names, where you name it once for the whole fleet. Your
own names go to data/operators.local.json and survive an update.

Outside Russia the mapping table is empty, so the owner name is taken from
the registry answer itself: DTAG-DIAL18 gives way to "Deutsche Telekom AG"
recorded in the same record.

Remember me

A tick on the login form. The usual session lives 12 hours, which on your
own workstation means signing in two or three times a day. With the tick it
lasts 30 days, configurable through SESSION_REMEMBER_AGE. The flag is
inside the signed session value, so it cannot be forged in the browser.

Also in this range

  • Reports: export by group and by device, an arbitrary date range, and
    average downtime instead of the total.
  • Device card: the clients behind the router, with scrolling.
  • Search that ignores the case of Cyrillic letters.
  • The rollback deadline is shown in local time, and job parameters have
    proper labels.
  • Fixes: the operator no longer freezes on the first value; a device with a
    live modem no longer reports "no modem" but shows what the router actually
    answered.

Full history: CHANGELOG.md

Upgrading

cd /opt/tikpilot
git pull
docker compose up -d --build

The database migrates itself on start. Nothing to do by hand.

Tikpilot 1.56.0

Choose a tag to compare

@maximdr86 maximdr86 released this 13 Aug 01:29

Added

  • Site clients on the device card. Next to the connection details,
    a scrollable list of everything behind that site: name, MAC, address,
    link type, port and when it was last seen. Needs the same
    clients.view permission as the Clients page.
  • Operator column. Who provides the link to a site, searchable and
    editable by hand. The panel finds it from the LTE modem (network code,
    technology and signal), from the site's public address (/ip/cloud or
    the interface), and by asking the address registry over RDAP. The
    registry query is the only thing that reaches the internet and is off
    by default: OPERATOR_LOOKUP=1. Answers are cached per /24.
  • "Detect the operator" action. Runs over the whole fleet and answers
    per site with either the operator or the reason it could not be found.

Fixed

  • Device search ignored letter case only for Latin text, so "магазин"
    did not find "Магазин". Cyrillic now behaves the same way.

Upgrading: pull and restart, the database migrates itself.

Full list of changes: CHANGELOG.md

Tikpilot 1.55.0

Choose a tag to compare

@maximdr86 maximdr86 released this 12 Aug 00:54

Fixed

  • Crash under "Too many open files". The syslog receiver kept
    half-open TCP connections forever: a site on a bad link disappears
    without FIN, and the socket stayed. With fifty sites reconnecting on
    every outage the process ran out of file descriptors within a day and
    everything stopped at once. Idle connections now close, keepalive is
    on, the number of connections is capped, and the service unit raises
    the limit.
  • Upgrade broke an existing installation. A duplicate key in the
    migration list silently dropped the new session_epoch column, so
    every page answered with an error on an existing database. Fresh
    installs were fine, which is exactly why the tests missed it.
  • Empty form fields answered with raw JSON from FastAPI instead of a
    hint in the form.
  • ConnectionResetError: [Errno 104] is now explained: the router
    accepts the connection and closes it at once when the source address
    is not in the /ip service list.

Added

  • Administrator password reset. Set a new password for another
    account without asking for the old one. Changing a password, yours or
    someone else's, now ends every existing session of that person.
  • Report scope. The availability report can be limited to a group,
    to individual sites, or to an arbitrary date range. The scope is
    printed in the document and carried into the CSV export.
  • The summary shows average downtime per site instead of the fleet
    total, so two reports can be compared.
  • The whole .env reaches the container in Docker, not a dozen
    hand-listed variables.

Upgrading: pull and restart, the database migrates itself. Everyone will
be signed out once, that is the session change.

Full list of changes: CHANGELOG.md

Tikpilot v1.51.3

Choose a tag to compare

@maximdr86 maximdr86 released this 10 Aug 11:41

Self-hosted web panel for managing a MikroTik fleet over the RouterOS API.

What it does: availability monitoring with a fleet map and uptime history,
bulk operations over the whole fleet (RouterOS upgrades, backups, scripts,
console commands over SSH), a change mode with device-side rollback, a syslog
collector, a script library that knows what is deployed where, per-capability
permissions and a public status page.

Runs as a single Python process. No Redis, no Celery, no Node.js, no frontend
build step, no external CDNs. English and Russian interface.

Install: see the README. Upgrading from an earlier version: pull and restart,
the database migrates itself.

Full list of changes: CHANGELOG.md