Applications AWS

Live Helper Chat on AWS User Guide

| Product: Live Helper Chat on AWS

Overview

This image runs Live Helper Chat behind nginx with PHP FPM 8.3 and OPcache enabled, with the pdo_mysql, mbstring, curl, gd, intl, xml, zip and bcmath extensions that Live Helper Chat needs. A bundled MariaDB provides the database, on the same instance and bound to the loopback interface only. Live Helper Chat's own cron runs every minute through a systemd timer to send offline message mail, time out stale online sessions and run scheduled bots.

The image ships with Live Helper Chat already installed and its database schema in place, so the first request lands directly on the operator sign-in page with no setup wizard to work through. A fresh operator password, unique to that instance, is generated on the first boot of every deployed instance, and the internal MariaDB maintenance credential is re-minted per instance at the same time. Two instances launched from the same Amazon Machine Image never share credentials. The operator password is written to /root/live-helper-chat-credentials.txt with mode 0600 so that only the root user can read it.

Live Helper Chat detects the request host dynamically, so the operator panel and the visitor chat widget work at whatever IP address or domain you reach the instance on, with no base URL to configure first. Realtime chat works out of the box using the built in AJAX polling; the optional Node.js socket server for very high chat volumes is an opt in upgrade described later in this guide.

Prerequisites

Before you deploy this image you need:

  • An Amazon Web Services account where you can launch EC2 instances
  • IAM permissions to launch instances, create security groups, and subscribe to AWS Marketplace products
  • An EC2 key pair in the target Region for SSH access to the instance
  • A VPC and subnet in the target Region, with a security group allowing inbound port 22 from your management network and inbound ports 80 and 443 from the networks your operators and website visitors will reach Live Helper Chat on
  • The AWS CLI (version 2) installed locally if you plan to deploy from the command line

Step 1: Launch the Instance from the AWS Marketplace

Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images choose AWS Marketplace AMIs and search for Live Helper Chat. Select the cloudimg listing and choose Select, then Continue on the subscription summary.

Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login). Under Network settings select your VPC and subnet, and either create or select a security group that allows inbound port 22 from your management network and inbound ports 80 and 443 from the networks your operators and visitors use. Leave the root volume at the default size or larger.

Select Launch instance. First boot initialisation takes a few seconds after the instance state becomes Running and the status checks pass.

Step 2: Launch the Instance from the AWS CLI

The following block launches an instance from the cloudimg Live Helper Chat Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing, <key-name> with your EC2 key pair name, <subnet-id> with your subnet ID, and <security-group-id> with a security group that opens ports 22, 80, and 443 as described above.

aws ec2 run-instances \
  --image-id <ami-id> \
  --instance-type m5.large \
  --key-name <key-name> \
  --subnet-id <subnet-id> \
  --security-group-ids <security-group-id> \
  --block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":30,"VolumeType":"gp3"}}]' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=live-helper-chat-01}]'

The command prints a JSON document on success. Note the instance ID, then retrieve its public address once it is running with aws ec2 describe-instances --instance-ids <instance-id> --query "Reservations[].Instances[].PublicIpAddress" --output text.

Step 3: Connect and Retrieve Initial Credentials

Connect over SSH with the key pair you selected and the public IP address from step 2. The SSH login user depends on the operating system of the AMI variant you launched:

AMI variant SSH login user
Live Helper Chat 4.87v on Ubuntu 24.04 ubuntu

Connect with ssh -i <path-to-key.pem> ubuntu@<instance-public-ip>, substituting your key path and the instance's public IP address.

The per instance operator password is written to a root only file on first boot. Read it with:

sudo cat /root/live-helper-chat-credentials.txt

The file lists the operator panel URL, the operator username (admin) and password. Store the operator password in your password manager and treat this file as sensitive.

Step 4: Verify the Stack is Running

Live Helper Chat is served by three systemd units. Confirm they are active:

systemctl is-active nginx php8.3-fpm mariadb

Each line returns active. You can confirm nginx is answering with its unauthenticated health endpoint, which returns ok:

curl -s http://127.0.0.1/healthz

The operator panel is served by the live PHP application. This returns an HTTP status in the 200 or 302 range once the app is up:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/index.php/site_admin

Live Helper Chat's cron, which sends offline message mail and times out stale sessions, runs every minute through a systemd timer. Confirm it is enabled (it starts automatically shortly after boot):

systemctl is-enabled live-helper-chat-cron.timer

Step 5: First Login to the Operator Panel

Browse to http://<instance-public-ip>/index.php/site_admin to reach the operator panel sign-in page. Sign in with the username admin and the password from /root/live-helper-chat-credentials.txt.

Live Helper Chat operator sign-in

After signing in you land on the operator dashboard, which shows online operators, online visitors, and the group, pending, active and bot chat queues. The left navigation gives you Dashboard, Chats and Mails, Settings and Modules.

Live Helper Chat operator dashboard

Step 6: Change the Operator Password and Set Your Details

While the first-boot password is unique to your instance, you should still set your own. In the operator panel, open your operator profile from the top right, set your name and a personal email address, and change the password to one you control. Live Helper Chat stores operator passwords as bcrypt hashes.

Step 7: Add the Visitor Chat Widget to Your Website

The point of Live Helper Chat is the visitor chat widget on your own website. In the operator panel open Settings, then the embed or instructions section, and copy the generated widget code. Paste it into the HTML of your site, just before the closing </body> tag, on every page where you want the chat button to appear. Visitors then see the chat widget and can start a conversation, which arrives in the operator panel.

Live Helper Chat visitor chat widget

Step 8: Create Departments, Operators and Canned Messages

Under Settings you can create departments to route chats to the right team, add more operators and assign them to departments, and write canned messages for fast, consistent replies. Operators are managed under System configuration → Users, where you add accounts, set departments, permissions and languages.

Live Helper Chat operator management

Step 9: Set the Production Site Address

When you front the instance with your own domain, set the production site address in Settings → Configuration so that email links and invitations point at your domain. The operator panel and the visitor widget follow the request host automatically, so this only affects generated links.

Step 10: Optional High Scale Realtime Server

The image serves realtime chat with Live Helper Chat's built in AJAX polling, which is reliable for typical chat volumes and needs no extra services. For very high volumes (of the order of tens of thousands of chats a day) Live Helper Chat offers an optional Node.js socket server. Installing it is an opt in upgrade — follow the "Node.js helper" section of the Live Helper Chat documentation; it is not required for the appliance to work.

Step 11: Enable HTTPS with Let's Encrypt

For production use, point a domain name at the instance's public IP address and enable HTTPS. Install certbot and obtain a certificate:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

Certbot edits the nginx site to serve HTTPS and sets up automatic renewal. After it completes, browse to https://your-domain.example.com/index.php/site_admin to reach the operator panel over TLS.

Step 12: Backups and Maintenance

The Live Helper Chat database lives in MariaDB on the instance. Take regular logical backups with mysqldump:

sudo mysqldump --protocol=socket livehelperchat > /root/livehelperchat-backup.sql

For a full point in time backup, snapshot the instance's EBS volume from the AWS console or CLI. Keep the operating system patched with sudo apt-get update && sudo apt-get upgrade, and manage the services with systemctl (nginx, php8.3-fpm, mariadb).

Step 13: Storage Layout

Live Helper Chat's application code and writable state live under /var/www/livehelperchat and the MariaDB data directory is at /var/lib/mysql, both on the instance's root EBS volume, which is captured into the image so every instance boots a ready to use chat platform. Resize the root volume from the EC2 console if you need more space, then grow the filesystem.

Screenshots

The operator sign-in page:

Live Helper Chat operator sign-in

The operator dashboard:

Live Helper Chat operator dashboard

The visitor chat widget:

Live Helper Chat visitor chat widget

Operator management:

Live Helper Chat operator management

Support

This image is provided by cloudimg with 24/7 technical support by email and chat. We help with Live Helper Chat deployment, upgrades, the visitor chat widget embed, departments and routing, canned messages and chat bots, the optional high scale Node.js realtime server, email configuration and database administration. All product and company names are trademarks or registered trademarks of their respective holders; use of them does not imply any affiliation with or endorsement by them.