OperationsServer Services and Files Reference

Server Services and Files Reference

This page is the reference for what runs on a UTMStack v12 server: every service, the ports it uses, the folders and files it keeps, where its logs are, the update service, the settings that have no screen, and what the server sends to UTMStack. Use it when you troubleshoot, plan backups or answer a security review.

For a picture of how the parts work together, see Architecture.

What runs on the server

PartRuns asStarted by
nginxSystem service nginx on the hostsystemd
Docker and Docker SwarmSystem service dockersystemd
UTMStack servicesDocker Swarm stack utmstack (10 services)Docker, from the definition the installer writes
Update serviceSystem service UTMStackComponentsUpdatersystemd
Cockpit (optional server console)System socket cockpit.socket, port 9090systemd

Docker services

All UTMStack services belong to the stack utmstack, so Docker names them utmstack_<service>, for example utmstack_backend. Each runs one copy on the server. The UTMStack images carry the tag of the installed version, for example v12.0.2.

ServiceImageWhat it doesPort inside the stackHost folders it uses
utmstack_frontendghcr.io/utmstack/utmstack/frontendServes the web interface and routes API, agent and download traffic to the other services.80, published on the host as 10001/utmstack/cert, /utmstack/front-end/nginx
utmstack_backendghcr.io/utmstack/utmstack/backendThe REST API under /api/v1, the MCP server for AI assistants, the API documentation at /swagger, and background jobs (notifications, audit clean-up, compliance schedules and others).8080/utmstack/updates, /utmstack/uploads, /utmstack/events-engine-workdir (soar, compliance, rules, pipeline), /utmstack/clickhouse/config.d
utmstack_agentmanagerghcr.io/utmstack/utmstack/agent-managerRegisters agents and collectors, sends them commands, and serves their installers and updates.9000 (agent connections), 9001 (downloads)/utmstack/cert, /utmstack/updates
utmstack_log-inputghcr.io/utmstack/utmstack/log-inputReceives logs from agents, the UTMStack Forwarder and collectors, and puts them on the queue.50051 (log streams), 8080 (health)/utmstack/cert
utmstack_natsnats:2.10-alpineThe queue between log intake and processing, kept on disk.4222/utmstack/nats
utmstack_event-processor-workerghcr.io/utmstack/utmstack/eventprocessorParses logs with the pipelines, enriches them, stores them in ClickHouse and runs correlation rules, threat intelligence, SOC-AI analysis and automated response.none/utmstack/events-engine-workdir (pipeline, rules, soar, logs), /utmstack/cert, /utmstack/updates
utmstack_event-processor-managerghcr.io/utmstack/utmstack/eventprocessorManages the event processor and serves the SOC-AI service and the pipeline and rule test playground to the backend.9002, 8090 (SOC-AI), 8091 (playground)Same as the worker
utmstack_clickhouseclickhouse/clickhouse-server:25.8Stores logs, alerts and ingestion statistics.9000/utmstack/clickhouse (data, init, conf, config.d, cold)
utmstack_postgresghcr.io/utmstack/utmstack/postgresStores configuration: users, tenants, settings, incidents, dashboards, compliance, response flows, agent registrations and more.5432Docker volume utmstack_postgres_data
utmstack_valkeyvalkey/valkey:9-alpineA short-lived cache of agent and collector credentials (for utmstack_agentmanager and utmstack_log-input) and of recent alerts for de-duplication (for the event processor). It can be rebuilt, so it drops old keys when full.6379/utmstack/valkey

Only the frontend is published on the host. All other ports are reachable only inside the stack's Docker network.

The memory limit of each service is in /utmstack/updates/memory-allocation.json. See Sizing and Capacity Planning and Installer Reference.

Ports on the host

PortListensPurpose
80/TCPnginxRedirects every request to HTTPS.
443/TCPnginxWeb interface, API, MCP server, agent and collector connections (gRPC), agent downloads. Everything is forwarded to 127.0.0.1:10001.
9090/TCPCockpitServer management console, if the Cockpit socket is running.
10001/TCPDocker (frontend)Internal: nginx on the host reaches the web container here. Plain HTTP. Block it from outside the server.
2377/TCP, 7946/TCP and UDP, 4789/UDPDocker SwarmDocker's cluster ports. UTMStack runs on one server, so no other machine needs them.

See Network Ports and Firewall for firewall rules and outbound connections.

Folders and files

On the host

PathContents
/root/utmstack.ymlThe installer's settings and secrets: generated password, internal keys, data folder. See Installer Reference. Back it up and keep it private.
/utmstackThe data folder. To keep data on a separate disk, mount that disk here before you install (see Prepare the Server).
/utmstack/certutm.crt and utm.key (the certificate nginx and the services use), ca.crt and ca.key (the certificate authority the installer created). See SSL Certificate.
/utmstack/clickhouse/dataClickHouse data: logs, alerts, statistics, and the records of what was moved to cold storage.
/utmstack/clickhouse/initThe table definitions ClickHouse runs the first time it starts with an empty data folder.
/utmstack/clickhouse/confClickHouse settings UTMStack depends on. Rewritten by every update.
/utmstack/clickhouse/config.dClickHouse server settings, plus the cold storage settings that Data Retention writes (utmstack-tiering.xml).
/utmstack/clickhouse/coldCold storage when you choose a local folder or an NFS share.
/utmstack/natsThe queue of logs not yet processed.
/utmstack/valkeyCache files.
/utmstack/events-engine-workdir/pipelinePipelines and the event processor's plugin settings (system_plugins_*.yaml and others).
/utmstack/events-engine-workdir/rulesCorrelation rules.
/utmstack/events-engine-workdir/soarResponse flow files.
/utmstack/events-engine-workdir/complianceCompliance framework files.
/utmstack/events-engine-workdir/logsEvent processor log folder.
/utmstack/uploadsUploaded images: avatars and branding.
/utmstack/front-end/nginxnginx settings of the web container. Rewritten by every update.
/utmstack/updatesUpdate service files, the licence and the instance identity (table below).
/utmstack/locksOne file per completed installation step. Do not delete them. See Installer Reference.
/utmstack/imagesContainer image files for air-gapped installations only.
/var/lib/docker/volumes/utmstack_postgres_dataThe PostgreSQL databases utmstack and agentmanager. Check the exact name with docker volume ls.
/usr/local/bin/utmstack_installer and /usr/local/bin/utmstackThe installer program and its short name. Replaced by each update.
compose.yml next to the installer programThe service definitions the installer last deployed, for example /usr/local/bin/compose.yml. Rewritten by every update.
/etc/systemd/system/UTMStackComponentsUpdater.serviceThe update service definition.
/etc/nginx/sites-available/default (Ubuntu, Debian) or /etc/nginx/nginx.conf (RHEL)nginx settings for UTMStack. Rewritten by every update.
/etc/nginx/html/custom_502.htmlThe "We're getting things ready" page nginx shows while the services start.

In /utmstack/updates

FileContents
version.jsonInstalled version, edition and change log.
instance-config.ymlThe address of the UTMStack update server, and this server's instance ID and key. The licence is tied to the instance ID.
LICENSEThe installed licence file.
pending-updates.jsonAn update that is downloaded but not yet applied.
memory-allocation.jsonMemory limits of the services.
last-admin-email.txtThe administrator email address last sent to the update server.
logs/utmstack-updater.logThe update service log.

Do not edit files that the installer rewrites (the nginx settings, compose.yml, the ClickHouse conf folder and the web container's nginx folder). Your changes are lost at the next update, and a wrong change can stop the services.

Where the logs are

WhatWhereHow to read it
Installation/var/log/utmstack-installer.logsudo tail -n 100 /var/log/utmstack-installer.log
Update service/utmstack/updates/logs/utmstack-updater.logsudo tail -n 100 /utmstack/updates/logs/utmstack-updater.log, or journalctl -u UTMStackComponentsUpdater
A UTMStack serviceDocker's log of the servicesudo docker service logs --tail 200 --timestamps utmstack_<service>
nginx/var/log/nginx/error.log and /var/log/nginx/access.logsudo tail -n 100 /var/log/nginx/error.log
Dockersystemd journaljournalctl -u docker --since "1 hour ago"
Kernel (for example processes stopped for lack of memory)systemd journaljournalctl -k --since "1 day ago", then look for "Out of memory"

Docker keeps at most 50 MB of log for each container. Older lines are dropped, and a container that is replaced (for example by an update) starts a new log. If you need UTMStack's own logs for longer, send them into UTMStack with UTMStack Self-Monitoring.

The update service

ItemValue
NameUTMStackComponentsUpdater ("UTMStack Components Updater")
Runs/usr/local/bin/utmstack_installer --run
StartsAt boot, and restarts itself to apply an update
Every minuteSends a heartbeat to the UTMStack update server
Every 5 minutesAsks for the next update and for licence changes; until it has sent one, checks for the administrator's email address
Every 15 minutesSends the day's usage per tenant (number of events and bytes ingested)
Log/utmstack/updates/logs/utmstack-updater.log

See Updates for how an update is applied.

Settings without a screen

Event processor settings files

Some event processor settings are files in /utmstack/events-engine-workdir/pipeline:

FileWhat it holdsChanged by
system_plugins_analysis.yaml, system_plugins_correlation.yaml, system_plugins_notification.yamlThe order of the event processor's plugins.The installer, at every update. Do not edit.
utmstack_plugins.yaml, clickhouse_plugins.yamlHow the plugins reach the databases.The installer, at every update. Do not edit.
system_plugins_feeds.yamlThreat intelligence switches.Settings > ThreatWinds Integration.
system_plugins_soc_ai.yamlSOC-AI settings.Settings > SOC-AI.
system_plugins_rule-flood-guard.yamlRule flood guard settings.By hand. See Rule Flood Guard.
system_plugins_<integration>.yamlSettings of cloud integrations.Configure > Integrations.

Environment variables

The backend reads some settings from environment variables. The installer sets them in the service definition it writes, and offers no option to add your own. A change you make by hand, for example with docker service update --env-add, is undone the next time the installer redeploys the stack: at every update and with --apply-memory or --recalculate-memory.

VariableDefaultEffect
AUDIT_RETENTION_DAYS365Days the audit log is kept. 0 or less keeps it for ever.
NOTIFICATIONS_READ_RETENTION_DAYS30Days read notifications are kept.
NOTIFICATIONS_RETENTION_DAYS365Days any notification is kept.
COMPLIANCE_REPORT_BODY_RETENTION_DAYS730Days the stored content of compliance reports is kept.
APP_AI_REQUEST_LIMIT-1 (no limit)Server-wide daily limit of SOC-AI requests. See AI Usage and Limits.
MCP_ENABLEDtrueTurns the MCP server for AI assistants on or off. See MCP Server.
DATA_RETENTION_ENABLEDtrueShows the Data Retention page. When false, the page is hidden.
SERVER_NAMEThe host name, set by the installerThe server name UTMStack shows.

What the server sends to UTMStack

The update service talks to the UTMStack update server, https://cm.utmstack.com, over HTTPS:

WhenWhat is sent
Once, when the server registersThe host name, the installed version, the edition, and the product name utmstack-v12. The update server answers with this server's instance ID and key, saved in /utmstack/updates/instance-config.yml.
Every minuteA heartbeat with the instance ID.
Every 5 minutesRequests for the next update and for the licence, with the instance ID.
Every 15 minutesFor each tenant: the tenant's ID, the day, and the number of events and bytes ingested that day. No log content is sent.
Once, after the administrator sets an email addressThe host name and the email address of the first active administrator of the default tenant.
After an update is appliedConfirmation that the update was applied.

Registration is also what lets the server use the ThreatWinds threat intelligence feeds, the default ThreatWinds SOC-AI provider and licences from UTMStack. Threat intelligence and SOC-AI send their own data to ThreatWinds when you use them; see Threat Intelligence: How Indicator Alerts Work and AI Providers.

The installer also checks https://cm.utmstack.com/api/v1/health during installation, and the server downloads installers from github.com and container images from ghcr.io and Docker Hub.