Releases: maximdr86/tikpilot
Release list
v1.58.1 — operator names, screenshot mode, remember me
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
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.viewpermission 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/cloudor
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
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 newsession_epochcolumn, 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 servicelist.
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
.envreaches 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
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