Skip to content

System Settings

The Settings page is the central administration hub for Meridian VMS. It provides a sidebar navigation with grouped sections for all configuration, monitoring, and management tasks.

The Settings page is accessible from the main navigation bar. Access requires the settings page permission or the admin role.

The Settings sidebar organises all administrative functions into four groups:

SectionDescriptionDetails
SystemService health, recording server management, failoverSee below
StorageRetention period, segment duration, disk full strategyStorage & Retention
LogsView and manage service logsSee below
SectionDescriptionDetails
CamerasCamera CRUD, ONVIF discovery, detection zones, time syncCamera Management
LocationsLocation hierarchy tree managementLocation Hierarchy
SectionDescriptionDetails
UsersUser accounts, profile, active/disabled toggleUsers & Roles
RolesRole definitions with page, action, and location permissionsUsers & Roles
SectionDescriptionDetails
AI DetectionModel training, training data management, training schedulesDetection training docs
Alarm RulesAlarm definitions, triggers, SOPs, escalationAlarm management docs
NotificationsNotification channels (Telegram, Discord, email, webhook)Notification docs

The System section (Settings > General > System) is the primary operational monitoring page. It displays real-time health information for the management server and all recording servers.

A health card at the top of the System page shows the management server’s status:

  • Memory usage — RAM consumed by the management process
  • CPU usage — percentage of CPU used by the management process
  • Background services — a list of internal background tasks with alive/dead indicators:
    • Heartbeat monitor
    • Retention scheduler
    • Time sync loop
    • MQTT listener
    • Alarm processor
    • Failover monitor

Each background service shows a green (alive) or red (dead) indicator.

A table of systemd services running on the management server:

ServiceDescription
Management ServerThe management application (meridian-management)
MediaMTX (Management)Stream relay on the management server (meridian-mediamtx)
Recorder (local)Local recorder daemon if the management server also records (meridian-recorder)

Each row shows:

  • Status — active (green) or inactive (red)
  • Since — how long the service has been in its current state
  • Restart button — triggers a systemctl restart for the service

Below local services, a table lists all registered recording servers:

ColumnDescription
NameServer name (editable)
Server Statusonline/offline badge
RecorderRecorder daemon health (ok/unreachable)
CamerasNumber of cameras assigned
Object DetectionWhether AI detection is running (active/off)
API URLThe recorder’s local API endpoint

Each row is clickable and opens a detailed Recorder Health Modal showing:

  • Disk usage with progress bar
  • CPU and memory with per-service breakdown (recorder, recording processes, stream relay)
  • Camera counts (total, recording, events today)
  • GPU information (model, CUDA version, utilisation, VRAM, temperature)
  • Object detection status (model, FPS, confidence, frames processed, events emitted)
  • Service threads with alive/dead indicators

The Server Stats button in the top-right opens a modal showing the management server’s detailed system statistics:

  • CPU percentage and core count with load averages
  • Memory usage with progress bar
  • Recording disk usage with progress bar
  • Camera recording ratio
  • Active recording process count
  • Total recording storage size
  • Stream engine (MediaMTX) CPU usage

The System page includes a Server Failover configuration card:

  • Enable failover — master toggle for the failover monitoring system
  • Auto-rebalance on recovery — whether to automatically redistribute cameras when an offline server comes back
  • Offline threshold — how many seconds without a heartbeat before a server is considered offline (30-600 seconds)
  • Rebalance cooldown — minimum time between rebalance operations (60-3600 seconds)
  • Rebalance Now — manual trigger for camera redistribution

The failover status shows:

  • Number of servers online and offline
  • Last failover event and timestamp
  • Remaining cooldown time if applicable

The Logs section (Settings > General > Logs) provides a log viewer for systemd journal logs from both local and remote services.

Local services:

  • Management Server (meridian-management)
  • MediaMTX on the management host (meridian-mediamtx)
  • Local Recorder (meridian-recorder)

Remote recording servers (one entry per server):

  • {Server Name} -- Recorder — the recorder daemon logs
  • {Server Name} -- MediaMTX — the MediaMTX stream engine logs

Remote logs are fetched by proxying the request through the management server to the recording server’s local API.

  • Service selector — dropdown to choose which service’s logs to view
  • Line count — select how many lines to display (100, 200, 500, 1000, 2000, 5000)
  • Refresh — manually reload the current log view
  • Auto-scroll — toggle to automatically scroll to the latest log entries
  • Purge All Logs — clear all journal logs on the server (affects all services, not just the selected one)

The log viewer renders output in a monospace terminal-style display with syntax highlighting.

Administrators can restart services directly from the UI:

From the System page’s Local Services table, click Restart on any service row. This executes a systemctl restart command on the management server.

From the Recording Servers table, click Restart on any server row. This:

  1. Sends a POST /api/servers/{id}/restart to the management server.
  2. The management server proxies the request to the recorder’s local API.
  3. The recorder daemon gracefully stops all recording processes and restarts.
  4. The UI polls the server status every 3 seconds until the recorder reports back as healthy (up to 90 seconds).

During restart, the server row shows a “restarting” badge.

MethodEndpointDescription
GET/api/settingsGet all system settings
PATCH/api/settingsUpdate system settings
GET/api/settings/servicesGet status of local and remote services
GET/api/settings/services/statsGet management server detailed stats
GET/api/settings/services/recorder/{id}Get detailed recorder health
POST/api/settings/services/{name}/restartRestart a local systemd service
GET/api/settings/logs/{service}Get local service logs
GET/api/settings/logs/recorder/{id}Get remote recorder logs
DELETE/api/settings/logs/{service}Purge all journal logs
GET/api/settings/management/healthGet management server health
GET/api/settings/failoverGet failover configuration and status
PUT/api/settings/failoverUpdate failover configuration
POST/api/settings/failover/rebalanceTrigger manual rebalance
GET/api/settings/time-syncGet time sync status
POST/api/settings/time-sync/toggleEnable/disable daily time sync
POST/api/settings/time-sync/runTrigger immediate time sync