Consolidated service account architecture, application-level RBAC, database permissions, and OS-level user configuration for MinusNow ITSM.
MinusNow uses a consolidated service account model with 4 accounts, matching the industry-standard approach used by platforms like ServiceNow, Jira Service Management, and BMC Helix. Module-level access control is enforced at the application RBAC layer, not at the database layer.
MinusNow is a single Node.js process with one database connection pool. Creating separate database users for each module adds operational complexity with no security benefit — the application process already has access to all data. Instead, permissions are enforced by the application's RBAC engine, which is how all major ITSM platforms work.
minusnow) runs the app processmnow-agent account on monitored hosts with minimal sudoThis guide aligns with the account names used in the OS & Prerequisites Guide, Linux Deployment Guide, Windows Deployment Guide, and Cloud Deployment Guide. All deployment guides reference the same 4 service accounts documented here.
How MinusNow's approach compares to major ITSM platforms.
| Platform | App DB Accounts | Module Isolation Method | Agent Account |
|---|---|---|---|
| ServiceNow | 1 (single connection pool) | Application ACLs + Roles | MID Server service user |
| Jira Service Management | 1 (single connection pool) | Permission Schemes + Roles | N/A (SaaS) |
| BMC Helix ITSM | 1 (AR System user) | Application permissions + groups | Agent service account |
| Freshservice | 1 (SaaS) | Role-based permissions | Discovery Probe user |
| MinusNow | 1 (minusnow) | Application RBAC (6 roles) | mnow-agent |
A common misconception is that each application module should have its own database user. This approach has significant drawbacks for a single-process platform:
MinusNow requires exactly 4 service accounts across all deployment types (on-premises, cloud, and hybrid).
| # | Account | Layer | Purpose | Where |
|---|---|---|---|---|
| 1 | minusnow | OS + DB | Primary application account — runs the Node.js process, owns the database | ITSM server |
| 2 | mnow-agent | OS only | Monitoring agent — runs on each managed host for discovery, monitoring, auto-healing | Managed hosts |
| 3 | mnow_backup | DB only | Database backup — read-only access for pg_dump | Backup server |
| 4 | mnow_monitor | DB only | Database health monitoring — read-only access to pg_stat_* views | Monitoring server |
minusnow — Application Service AccountPrimary account running the MinusNow ITSM platform process and owning the database
| Property | Linux | Windows |
|---|---|---|
| Username | minusnow | minusnow (local) or DOMAIN\svc-minusnow (AD) |
| Shell | /bin/bash (needed for deployment tasks) | Standard user (no admin) |
| Home directory | /opt/minusnow | C:\MinusNow\ITSM |
| File access | Read/write: /opt/minusnow, /var/log/minusnow, /var/lib/minusnow | Modify on C:\MinusNow |
| Privileges | Non-root, no sudo | Non-admin, "Log on as a service" |
| Permission | Scope | Rationale |
|---|---|---|
OWNER | minusnow_itsm database | Application manages its own schema via Drizzle ORM migrations |
ALL PRIVILEGES | All tables in public schema | Full CRUD needed — module permissions enforced by application RBAC |
NOSUPERUSER | Cluster-level | Cannot modify other databases or PostgreSQL configuration |
NOCREATEDB | Cluster-level | Cannot create additional databases |
NOCREATEROLE | Cluster-level | Cannot create other database roles |
This single account serves all 21 modules: Incidents, Alerts, Changes, Problems, Assets/CMDB, Service Catalog, Knowledge Base, SLA Management, On-Call/Escalation, Reporting/Analytics, Security/Compliance, AI/Explainable AI, Notifications, Audit/Logging, Status Page, Agent Management, Backup/DR, Automation & Self-Healing, RCA & Forensics, Capacity Management, and Vulnerability & Patch Management.
mnow-agent — Monitoring Agent AccountRuns on each managed host for monitoring, discovery, auto-healing, capacity scanning, and vulnerability assessment
| Property | Linux | Windows |
|---|---|---|
| Username | mnow-agent | mnow-agent (local service account) |
| Shell | /usr/sbin/nologin (no interactive login) | Standard user, "Log on as a service" |
| Groups | mnow-agent, systemd-journal | Performance Monitor Users |
| SSH access | Disabled | N/A |
| Home directory | None (--no-create-home) | Default (restricted) |
# /etc/sudoers.d/mnow-agent
mnow-agent ALL=(ALL) NOPASSWD: \
/usr/bin/systemctl restart *, \
/usr/bin/systemctl status *, \
/usr/sbin/service * restart, \
/usr/bin/apt-get update, \
/usr/bin/apt-get install -y --only-upgrade *, \
/usr/bin/yum update -y *, \
/usr/bin/dmidecode, \
/usr/sbin/lshw -json
Monitoring metrics collection, service auto-healing (restart), asset/hardware discovery, capacity scanning (CPU/RAM/disk), vulnerability assessment (OS package checks), agent self-update.
mnow_backup — Database Backup AccountRead-only PostgreSQL user for automated database backups via pg_dump
| Permission | Scope | Rationale |
|---|---|---|
pg_read_all_data | All tables (read-only) | Required for full database dump |
NOSUPERUSER | Cluster-level | Cannot modify database or config |
NOCREATEDB | Cluster-level | Cannot create databases |
CONNECTION LIMIT 2 | Per-user limit | Only one backup runs at a time; extra slot for monitoring |
pg_hba.conf) to backup server onlymnow_monitor — Database Health MonitorRead-only PostgreSQL user for Prometheus/Grafana database metrics collection
| Permission | Scope | Rationale |
|---|---|---|
pg_monitor | Monitoring views | Access to pg_stat_activity, pg_stat_user_tables, pg_locks, etc. |
CONNECT | minusnow_itsm database | Can connect but not read application data |
CONNECTION LIMIT 3 | Per-user limit | Prometheus scrapes + dashboard queries |
Create and configure service accounts at the operating system level. These commands match the deployment guides exactly.
#!/bin/bash
# === MinusNow Application User ===
# Matches: Linux On-Prem Guide, Cloud Guide, OS & Prerequisites Guide
sudo useradd -r -m -d /opt/minusnow -s /bin/bash minusnow
# Create application directories
sudo mkdir -p /opt/minusnow-itsm
sudo mkdir -p /var/log/minusnow
sudo mkdir -p /var/lib/minusnow/{data,backups}
sudo chown -R minusnow:minusnow /opt/minusnow-itsm
sudo chown -R minusnow:minusnow /var/log/minusnow
sudo chown -R minusnow:minusnow /var/lib/minusnow
# === Monitoring Agent User (on managed hosts only) ===
# Matches: OS & Prerequisites Guide, Agent Installation Guide
sudo useradd -r -s /usr/sbin/nologin mnow-agent
# Grant agent limited sudo for auto-healing and discovery
echo "mnow-agent ALL=(ALL) NOPASSWD: \
/usr/bin/systemctl restart *, \
/usr/bin/systemctl status *, \
/usr/sbin/service * restart, \
/usr/bin/apt-get update, \
/usr/bin/apt-get install -y --only-upgrade *, \
/usr/bin/yum update -y *, \
/usr/bin/dmidecode, \
/usr/sbin/lshw -json" \
| sudo tee /etc/sudoers.d/mnow-agent
sudo chmod 0440 /etc/sudoers.d/mnow-agent
# === MinusNow Application User ===
# Matches: Windows On-Prem Guide, Cloud Guide
$pw = [System.Web.Security.Membership]::GeneratePassword(32, 8)
New-LocalUser -Name "minusnow" `
-Password (ConvertTo-SecureString $pw -AsPlainText -Force) `
-Description "MinusNow ITSM service account" `
-PasswordNeverExpires $false
# Create and secure application directory
New-Item -ItemType Directory -Path "C:\MinusNow\ITSM" -Force
New-Item -ItemType Directory -Path "C:\MinusNow\ITSM\data" -Force
New-Item -ItemType Directory -Path "C:\MinusNow\ITSM\logs" -Force
New-Item -ItemType Directory -Path "C:\MinusNow\ITSM\backups" -Force
$acl = Get-Acl "C:\MinusNow"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"minusnow", "Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\MinusNow" $acl
# === Monitoring Agent User (on managed hosts only) ===
# Matches: Agent Installation Guide
$agentPw = [System.Web.Security.Membership]::GeneratePassword(32, 8)
New-LocalUser -Name "mnow-agent" `
-Password (ConvertTo-SecureString $agentPw -AsPlainText -Force) `
-Description "MinusNow monitoring agent" `
-PasswordNeverExpires $false `
-UserMayNotChangePassword $true
Add-LocalGroupMember -Group "Performance Monitor Users" -Member "mnow-agent"
PostgreSQL user creation and permission grants. These match the database setup in the deployment guides.
-- =============================================================
-- MinusNow Database Setup
-- Matches: OS & Prerequisites, Linux/Windows/Cloud Deploy Guides
-- =============================================================
-- 1. Primary application user (data owner)
CREATE USER minusnow WITH PASSWORD 'REPLACE_WITH_SECURE_PASSWORD'
NOSUPERUSER NOCREATEDB NOCREATEROLE;
CREATE DATABASE minusnow_itsm OWNER minusnow;
GRANT ALL PRIVILEGES ON DATABASE minusnow_itsm TO minusnow;
-- Connect to application database for remaining setup
\c minusnow_itsm
-- Grant schema ownership (Drizzle ORM manages migrations)
GRANT ALL ON SCHEMA public TO minusnow;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON TABLES TO minusnow;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON SEQUENCES TO minusnow;
-- Enable required extensions
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; -- UUID generation
CREATE EXTENSION IF NOT EXISTS "pg_trgm"; -- Fuzzy text search
-- 2. Backup user (read-only for pg_dump)
CREATE USER mnow_backup WITH PASSWORD 'REPLACE_WITH_SECURE_PASSWORD'
NOSUPERUSER NOCREATEDB NOCREATEROLE CONNECTION LIMIT 2;
GRANT pg_read_all_data TO mnow_backup;
-- 3. Monitoring user (stats only, no application data)
CREATE USER mnow_monitor WITH PASSWORD 'REPLACE_WITH_SECURE_PASSWORD'
NOSUPERUSER NOCREATEDB NOCREATEROLE CONNECTION LIMIT 3;
GRANT pg_monitor TO mnow_monitor;
GRANT CONNECT ON DATABASE minusnow_itsm TO mnow_monitor;
-- Revoke public access
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM PUBLIC;
| Account | Connection Limit | Rationale |
|---|---|---|
minusnow | 50 (default pool) | Application connection pool — sized for production load |
mnow_backup | 2 | One active backup + one monitoring connection |
mnow_monitor | 3 | Prometheus scraper + Grafana dashboard queries |
pg_hba.conf Access Control# MinusNow application (local connections only)
local minusnow_itsm minusnow md5
host minusnow_itsm minusnow 127.0.0.1/32 md5
host minusnow_itsm minusnow ::1/128 md5
# Backup user (restrict to backup server IP)
host minusnow_itsm mnow_backup 10.0.1.100/32 md5
# Monitoring user (restrict to monitoring server IP)
host minusnow_itsm mnow_monitor 10.0.1.101/32 md5
# Deny everything else
host all all 0.0.0.0/0 reject
Module-level access control is enforced by the MinusNow application, not at the database layer. This is the primary security boundary for user permissions.
| Role | Description | Scope | Typical Users |
|---|---|---|---|
| admin | Full platform administration | All modules + system config | IT Directors, Platform Admins |
| manager | Team management, approvals, reports | Assigned modules + reports | IT Managers, Team Leads |
| operator | Create, update, and resolve records | Assigned modules (CRUD) | Support Analysts, Engineers |
| viewer | Read-only dashboards and records | Assigned modules (read) | Stakeholders, Executives |
| requester | Submit and track own requests | Service catalog + own items | End Users, Employees |
| auditor | Read-only access + audit logs | All modules (read-only) | Compliance Officers, External Auditors |
Human users are assigned roles. The application checks roles on every API request. The database user (minusnow) has full access, but the application only executes queries that the user's role permits. This is the same model used by ServiceNow, Jira, and every major ITSM platform.
Complete RBAC mapping for all 21 platform modules, including Automation & Self-Healing, RCA & Forensics, Capacity Management, and Vulnerability & Patch Management.
| Module | admin | manager | operator | viewer | requester | auditor |
|---|---|---|---|---|---|---|
| Incidents | CRUD | CRUD | CRU | R | — | R |
| Alerts | CRUD | CRU | CRU | R | — | R |
| Changes | CRUD | CRUD | CRU | R | — | R |
| Problems | CRUD | CRUD | CRU | R | — | R |
| Assets / CMDB | CRUD | CRU | CRU | R | — | R |
| Service Catalog | CRUD | CRU | CRU | R | CR | R |
| Knowledge Base | CRUD | CRUD | CRU | R | R | R |
| SLA Management | CRUD | CRU | R | R | — | R |
| On-Call / Escalation | CRUD | CRU | R | R | — | R |
| Reporting / Analytics | CRUD | CRU | R | R | — | R |
| Security / Compliance | CRUD | R | — | — | — | R |
| AI / Explainable AI | CRUD | RU | R | R | R | R |
| Notifications | CRUD | CRU | R | R | R | R |
| Status Page | CRUD | CRU | CRU | R | R | R |
| Automation & Self-Healing | CRUD | CRU | CRU | R | — | R |
| RCA & Forensics | CRUD | CRUD | CRU | R | — | R |
| Capacity Management | CRUD | CRU | R | R | — | R |
| Vulnerability & Patch Mgmt | CRUD | CRU | CRU | R | — | R |
| Agent Management | CRUD | CRU | R | R | — | R |
| Users & Teams | CRUD | CRU | R | R | — | R |
| System Config | CRUD | — | — | — | — | R |
| Audit Logs | R | R | — | — | — | R |
| Backup / DR | CRUD | — | — | — | — | R |
C = Create R = Read U = Update D = Delete — = No access. Highlighted rows are modules added in v3.0.
Rotation schedules and lifecycle management for the 4 service accounts.
| Account | Credential Type | Rotation | Method |
|---|---|---|---|
minusnow | DB password + API key | Every 90 days | Automated via Vault / secrets manager |
mnow-agent | Agent registration token | Every 90 days | Automated via agent auto-update |
mnow_backup | DB password | Every 60 days | Automated via Vault + backup script |
mnow_monitor | DB password | Every 90 days | Automated via Vault + Prometheus config reload |
#!/bin/bash
# Automated password rotation for minusnow DB user
# Cron: 0 2 1 */3 * /opt/minusnow/scripts/rotate-db-password.sh
NEW_PASSWORD=$(openssl rand -hex 32)
# 1. Update PostgreSQL password
PGPASSWORD=$ADMIN_PW psql -U postgres -d minusnow_itsm -c \
"ALTER USER minusnow WITH PASSWORD '${NEW_PASSWORD}';"
# 2. Update secrets manager
vault kv put secret/minusnow/db password="${NEW_PASSWORD}"
# 3. Log the rotation (no secrets in log)
echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) - Rotated DB password for minusnow" \
>> /var/log/minusnow/rotation.log
# 4. Gracefully restart application to pick up new credentials
sudo systemctl restart MinusNow
| Phase | Actions | Responsible |
|---|---|---|
| Provisioning | Create OS user, DB user, generate credentials, store in Vault | Platform Admin (initial install) |
| Active | Monitor usage, rotate credentials on schedule, audit access | Automated + Security Team |
| Quarterly Review | Validate permissions, check unused accounts, review audit logs | Security / Compliance Team |
| Modification | Adjust connection limits, update IP restrictions, add/remove sudo entries | Platform Admin |
| Decommissioning | Disable account, revoke all DB grants, remove OS user, archive logs | Platform Admin + Security |
Framework mapping and audit log format for regulatory compliance.
| Requirement | Framework | How MinusNow Satisfies |
|---|---|---|
| Least privilege access | SOC 2, ISO 27001 | 4 consolidated accounts with minimum required permissions; application RBAC for user access |
| Separation of duties | SOX, NIST 800-53 | 6 application roles separate admin, operator, viewer, and auditor. Backup account is read-only. |
| Credential rotation | PCI-DSS, SOC 2 | 60–90 day automated rotation via secrets manager |
| Audit trail | All frameworks | Append-only audit logs with user, timestamp, action, and correlation ID |
| Access review | SOC 2, ISO 27001 | Quarterly automated review of all 4 accounts + RBAC role assignments |
| Non-interactive accounts | CIS Benchmarks | Agent account has nologin shell; DB-only accounts have no OS user |
{
"timestamp": "2026-02-25T14:30:00Z",
"user": "john.doe@company.com",
"role": "operator",
"action": "incidents:update",
"resource_type": "incident",
"resource_id": "INC-2026-001234",
"details": {
"field": "status",
"old_value": "In Progress",
"new_value": "Resolved"
},
"source_ip": "10.0.1.50",
"user_agent": "Mozilla/5.0 ...",
"session_id": "sess_abc123",
"correlation_id": "req_xyz789",
"db_user": "minusnow"
}
The db_user is always minusnow. The important fields for audit are user (human identity) and role (RBAC role). This is the same audit model used by ServiceNow, Jira, and BMC.
Provisioning, administering, and offboarding human application users.
On first deployment, MinusNow creates a default administrator account. At least one admin user is required at all times.
| Property | Default Value | Notes |
|---|---|---|
admin@<your-domain> | Set via ADMIN_EMAIL env var | |
| Role | Admin | Full CRUD on all modules |
| Password | Generated on first run | Printed once to stdout; must be changed immediately |
| MFA | Required after first login | TOTP, SMS, or email verification |
| Deployment Scale | Min Admin Users | Min Operators | Recommended Setup |
|---|---|---|---|
| Small (1–50 users) | 1 | 1 | 1 admin + 1 operator + viewers |
| Medium (50–250 users) | 2 | 2 | 2 admins + 2 operators + 1 manager + viewers |
| Enterprise (250+ users) | 3 | 5 | 3 admins + 5 operators + 2 managers + 1 auditor + viewers |
| Method | How | Best For |
|---|---|---|
| Manual invite | Settings → Team & Roles → Invite User | Small teams, individual onboarding |
| Directory Sync | Directory Integration page → Configure AD/LDAP → Sync | Enterprises with Active Directory |
| SCIM provisioning | Identity provider (Okta, Azure AD) pushes users via SCIM 2.0 endpoint | Automated JML workflows |
| Self-registration | Enable in Settings → General; users register at /auth | Internal portals, requesters |
When a user leaves the organization or no longer requires access:
| Step | Action | Where |
|---|---|---|
| 1 | Disable user login (preserves audit trail) | Settings → Team & Roles → User → Revoke Access |
| 2 | Reassign open tickets and owned assets | Incident/Change Management → Bulk Reassign |
| 3 | Revoke all active sessions | Settings → Security → Session Management (or API) |
| 4 | Revoke API tokens belonging to user | Settings → API Keys → Revoke |
| 5 | Directory Sync auto-disable (if configured) | Directory Integration → Deprovisioning Policy |
Synchronize users from Active Directory, LDAP, or SAML/OIDC identity providers.
| Provider | Protocol | User Sync | SSO Login | SCIM Provisioning |
|---|---|---|---|---|
| Microsoft Active Directory | LDAP / LDAPS | ✅ | ✅ (via AD FS / Azure AD) | ✅ |
| Azure Active Directory | OIDC / SAML 2.0 | ✅ | ✅ | ✅ |
| Okta | SAML 2.0 / OIDC | ✅ | ✅ | ✅ |
| Google Workspace | OIDC | ✅ | ✅ | — |
| OpenLDAP | LDAP / LDAPS | ✅ | — | — |
Configure in-app via Directory Integration page:
| Setting | Example | Description |
|---|---|---|
| LDAP Host | ldaps://dc01.corp.example.com:636 | Domain controller address (use LDAPS for TLS) |
| Bind DN | CN=svc-minusnow,OU=ServiceAccounts,DC=corp,DC=example,DC=com | Service account for LDAP queries |
| Base DN | OU=Users,DC=corp,DC=example,DC=com | User search scope |
| User Filter | (&(objectClass=user)(memberOf=CN=MinusNow-Users,OU=Groups,DC=corp,DC=example,DC=com)) | Only sync users in the MinusNow group |
| Sync Interval | Every 15 minutes | Poll frequency for delta changes |
| Attribute Mapping | sAMAccountName → username, mail → email, displayName → name | Map AD attributes to MinusNow fields |
Map Active Directory groups to MinusNow application roles:
| AD Group | MinusNow Role | Auto-Provision |
|---|---|---|
MinusNow-Admins | Admin | Yes |
MinusNow-Managers | Manager | Yes |
MinusNow-Operators | Operator | Yes |
MinusNow-Viewers | Viewer | Yes |
MinusNow-Requesters | Requester | Yes |
MinusNow-Auditors | Auditor | Yes |
Create, scope, rotate, and revoke API tokens for programmatic access.
| Token Type | Prefix | Scope | Max Lifetime | Created By |
|---|---|---|---|---|
| Personal Access Token | mn_pat_ | Inherits user role permissions | 365 days | Any user |
| Service Token | mn_svc_ | Configurable per-module scopes | No expiry (rotation required) | Admin only |
| Agent Registration Token | mn_agt_ | Agent registration + heartbeat | 30 days | Admin / Operator |
| Webhook Signing Token | mn_whk_ | Webhook endpoint verification | No expiry | Admin only |
| Scope | Description | Example Endpoints |
|---|---|---|
incidents:read | Read incidents, comments, timeline | GET /api/incidents |
incidents:write | Create, update, close incidents | POST /api/incidents, PATCH /api/incidents/:id |
changes:read | Read change requests and approvals | GET /api/changes |
changes:write | Create and approve change requests | POST /api/changes |
monitoring:read | Read alerts, metrics, host status | GET /api/monitoring/alerts |
monitoring:write | Acknowledge, silence alerts | POST /api/monitoring/alerts/:id/ack |
cmdb:read | Read configuration items, relationships | GET /api/cmdb/items |
cmdb:write | Create, update CIs and relationships | POST /api/cmdb/items |
users:read | List users, roles, teams | GET /api/users |
users:admin | Create, deactivate, change roles | POST /api/users, DELETE /api/users/:id |
admin:* | Full admin API access (all scopes) | All endpoints |
| Stage | Action | Details |
|---|---|---|
| Creation | Generate via Settings → API Keys, or POST /api/tokens | Token value shown once; hash stored server-side |
| Usage | Include in Authorization: Bearer mn_pat_... header | Rate-limited to 1,000 req/min per token |
| Rotation | Generate new token, update integrations, revoke old token | Recommended: 90-day rotation for service tokens |
| Revocation | Settings → API Keys → Revoke, or DELETE /api/tokens/:id | Immediate; existing sessions using token are terminated |
Configure password complexity, multi-factor authentication, and session controls.
| Setting | Default | Configurable | Compliance |
|---|---|---|---|
| Minimum length | 12 characters | 8–128 via Settings → Security | NIST 800-63b |
| Uppercase required | Yes | Yes | PCI-DSS |
| Number required | Yes | Yes | PCI-DSS |
| Special character required | Yes | Yes | PCI-DSS |
| Password expiry | 90 days | 30–365 days or never | SOC 2 |
| Password history | Last 12 passwords | 5–24 | ISO 27001 |
| Breached password check | Enabled | Yes | NIST 800-63b |
| MFA Method | Default | Supported |
|---|---|---|
| Authenticator App (TOTP) | Primary | Google Authenticator, Authy, 1Password, etc. |
| SMS Code | Fallback | Twilio, AWS SNS |
| Email Verification | Fallback | Built-in email provider |
Configure MFA enforcement in Settings → Security → Multi-Factor Authentication. When enforced, all users must enroll on their next login.
| Setting | Default | Configurable Range |
|---|---|---|
| Session timeout (idle) | 30 minutes | 15–480 minutes |
| Max concurrent sessions | 5 per user | 1–20 |
| Max login attempts before lockout | 5 attempts | 3–15 |
| Lockout duration | 15 minutes | 5–60 minutes |
| IP allowlist | Disabled | CIDR ranges via Settings → Security |
Complete summary and cross-documentation links.
| Account | Type | Where It Runs | DB Access | Rotation |
|---|---|---|---|---|
minusnow | OS + DB | ITSM server | Owner (full CRUD) | 90 days |
mnow-agent | OS only | Managed hosts | None (API only) | 90 days |
mnow_backup | DB only | Backup server | Read-only (pg_dump) | 60 days |
mnow_monitor | DB only | Monitoring server | Stats views only | 90 days |
# =====================================================
# MinusNow Service Account Configuration
# Production: Use Vault, AWS Secrets Manager, or Azure Key Vault
# =====================================================
# Primary application account
DATABASE_URL=postgresql://minusnow:<from-secrets-manager>@localhost:5432/minusnow_itsm
SESSION_SECRET=<from-secrets-manager>
APP_BASE_URL=https://minusnow.yourdomain.com
# Agent communication
AGENT_API_KEY=<from-secrets-manager>
AGENT_REGISTRATION_TOKEN=<from-secrets-manager>
# Backup account (used by backup script only)
BACKUP_DB_USER=mnow_backup
BACKUP_DB_PASS=<from-secrets-manager>
# Monitoring account (used by Prometheus postgres_exporter)
MONITOR_DB_USER=mnow_monitor
MONITOR_DB_PASS=<from-secrets-manager>
| Topic | Guide | Section |
|---|---|---|
| OS user creation (Linux) | Linux Deployment Guide | Step 3 — Create Application User |
| OS user creation (Windows) | Windows Deployment Guide | Step 2 — Directory Structure |
| OS user creation (Cloud) | Cloud Deployment Guide | Steps 3 & 5 — Install |
| Database setup & user creation | OS & Prerequisites | Database Setup |
| Agent user & sudo setup | OS & Prerequisites | User Permissions |
| Agent installation | Agent Install Guide | Full guide |
| Module capabilities | Comprehensive Module Guide | All 21 modules |
| Firewall ports | OS & Prerequisites | Firewall & Ports |