How to Install Exalate for Jira on Docker?

    Check out Docker documentation for details on how to install Docker.

    Steps to Install Exalate for Jira Cloud on Docker

    1. Create or download the docker-compose.yml

    The example below  docker-compose.yml file can be used to install Exalate for Jcloudnode.

    1. Create a directory to hold the docker-compose file: 

      cd ~
      mkdir exalate-jcloudnode
    2. Create or download a docker-compose.yml file

      Note: Click docker-compose.yml to download the file.


      The file should contain the following information:

      Note: We recommend using the latest version of Exalate for Jira Cloud. It can be found in the Release History.

      Enter the latest version in the image tag. For example, in image: idalko/jcloudnode:5.3.3, the version of Exalate for Jira Cloud is 5.3.3 .

      version: '2' 
      services:
        database:
          restart: unless-stopped
          image: postgres:9.6
          volumes:
            - ./persist/db:/var/lib/postgresql/data
            - ./createdb.sh:/docker-entrypoint-initdb.d/init-user-db.sh
          environment:
            # adapt the default passwords
            - DB_NAME=jcloudnode
            - DB_USER=idalko
            - DB_PASS=idalko
            - POSTGRES_PASSWORD=changeme
          networks:
            - database
       
        jcloudnode:
          restart: unless-stopped
       
          # use the latest version https://hub.docker.com/r/idalko/jcloudnode
          image: idalko/jcloudnode:5.3.3
          depends_on:
            - database #wait for postgres to be started, not for ready
          volumes:
            - ./persist/home:/opt/jcloudnode/data
          environment:
            # Add your enviroment settings here, check documentation for details
            - JCLOUDNODE_PG_DB=jcloudnode?gssEncMode=disable
            - JCLOUDNODE_PG_HOST=database
            - JCLOUDNODE_PG_PWD=idalko
            - JCLOUDNODE_PG_USER=idalko
            - JCLOUDNODE_PORT=9002
       
       
      
            # When you deploy Exalate onto a server, you configure a DNS rule such that 
            #whenever people navigate to foo.com, they reach your server's Exalate. 
            #You set up SSL so that https://foo.com leads to your Exalate on your server.
            #Now you need to set environment variable NODE_SELF_URL=https://foo.com 
            #for your Exalate docker container.
       
            # Use following variables to link the node with nginx proxy
            # Replace francis-jcl.exalate.biz with the appropriate FQDN
            - LETSENCRYPT_HOST=francis-jcl.exalate.biz
            - VIRTUAL_HOST=francis-jcl.exalate.biz
            - VIRTUAL_PORT=9002
            - NODE_SELF_URL=https://foo.com
      
      
       
          networks:
            - database
            - proxy
       
       
      networks:
        database:
          driver: bridge
        default:
          driver: bridge
        proxy:
          external:
              name: proxy

    2. Ensure that a correct database is setup using a createdb.sh

    Create or download a createdb.sh file (referenced from docker-compose.yml):

    Note: Click createdb.sh to download the file.

    The file should contain the following information:

    #!/bin/bash
      
    TEST=`psql -U postgres <<-EOSQL
       SELECT 1 FROM pg_database WHERE datname='$DB_NAME';
    EOSQL`
      
    echo "******CREATING DOCKER DATABASE******"
    if [[ $TEST == "1" ]]; then
        # database exists
        # $? is 0
        exit 0
    else
    psql -U postgres <<-EOSQL
       CREATE ROLE $DB_USER WITH LOGIN ENCRYPTED PASSWORD '${DB_PASS}' SUPERUSER;
    EOSQL
      
    psql -U postgres <<-EOSQL
       CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UNICODE' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0;
    EOSQL
      
    psql -U postgres <<-EOSQL
       GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;
    EOSQL
    fi
      
    echo ""
    echo "******DOCKER DATABASE CREATED******"

    3. Set Environment Variables if necessary

    Below you can find the environment variables used for the app container. 

     Full list of environment variables
    JCLOUDNODE_PG_DBJCLOUDNODE_PG_DB=exalatetells Exalate what is the Postgres database name for the Exalate application
    JCLOUDNODE_PG_HOSTJCLOUDNODE_PG_HOST=databasetells Exalate where is the Postgres database to connect is hosted
    JCLOUDNODE_PG_PWDJCLOUDENODE_PG_PWD=secrettells the Exalate application what is the Postgres database user's password for the Exalate application to perform queries with
    JCLOUDNODE_PG_USERJCLOUDNODE_PG_USER=exalatetells the Exalate application what is the Postgres database user name for the Exalate application to perform queries with
    SMTP_FROMSMTP_FROM=my.name@gmail.comEmail that is used to send error notifications
    SMTP_HOST_NAMESMTP_HOST_NAME=smtp.gmail.comHost name of the SMTP server used to send error notifications
    SMTP_LOGINSMTP_LOGIN=my.nameLogin to the SMTP service
    SMTP_PASSSMTP_PASS=secret

    Password to the SMTP service

    SMTP_PORTSMTP_PORT=587Port (also check the TLS setting)
    SMTP_TLSSMTP_TLS=trueCan be set to false, but then the SMTP_PORT (question) should be set to the port, that accepts non-SSL and non-TLS connections

    Using a Proxy for Outgoing Connections

    Whenever the Exalate node needs to use a proxy to establish outgoing connections, use the following parameters in the environment (naming should be obvious):

    • PROXY_HTTP_HOST
    • PROXY_HTTP_PORT
    • PROXY_HTTPS_HOST
    • PROXY_HTTPS_PORT

    4. Start the Application

    cd ~
    mkdir exalate-jcloudnode

    5. Register the Node

    To be able to fully use the functionality of your new node, it needs to be registered on the mapper.  This mapper acts as a DNS server mapping tracker URLs to node URLs.

    This is currently a manual operation to be requested through the support portal (here).

    Please be ready to provide the following:

    • Exalate node URL 
    • Jira Cloud instance URL

    Our support will invite you for a video call, as connecting the Jira Cloud instance with the on-premise requires a couple of steps.  

    1. Install the Exalate application
    2. Uninstall the Exalate application
    3. Our support will do a couple of updates on the backend
    4. Install the Exalate application again

    System Administration Tasks

    With the Exalate for Jira Cloud is running  on your environment,you will also be required to do the mandatory system administration tasks

    • Backup (& restore tests)
    • Disaster recovery procedure
    • Upgrades whenever needed
      Please note that an Exalate version has a lifespan of 2 years. This is to ensure backward compatibility over the whole platform.
      There are regular new versions deployed which contain bug fixes, security-related improvements, and even new features.
      Watch the status.exalate.com Statuspage for any new versions

    Troubleshooting 

    Issues during the installation of the Exalate for Jira Cloud

    If you have issues during the installation of the Exalate app for Salesforce you can find logs describing possible problems inside /tmp.

    The name for the file is generated randomly and automatically by the OS, but you can find the file by the creation date.

    Issues while running the Exalate server for Jira Cloud

    Logs will be generated under the directory: /opt/jcloudnode/data/logs (in the docker container)

    Refer to these logs to get more information about possible problems and contact our support team if you need any assistance.

    Support

    Check our Support options.