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.
Sidebar Navigation
Section titled “Sidebar Navigation”The Settings sidebar organises all administrative functions into four groups:
General
Section titled “General”| Section | Description | Details |
|---|---|---|
| System | Service health, recording server management, failover | See below |
| Storage | Retention period, segment duration, disk full strategy | Storage & Retention |
| Logs | View and manage service logs | See below |
Cameras & Sites
Section titled “Cameras & Sites”| Section | Description | Details |
|---|---|---|
| Cameras | Camera CRUD, ONVIF discovery, detection zones, time sync | Camera Management |
| Locations | Location hierarchy tree management | Location Hierarchy |
Access Control
Section titled “Access Control”| Section | Description | Details |
|---|---|---|
| Users | User accounts, profile, active/disabled toggle | Users & Roles |
| Roles | Role definitions with page, action, and location permissions | Users & Roles |
Detection & Alarms
Section titled “Detection & Alarms”| Section | Description | Details |
|---|---|---|
| AI Detection | Model training, training data management, training schedules | Detection training docs |
| Alarm Rules | Alarm definitions, triggers, SOPs, escalation | Alarm management docs |
| Notifications | Notification channels (Telegram, Discord, email, webhook) | Notification docs |
System Health Monitoring
Section titled “System Health Monitoring”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.
Management Server Health
Section titled “Management Server Health”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.
Local Services
Section titled “Local Services”A table of systemd services running on the management server:
| Service | Description |
|---|---|
| Management Server | The 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 restartfor the service
Recording Server Overview
Section titled “Recording Server Overview”Below local services, a table lists all registered recording servers:
| Column | Description |
|---|---|
| Name | Server name (editable) |
| Server Status | online/offline badge |
| Recorder | Recorder daemon health (ok/unreachable) |
| Cameras | Number of cameras assigned |
| Object Detection | Whether AI detection is running (active/off) |
| API URL | The 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
Server Stats Modal
Section titled “Server Stats Modal”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
Server Failover
Section titled “Server Failover”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
Service Logs
Section titled “Service Logs”The Logs section (Settings > General > Logs) provides a log viewer for systemd journal logs from both local and remote services.
Available Log Sources
Section titled “Available Log Sources”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.
Log Viewer Features
Section titled “Log Viewer Features”- 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.
Service Restart
Section titled “Service Restart”Administrators can restart services directly from the UI:
Local Services
Section titled “Local Services”From the System page’s Local Services table, click Restart on any service row. This executes a systemctl restart command on the management server.
Remote Recording Services
Section titled “Remote Recording Services”From the Recording Servers table, click Restart on any server row. This:
- Sends a
POST /api/servers/{id}/restartto the management server. - The management server proxies the request to the recorder’s local API.
- The recorder daemon gracefully stops all recording processes and restarts.
- 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.
API Reference
Section titled “API Reference”| Method | Endpoint | Description |
|---|---|---|
GET | /api/settings | Get all system settings |
PATCH | /api/settings | Update system settings |
GET | /api/settings/services | Get status of local and remote services |
GET | /api/settings/services/stats | Get management server detailed stats |
GET | /api/settings/services/recorder/{id} | Get detailed recorder health |
POST | /api/settings/services/{name}/restart | Restart 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/health | Get management server health |
GET | /api/settings/failover | Get failover configuration and status |
PUT | /api/settings/failover | Update failover configuration |
POST | /api/settings/failover/rebalance | Trigger manual rebalance |
GET | /api/settings/time-sync | Get time sync status |
POST | /api/settings/time-sync/toggle | Enable/disable daily time sync |
POST | /api/settings/time-sync/run | Trigger immediate time sync |