Falcon Suite Server - Installation

Before installing, make sure you have:

  • Purchased a valid license.

  • Installed Docker

  • Installed PostgreSQL database and have the connection details handy. Supports v12 and higher

Starting Falcon Server - Using Docker

  1. Run the following command

  2. Replace FALCON_SERVER_VERSION with the latest version of the software. Latest version can be here. For example, if the latest version is v1.2.1, replace FALCON_SERVER_VERSION with 1.2.1

  3. Replace USERNAME,PASSWORD,HOST,PORT,DB_NAME with appropriate Database credentials and DB name

      SHELL> docker run -e DATABASE_URL=postgres://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME> -p80:80 public.ecr.aws/h0h7r7j4/falcon-suite:<FALCON_SERVER_VERSION>
  4. If there is any other process running on port 80, change the -p80:80 mapping. For example - to map to port 9000 change the -p80:80 to -p9000:80

  5. Once the container is up and running navigate to SERVER_IP in the browser. For example - http://localhost

Starting Falcon Server - Using Docker Compose

  1. Save the below docker compose script in a file. For example: falcon-server-docker-compose.yml

version: '3.8'
services:

  falcon-server:
    image: public.ecr.aws/h0h7r7j4/falcon-suite:<FALCON_SERVER_VERSION>
    ports:
      - '80:80'
      - '443:443'
    environment:
      - FALCON_MODE=all
      - DATABASE_URL=postgres://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME>
    healthcheck:
      test: curl --fail http://localhost/api/graphql/health || exit 1
      interval: 10s
      timeout: 20s
      retries: 3
  1. Replace the value of FALCON_SERVER_VERSION with a valid server version

  2. Replace USERNAME,PASSWORD,HOST,PORT,DB_NAME with appropriate Database credentials and DB name

  3. Run the below command to start the server

      SHELL> docker compose -f falcon-server-docker-compose.yml up
  4. NOTE: Use option -d to start the instance in background

  5. Once the container is up and running navigate to SERVER_IP in the browser. For example - http://localhost

Starting Falcon Instance - with SSL

  1. Create a new directory called conf and file called server_ssl within the conf directory

  2. Copy the below contents to server_ssl file

    upstream falcon-server {
      server localhost:8911 fail_timeout=0;
    }

    server {
        listen 80 default_server;
        server_name _;

          return 301 https://$host$request_uri;
    }

    server {

      access_log off;
      error_log /dev/stderr; # Redirect error logs to stderr

      listen 443 ssl default_server;
      listen [::]:443 ssl default_server;

      ssl_certificate    /var/falcon/ssl/tls.crt;
      ssl_certificate_key /var/falcon/ssl/tls.key;

      root /home/node/app/web/dist;

      index index.html index.htm index.nginx-debian.html;

      server_name falcon_suite;

      gzip on;
      gzip_min_length 1000;
      gzip_types application/json text/css application/javascript application/x-javascript;

      sendfile on;

      keepalive_timeout 65;

      location ~* \.(?:css|js)$ {
          expires 1h;
          add_header Pragma public;
          add_header Cache-Control "public";
          access_log off;
      }

      location ~* \.(?:ico|gif|jpe?g|png)$ {
          expires 7d;
          add_header Pragma public;
          add_header Cache-Control "public";
          access_log off;
      }

      location /api/graphql {
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://falcon-server;
      }

      location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        try_files $uri $uri/ /index.html;
      }

    }
  1. Make sure valid SSL certificates are copied to conf directory -

    1. tls.crt - CA signed certificated

    2. tls.key - Key used to generate the certificate

  2. Replace the value of FALCON_SERVER_VERSION with a valid server version

  3. Replace USERNAME,PASSWORD,HOST,PORT,DB_NAME with appropriate Database credentials and DB name

  4. Run the below command to start the server

      SHELL> docker run -e DATABASE_URL=postgres://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME> -v $(pwd)/conf/server_ssl:/etc/nginx/sites-enabled/default -v $(pwd)/conf/tls.crt:/var/falcon/ssl/tls.crt -v $(pwd)/conf/tls.key:/var/falcon/ssl/tls.key  -p80:80 public.ecr.aws/h0h7r7j4/falcon-suite:<FALCON_SERVER_VERSION>
  5. (Optional) Below is an example of running the same command using docker compose -

    1. Save the below docker compose script in a file. For example: falcon-server-docker-compose.yml

version: '3.8'
services:

  falcon-server:
    image: public.ecr.aws/h0h7r7j4/falcon-suite:<FALCON_SERVER_VERSION>
    volumes:
      - ./conf/server_ssl:/etc/nginx/sites-enabled/default
      - ./conf/tls.crt:/var/falcon/ssl/tls.crt
      - ./conf/tls.key:/var/falcon/ssl/tls.key
    ports:
      - '80:80'
      - '443:443'
    environment:
      - FALCON_MODE=all
      - DATABASE_URL=postgres://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME>
    healthcheck:
      test: curl --fail http://localhost/api/graphql/health || exit 1
      interval: 10s
      timeout: 20s
      retries: 3
  1. Run the below command to start the server

      SHELL> docker compose -f falcon-server-docker-compose.yml up
  2. NOTE: Use option -d to start the instance in background

Once the container is up and running navigate to SERVER_IP in the browser. For example - https://localhost

From AWS Debian CIS Hardened Image

  1. Navigate to EC2 → AMIs → select Falcon Suite CIS 1.x and click on Launch Instance from AMI ec2 launch instance

  2. Click on "Advanced details" and add the required configuration -

Key Description Required?

SERVER_VERSION

The latest version of Falcon Server can be found here

Yes

AGENT_VERSION

The latest version of Falcon Agent

Yes

PORT

Port on which the Falcon Web should be exposed. Example 80 for http protocol and 443 for https protocol

Yes

PROTOCOL

Possible values http or https

Yes

CLOUD_WATCH_LOGS_GROUP

Optional AWS Cloud Watch group name where the Falcon Suite logs should be redirected to. If this option is configured, make sure a new IAM role is created with AWS Service type, EC2 use case, CloudWatchAgentServerPolicy policy. Associate the same role to the EC2 Instance by navigating to Actions, Security, Modify IAM role

No

DB_URL

A valid Database url. Connection string example can be found below

Yes

  1. Example

#!/bin/bash

bash -c "cat > /etc/falcon-suite/config.env" <<EOF
SERVER_VERSION=1.3.3
AGENT_VERSION=1.0.8
PORT=443
PROTOCOL=https
DB_URL=postgres://dbuser:dbpass@dbhost:dbport/dbname
EOF

.

ec2 launch instance 2