{% extends "base.html" %} {% block title %}Settings — rosbackup-ng{% endblock %} {% block page_title %}Settings{% endblock %} {% block content %}
{% if error %}{% endif %}

Global defaults from global.yaml. Devices and groups can override most of these. A .bak of the previous file is written on every save; groups, storage backends and notifications are preserved untouched.

🖥️ System

Hostname (optional) rewrites 127.0.0.1 in user-clickable absolute links such as the Prometheus URL. Instance name (optional) is shown under the logo and exported via Prometheus / InfluxDB to identify this deployment.

⚙️ General
{% if timezones %} {% set cur_tz = raw.get('timezone', '') or '' %} {% else %} {% endif %}
🗄️ Retention

Defaults to 365 days for backups, 90 for logs. Blank keeps them forever.

days days
🔑 SSH defaults
{% if ssh_secrets %} {% elif vault_unlocked %}

No SSH keys in the vault yet. Store a key → to use it as the default.

{% else %}

The vault is locked — set ROSBACKUP_SECRET_KEY to choose a default key from it.

{% endif %} seconds
💾 Router-side tmpfs staging

Applies on each RouterOS device, not the rosbackup server. The backup is assembled in a small RAM disk (tmpfs) on the router and then downloaded, so the router's flash isn't written on every backup (saves flash wear).

MB on the router (when not auto-sized)
🛡 Security

Trust broken / possible MITM — the device is disabled and marked for security review; re-enable it after verifying and re-pinning the key.

📡 Latency monitoring

Ping each device host on an interval and chart round-trip time. {% if latency_running %}Monitoring is active.{% else %}Currently off.{% endif %} Changes apply after a server restart.

seconds seconds minutes

Not-yet-probed hosts are still included.

📈 Metrics export

Two paths out: a Prometheus pull endpoint and an optional InfluxDB push. Each has its own on/off switch and a set of category toggles for exactly what gets exported. InfluxDB credentials come from the vault (referenced by name) — never stored in global.yaml.

{{ metrics_url }}

Scrape with Authorization: Bearer <API token> (create a token under Security → Tokens / the CLI).

IPv4/IPv6 addresses or CIDR prefixes, one per line (a bare address means /32 or /128). Blank = any IP when public is on. Only governs unauthenticated scrapes — token/session access works regardless.

Prometheus categories

{% for c in export_categories %} {% endfor %} {% set auth = influxdb.get('auth_mode', 'token') %}
{% if cred_secrets %} {% elif vault_unlocked %}

No passwords in the vault yet. Store the token → to reference it here.

{% else %}

The vault is locked — set ROSBACKUP_SECRET_KEY to store the token.

{% endif %}
{% if cred_secrets %} {% elif vault_unlocked %}

No passwords in the vault yet. Store the password → to reference it here.

{% else %}

The vault is locked — set ROSBACKUP_SECRET_KEY to store the password.

{% endif %}
seconds

InfluxDB categories

{% for c in export_categories %} {% endfor %}
⬆️ Firmware versions
{% set ttl_now = upgrade.get('cache_ttl_hours', 8760) %}

How long the fetched MikroTik version index is cached. The Upgrade page also has a manual Refresh button.

🔐 Web capabilities

Groups can further restrict these per member (deny-wins); never re-grant.

{% endblock %}