Perseo Context-Aware CEP Admin Guide

Deployment of Perseo

Perseo can be built and installed directly from sources, but we strongly recommend deploying it using Docker and Docker Compose.

If you need to install Docker, refer to the Docker Installation web page. Then, checkout the docker-compose install documentation to install it if you don't already have.

You can check if it works by running the following shell commands:

# Docker
docker --version

# docker-compose
docker-compose --version

Just in case, if you don't want Docker, take into account that Perseo CEP is a standard Node.js application and does not require more dependencies than the Node.js interpreter and the NPM package utility.

A MongoDB database should be working and accesible in order for Perseo to be started.

Using docker-compose

If you want to quickly deploy all the Perseo CEP components to start experimenting ASAP, do the following:

version: '3.4'
services:
    perseo-mongo:
        image: mongo:4.2
        volumes:
            - ./mongodata:/data/db
        networks:
            - perseo
        deploy:
            replicas: 1
            restart_policy:
                condition: on-failure
    perseo-core:
        image: fiware/perseo-core
        environment:
            - PERSEO_FE_URL=http://perseo-fe:9090
            - MAX_AGE=6000
        networks:
            - perseo
        depends_on:
            - perseo-mongo
        deploy:
            replicas: 1
            restart_policy:
                condition: on-failure
    perseo-fe:
        image: fiware/perseo
        networks:
            perseo:
            main:
        ports:
            - 9090:9090
        depends_on:
            - perseo-core
        environment:
            - PERSEO_MONGO_ENDPOINT=perseo-mongo
            - PERSEO_CORE_URL=http://perseo-core:8080
            - PERSEO_LOG_LEVEL=debug
            - PERSEO_ORION_URL=http://orion:1026/
        deploy:
            replicas: 1
            restart_policy:
                condition: on-failure

networks:
    perseo:
    main:
  • Then start it up:
# same path were you have placed the docker-compose.yml
docker-compose up -d
  • After a while, check that all containers are running (up):
docker ps
  • Now you're ready to use Perseo as instructed in the User & Programmer Manual.

  • When you are done experimenting, remember to teardown the compose.

docker-compose down -v

Reuse External Orion Instance

Previous docker-compose assumes you already have Orion running somewhere else and you just want to deploy Perseo. However, you can easily add the definition of the orion: and orion-mongo: services in the docker-compose.yml file. You will also need to change the references to them in the environment: section of the perseo-fe service.

Service Environment Variables

Perseo service can be configured using the following environment variables. Keep in mind that perseo-fe and perseo-core services need to be configured with different variables. The variables marked with ✅ are mandatory.

You can see an example of using some of the environment variables in this docker-compose.yml

perseo-fe

Environment variable Default Value Description
PERSEO_ENDPOINT_HOST Host where the CEP will listen to.
PERSEO_ENDPOINT_PORT Port where the CEP will listen to.
PERSEO_MONGO_ENDPOINT Endpoint (host[:port]) list for Mongo DB.
PERSEO_MONGO_REPLICASET ReplicaSet name for Mongo DB.
PERSEO_MONGO_AUTH_SOURCE The database name associated with the user's credentials for Mongo DB. More info here.
PERSEO_MONGO_USER User for Mongo DB.
PERSEO_MONGO_PASSWORD Password for Mongo DB.
PERSEO_CORE_URL URL where Perseo Core is listening (e.g: http://host_or_ip:port).
PERSEO_NEXT_URL URL where Perseo Core replicated node is listening.
PERSEO_ORION_URL URL of the Orion Context Broker.
PERSEO_LOG_LEVEL Log level.
PERSEO_SMTP_HOST Host of the SMTP server
PERSEO_SMTP_PORT Port of the SMTP server
PERSEO_SMTP_VERIFY_CA false true if self-signed or invalid TLS certificate should be rejected
PERSEO_SMTP_SECURE false true if SSL should be used with the SMTP server
PERSEO_SMTP_AUTH_USER Authentication data, the username
PERSEO_SMTP_AUTH_PASS Authentication data, the user password
PERSEO_NOTICES_PATH '/notices' Path for incoming notices
PERSEO_RULES_PATH '/rules' Path for incoming rules
  • For legacy SMS and SMPP support, please refer to this file.

perseo-core

Variable Default Value Description
PERSEO_FE_URL URL where perseo-fe listens to.
MAX_AGE 60000 Expiration time for dangling rules in milliseconds.