Skip to main content
Version: 10.1

Installation Guide

Welcome to the Installation Guide! This page will help you set up and configure the system using Docker, Podman, or Kubernetes. Use the tabs below to navigate through each setup method.

Installation Methods:

  • Docker Setup: Quick and easy containerized installation.
  • Podman Setup: Docker-compatible, rootless containers.
  • Kubernetes Setup: For scalable, production-grade deployments.

To install using Docker:

  1. Download the provided docker-compose.yml file below.
  2. Pull the container image from the registry: docker pull registry.frafos.net/mon:<tag>
  3. Update your docker-compose.yml to use the registry image:
    image: registry.frafos.net/mon:<tag>
  4. Run: docker-compose up -d
  5. Access the dashboard at http://localhost:3000

Container images are available at: Frafos Container Registry

Show example docker-compose.yml
⬇️ Download docker-compose.yml
docker-compose.yml
# Example Docker Compose file for Frafos monitoring stack
# Each service below represents a containerized application.

services:
ccm: # Call Control Manager (CCM) service
image: registry.frafos.net/abc/ccm:5.5
container_name: ccm
ports:
- "443-444:443-444" # Expose ports 443 and 444
networks:
- monitoring # Connect to monitoring network
- signaling # Connect to signaling network
restart: always # Always restart on failure
volumes:
- ccm-data:/data # Persist data in named volume
cap_add:
- AUDIT_CONTROL # Add audit control capability
- AUDIT_WRITE # Add audit write capability

elastic: # Elasticsearch service for log and metric storage
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.28
container_name: elastic
ports:
- "9200:9200" # HTTP API
- "9300:9300" # Transport protocol
environment:
- discovery.type=single-node # Run as single node
- network.host=_local_,_site_ # Bind to local and site interfaces
- path.repo=/usr/share/elasticsearch/snapshots # Path for snapshots
#- thread_pool.search.queue_size=10000 # (optional) Increase search queue size
- xpack.ml.enabled=false # Disable ML features
- xpack.security.enabled=false # Disable security
- xpack.security.http.ssl.enabled=false# Disable HTTP SSL
#- cluster.max_shards_per_node=166 # (optional) Increase max shards
#- indices.lifecycle.history_index_enabled=false # (optional) Disable ILM history
networks:
- monitoring
restart: always
ulimits:
nofile:
soft: 65536
hard: 65536
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 4g
volumes:
- es-data:/usr/share/elasticsearch/data # Data volume
- es-snapshots:/usr/share/elasticsearch/snapshots # Snapshots volume
#- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro # (optional) Custom config

chrome:
# Headless Chrome for PDF generation or browser automation
image: zenika/alpine-chrome:latest
#image: registry.frafos.net/contrib/alpine-chrome:latest # (alternative image)
container_name: chrome
networks:
- monitoring
expose:
- "9222" # Expose remote debugging port
command:
- "--no-sandbox"
- "--remote-debugging-address=0.0.0.0"
- "--remote-debugging-port=9222"

mon: # Monitoring service (MON)
image: registry.frafos.net/abc/mon:10.1
container_name: mon
ports:
- "5000:5000" # SERVER_PORT
- "5044:5044" # LOGSTASH_BEATS_PORT
- "3042:3042" # UPLOAD_API_PORT
- "1873:1873" # UPLOAD_API_RSYNC_PORT
- "3000:3000" # UI_PORT
# environment:
#- CCM=ccm # (optional) CCM service name
#- ES=http://elastic:9200 # (optional) ES endpoint
#- REPORT_URL=http://127.0.0.1:5000/report # (optional) Report URL
#- ES_USER=monitor # (optional) ES user
#- ES_PASSWORD=password # (optional) ES password
#- ADVANCED_ALERTS=true # (optional) Enable Advanced Alerts
#- ADVANCED_ALERTS_URL=http://alerts:80 # (optional) Advanced Alerts URL
volumes:
- mon-data:/data # Persist MON data
networks:
- monitoring
tty: true # Enable TTY
stdin_open: true # Keep STDIN open

alerts:
image: registry.frafos.net/fril/alerts:10.1
container_name: alerts
restart: always
environment:
REDIS_HOST: "redis"
elasticConfigUrl: "http://elastic:9200/"
cap_add:
- AUDIT_CONTROL
- NET_RAW
- AUDIT_WRITE
ports:
- "80:80"
networks:
- monitoring
depends_on:
elastic:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test:
[
"CMD-SHELL",
"curl -fsS 'http://localhost:80/api/alertapi/help' || exit 1",
]
interval: 15s
timeout: 5s
retries: 20
start_period: 15s

redis:
image: registry.frafos.net/fril/redis-stack-server:latest
container_name: redis
restart: always
expose: ["6379"]
security_opt: ["no-new-privileges:true"]
cap_drop: [MKNOD, NET_RAW, AUDIT_WRITE]
networks:
- monitoring
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 20
start_period: 10s

rq2rest:
image: registry.frafos.net/fril/rq2rest:latest
container_name: rq2rest
command:
[
"-c",
"/etc/rq2rest.ini",
"-d",
"5",
"--redis_url=redis:6379",
"--http_url=http://alerts:80/ingestion/logstash/00000000-0000-0000-0000-000000000000",
]
tty: true
networks:
- monitoring
depends_on:
redis:
condition: service_healthy
alerts:
condition: service_healthy

volumes:
es-data:
es-snapshots:
mon-data-fresh-master:

networks:
monitoring:
driver: bridge
signaling:
driver: bridge
note

Docker is the recommended way for quick setup and easy updates.