Skip to main content

Pulse-IT/Automate-IT for Docker

Requirements To install Pulse-IT/Automate-IT for Docker, you will need:

  • A server running a Linux of your choice and with Docker/Docker compose installed
  • 32 Go Ram minimum. You may need more memory if you have several workers or schedulers running
  • 250 Go Hard Drive
  • Access to a shared storage (R/W).
  • Following ports open for inbound traffic:
    • 80 (only if you allow http access, not recommended): http
    • 443: https
    • 22: ssh
    • 5672: rabbitMQ from server to worker both ways
    • 5671: SSL rabbitMQ from server to worker both ways

Note The following documentation is applicable to both Pulse-IT and Automate-IT, as they share the same Docker setup.

Installation

Preparation steps

Docker installation on CentOS, Redhat, Amazon Linux

$> sudo yum install docker
$> sudo service docker start
$> sudo usermod -a -G docker $(whoami)
$> sudo chkconfig docker on
$> sudo yum install -y git
$> sudo reboot

Download docker-compose from Github

$> wget https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)
$> sudo mv docker-compose-$(uname -s)-$(uname -m) /usr/local/bin/docker-compose
$> sudo chmod -v +x /usr/local/bin/docker-compose

Docker installation on Rocky Linux

$> sudo dnf check-update
$> sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$> sudo dnf install docker-ce docker-ce-cli containerd.io
$> sudo systemctl start docker
$> sudo systemctl enable docker
$> sudo usermod -aG docker $(whoami)
$> exit
Exit And reconnect

Login into Embrace Docker repository

$ docker login -u embracecustomer 

pwd:

Install Pulse-IT/Automate-IT

Prepare installer

  • Copy the installer in a folder of your choice
  • Unzip the installer
unzip <installer>.zip
  • Enter into installer folder
  • add execute permission to embrace-app.sh
chmod +x embrace-app.sh

Install Pulse-IT/Automate-IT

$> ./embrace-app.sh     

Create a superuser for Pulse-IT/Automate-IT

$> ./embrace-app.sh --createsuperuser    

Follow instruction to create superuser

Access Pulse-IT/Automate-IT from your browser

To access the Pulse-IT/Automate-IT Web UI, open a web browser and navigate to:

http://<your-server-ip>:80

Import your Pulse-IT/Automate-IT licence

  • Go to Administrator > License menu
  • Import your license by clicking the "Import License" button

The embrace-app.sh helper script

Your installation folder contain a helper script. Without any option, the script will execute docker-compose up command

Options available:

=============================================================
Embrace Utility Script
=============================================================
Usage ./embrace-app.sh [options]

Options:
--help, -h display this usage message
--restart restart Embrace application
--createsuperuser create super user
--down stop and remove application containers
--upgrade upgrade existing installation
--status get containers status
--use-external-db use external database (Database won't be created and managed by this script)
--use-external-services use external database, RabbitMQ and Redis (Database, RabbitMQ and Redis won't be created and managed by this script)
--migrate-to-ssl enable SSL encryption on nginx. Your SSL certificate and key should be specified at conf/nginx/nginx-ssl.conf and specified to be mounted on compose-local.yml
--default-shared-storage <mountPath> specify a storage to mount when starting app. This option is required for no input install.
--mount-volume <mountPath> mount a volume shared between the host and containers.
--connector-name <connector_name> specify a connector name to create when mounting a volume
--skip-create-connector do not ask for a connector name to create when mounting a volume.

Examples:
Install the app without requesting user input for default shared storage
./embrace-app.sh --default-shared-storage /mnt/sharing

Mount a storage at /mnt/sharing for shared usage between the host and app container:
./embrace-app.sh --mount-volume /mnt/sharing

Mount storage at /mnt/sharing and create a file connector with a name:
./embrace-app.sh --mount-volume /mnt/sharing --connector-name shared_storage

Sample usage

$> ./embrace-app.sh
Note: docker version: 26.0.1

Note: Docker Compose version v2.26.1

Note: App version: 4.0-2140

[Step 0]: Checking running embrace installation...
✔ No running embrace installation found

[Step 1]: Checking database volume
✔ embrace-postgres-volume: ok

[Step 2]: Checking network
Error response from daemon: network with name embrace-internal already exists
✔ : ok

[Step 3]: Starting Embrace application...
[+] Running 12/12
✔ Container pulse-it-40-2140-04301630-docker-postgres-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-logrotate-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-redis-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-rabbitmq-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-pre_initialize_app-1 Exited 0.1s
✔ Container pulse-it-40-2140-04301630-docker-migration_app-1 Exited 0.1s
✔ Container pulse-it-40-2140-04301630-docker-app-1 Healthy 0.0s
✔ Container pulse-it-40-2140-04301630-docker-celery-beat-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-remote-debugger-bridge-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-celery-2 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-celery-1 Started 0.1s

[Step 4]: Ensure default storage exists
Starting app...
A shared storage location is required between the server and worker.
Enter the path to the shared storage:

A shared storage location must be accessible to both the server and the worker. The utility script prompts you to provide a shared storage path. Please input a valid shared storage path and press enter to confirm. Upon validation, the utility script proceeds to initiate the application:

Enter the path to the shared storage: /mnt/sharing
Mounting volume /mnt/sharing
System shared storage /mnt/sharing successfully mounted.
Connector with name system_media_selector successfully created
[+] Stopping 2/2
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Stopped 10.5s
✔ Container pulse-it-40-2140-04301630-docker-app-1 Stopped 10.2s
Going to remove pulse-it-40-2140-04301630-docker-nginx-1, pulse-it-40-2140-04301630-docker-app-1
[+] Removing 2/0
✔ Container pulse-it-40-2140-04301630-docker-app-1 Removed 0.0s
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Removed 0.1s
[+] Running 2/2
✔ Container pulse-it-40-2140-04301630-docker-app-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Started 0.0s
✔ ---- Application started successfully.----

Note:
The pre_initialize_app and migration_app services are currently in an existing state. They execute an initialization task and then terminate. These services are launched at the beginning of the application and exit when completing their tasks.

The compose-local.yml file

# Use this file to add custom configuration for services
# Each configuration in this file will override docker-compose.yml configurations
services:
app:
volumes: []

File Connectors and volume mapping

Let say you have a host mounted shared point on /mnt/sharing and that you want to have it available in Pulse-IT

Run the utility script with option --mount-volume

$> ./embrace-app.sh --mount-volume /mnt/sharing

The utility will prompt you to indicate whether you wish to create a file connector linked to this storage. Upon confirmation, you will be required to input a name for the file connector.

$> ./embrace-app.sh --mount-volume /mnt/sharing

Mounting volumes
Starting app...
Volume already mounted at /mnt/sharing
Define a connector name for /mnt/sharing: sharing
Connector with name sharing successfully created
[+] Stopping 1/1
✔ Container pulse-it-40-2133-04221653-docker-app-1 Stopped 10.4s
Going to remove pulse-it-40-2133-04221653-docker-app-1
[+] Removing 1/0
✔ Container pulse-it-40-2133-04221653-docker-app-1 Removed 0.0s
[+] Running 12/12
✔ Container pulse-it-40-2133-04221653-docker-rabbitmq-1 Healthy 0.0s
✔ Container pulse-it-40-2133-04221653-docker-redis-1 Healthy 0.0s
✔ Container pulse-it-40-2133-04221653-docker-postgres-1 Healthy 0.0s
✔ Container pulse-it-40-2133-04221653-docker-migration_app-1 Exited 0.0s
✔ Container pulse-it-40-2133-04221653-docker-logrotate-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-pre_initialize_app-1 Exited 0.0s
✔ Container pulse-it-40-2133-04221653-docker-app-1 H... 0.2s
✔ Container pulse-it-40-2133-04221653-docker-nginx-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-celery-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-celery-2 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-remote-debugger-bridge-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-celery-beat-1 Running 0.0s

Your directory will be accessible within the container at /mnt/sharing, and a new file connector named "sharing" will be generated.

To specify a file connector name as an option in the utility script, use the following command:

$> ./embrace-app.sh --mount-volume /mnt/sharing --connector-name sharing

The utility script will generate a file connector automatically, without requiring input for the connector name.

To mount a volume without creating a connector, simply utilize the --skip-create-connector option.

$> ./embrace-app.sh --mount-volume /mnt/sharing --skip-create-connector

Upgrading a Pulse-IT server

  • copy the installer to your server
  • run the embrace-app.sh script
./embrace-app.sh --upgrade
  • Enjoy

Installing Pulse-IT using external database such as RDS

Require PostgreSQL 16.x external database

  • copy the installer to your server
  • edit .local.env
  • specify database host and credentials
DATABASE_HOST=postgres
DATABASE_PORT=5432
DATABASE_NAME=ait_factory
DATABASE_USER=ait
DATABASE_PASSWORD=
DATABASE_AWS_SECRET=
  • run the embrace-app.sh script using the --external-db option

Installing Pulse-IT using external services configuration

(ex: using RDS, AmazonMQ and AWS Redis )

Require

  • PostgreSQL 16.x external database (ex: PostgreSQL RDS database)

  • RabbitMQ 3.12.x (ex: AmazonMQ)

  • Redis 6.2.x (ex: AWS Elasticache for Redis)

Beware: AWS Elasticache for Redis with cluster mode enabled is not supported

  • copy the installer to your server
  • edit .local.env
  • specify database host and credentials
DATABASE_HOST=postgres
DATABASE_PORT=5432
DATABASE_NAME=ait_factory
DATABASE_USER=ait
DATABASE_PASSWORD=
DATABASE_AWS_SECRET=
  • specify Redis host and credentials
# Define BROKER_URL OR define exploded configuration BROKER_xx
BROKER_URL=redis://localhost:6379/0
# OR
BROKER_HOST = localhost
BROKER_PORT = 5672
  • edit specify redis host
CHANNEL_LAYER_HOST=redis
CHANNEL_LAYER_PORT=6379
  • run the embrace-app.sh script using the --use-external-services option

Configuring Pulse-IT for SSL

1.Update the .local.env File

Add the Pulse-IT host address to the .local.env file:

CSRF_TRUSTED_ORIGINS="https://pulse-it.example.com"

2.Copy your own SSL certificate and key (optional):

You can use your own SSL certificate and key, instead of the self-signed certificates provided with Pulse-IT/Automate-IT.

To proceed, copy your SSL certificate and key files into the conf/certs directory, naming them factory-cert.pem and factory-key.pem, respectively.

3.Run the embrace-app.sh script using the --migrate-to-ssl option

$> ./embrace-app.sh --migrate-to-ssl