zacsync

Features

What Zacsync does.

Every feature is designed for metered, unreliable links and routers nobody can easily reach. Current limits are noted where they apply.

Change Guard

Automatic rollback on the router

When a job includes any command that changes configuration, each targeted device takes a backup and sets a revert timer before the commands run. When they finish, Zacsync opens a new connection to check the device is still reachable, then cancels the timer.

If it can't confirm within the revert window (20 minutes by default, adjustable per site), the router restores the backup and reboots on its own. The rollback doesn't depend on the manager or the link.

Zacsync treats a command as read-only only if it uses one of these verbs: print, get, export, monitor, monitor-traffic and find. Any other command is treated as a change and guarded. An extra backup takes seconds; a lockout can mean a site visit.

Current limit. Commands run on one device at a time within each stage, so large fleets take longer. Running on several devices at once is planned.

Backups

Configuration backups in git

Configurations are exported over SSH, including sensitive values, and stored in a git repository with one file per device. A new backup is saved only when the configuration has changed: the export's date header is removed first, so an unchanged router creates no new commit. Incomplete exports are rejected.

Scheduled backups are off unless you turn them on. Backups triggered by a configuration change or a reboot are on unless you turn them off. Fleet health shows each device as ok, never, overdue or unscheduled, so devices without a schedule are easy to spot.

Retention cleanup removes old entries from the index but never from the git history. Each device always keeps its latest entry, and older configurations can still be recovered with git log.

Before you deploy. The repository stores device credentials unencrypted. For now, protect the data volume. Encryption at rest is planned, and the hosted beta terms say so. The hub itself is backed up off-site every night, encrypted before it leaves the server.

Upgrades

Staged upgrades with cost estimates

BehaviourWhat it means on a metered link
Manual update checks Checking with MikroTik for a new version uses the site's own connection, so it only happens when you ask. The daily poll reads the router's cached result instead.
Test device per model One device of each model is upgraded first. If any of them fails, the rest of the batch is skipped, across all models.
Verified upgrades Each upgrade takes a backup, installs, waits for the reboot and checks that the version changed. If that can't be confirmed, the upgrade is reported as failed.
Maintenance windows An upgrade queued outside the site's maintenance window waits with the status waiting window instead of failing. It can be cancelled while it waits.
Complete cost estimates If any device's download size is unknown, no total is shown, because a partial total would understate the bill.

Provisioning

Enrolment with one script

To add a router, paste a generated script into its terminal. The script creates the WireGuard interface, a management user and a firewall rule limited to the manager's address, then contacts the manager. The tunnel stays down until you approve the device.

The device appears as pending, showing the serial number, board and identity it reported. None of it is trusted until you approve the device and it is polled. Approving is the only step that grants access. Rejecting deletes the request.

This also works for a router that is already at sea: email the script to someone on board. They don't need any VPN knowledge.

High availability

Active/standby pairs

Two routers share a virtual IP using VRRP. One action sets up the pair step by step, with Change Guard protecting each change. Configuration is copied from the master to the standby, following whichever router is currently master, and checked every hour. Failover is based on the master's WAN health, and you can run a failover test or fail back at any time.

If both routers become master, a split-brain resolver fixes it or reports why it couldn't. A boot port fix repairs bridge ports that stop working after a reboot, without needing the hub. Uplink watch alerts when an uplink is up but passing no traffic. Crew hotspot logins move to the new master, and sessions on the old master are ended.

Current limits. This has been tested in a lab, not yet on customer hardware. DHCP leases are not copied between routers; the DHCP server moves with the virtual IP instead. Hotspot sessions restart on failover. Per-uplink health checks are not built yet.

Alerts, graphs and remote access

Monitoring and remote access

Alerts are sent by Telegram and email, with the most important types on by default and retries for up to 24 hours. Interface traffic is graphed from samples kept for 90 days, and a usage report covers WAN uplinks and crew usage, with CSV export. Operators can open WebFig through the tunnel, with session time limits and every session logged. Winbox access is not built yet.

Crew hotspot · optional

Hotspot accounts that work on every site

Zacsync can act as the RADIUS server for your captive portals. Accounts are stored centrally, so a voucher bought on one vessel works on all of them. The feature is off by default, and the RADIUS listener doesn't run when it is disabled.

RADIUS requests only come through the tunnel, never the open internet, so each router is identified by the tunnel address Zacsync assigned it, not by the name it reports. Each device has its own secret, so a stolen router can't be used to access the rest of the fleet.

The router enforces the quota. The remaining quota is sent to the router when a user logs in, so the router ends the session correctly even if the link to shore is down.

Access control

Roles, tenants and two-factor sign-in

RoleCan
ViewerView everything except credentials: devices, sites, jobs and logs, backup history, health, schedules, upgrade estimates and crew plans.
OperatorEverything a viewer can, plus: run commands, take backups, check and install upgrades, approve enrolments, create plans and vouchers, and view backup contents.
AdminEverything an operator can, plus user management.
Every user can enable two-factor sign-in with an authenticator app and ten single-use recovery codes, and an admin can make it required. Users can change their own password on the Account page, and a password set by an admin must be changed at first sign-in. All data is separated by tenant. A router added manually is pinned to its API certificate on first contact; if the certificate changes, the connection is refused and an alert is raised. Passkeys are not supported yet.
Viewing backup contents and voucher codes requires operator access, because a backup contains every credential on the router and a voucher code is a working login.

Try it on your own routers.