Skip to content

Docker repository with instructions how to setup standalone app with nodejs, cobrowsing, php-resque, cronjobs services.

Notifications You must be signed in to change notification settings

LiveHelperChat/docker-standalone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instructions

This is dockerized version of Live Helper Chat. It includes these images

  • web - nginx service
  • php - php-fpm service
  • cobrowse - cobrowsing running NodeJS service
  • php-cronjob - cronjobs running service
  • php-resque - php-resque worker running service
  • nodejshelper - NodeJS Helper NodeJS running service
  • redis - Redis service
  • db - Database service

Docker instructions

  • Checkout the repository

  • Run cd docker-standalone

  • Copy .env.default to .env

  • Edit .env file and change LHC_SECRET_HASH to any random string

  • Database default settings if you don't change those in .env file.

    • Host - db
    • Database name - lhc
    • Database username - lhc
    • Database password - lhc
  • For version with NodeJS plugin (Recommended)

    • Run install-nodejs.sh this will checkout Live Helper Chat and required extensions
    • Optional. Run docker compose -f docker-compose-nodejs.yml build --no-cache to build from scratch. You might need it you are running on linux/arm64 as I only provide linux/amd64 architecture
    • Run docker compose -f docker-compose-nodejs.yml pull && docker-compose -f docker-compose-nodejs.yml up to use already existingimages
  • For standard version without NodeJS plugin run

    • Run install.sh this will checkout Live Helper Chat and required extensions
    • Optional. Run docker compose -f docker-compose-standard.yml build --no-cache to build from scratch. Build is optional. You might need it you are running on linux/arm64 as I only provide linux/amd64 architecture
    • Run docker compose -f docker-compose-standard.yml pull && docker-compose -f docker-compose-standard.yml up
  • You will need to install composer dependencies:

    1. Open a shell in the docker container
      docker exec -it --workdir /code docker-standalone-php-1 /bin/bash
    2. Visit https://getcomposer.org/download/ and run the commands to get composer.phar
    3. Run this to actually install the dependencies:
      php composer.phar update
      php composer.phar install
  • Edit docker-standalone/lhc-php-resque/lhcphpresque/settings/settings.ini.php and put proper site_address domain value. php-resque does not know what domain it's running

  • Make sure the cache, settings and var folders have the correct permissions:

docker exec -it docker-standalone-web-1 chown -R www-data:www-data /code/cache
docker exec -it docker-standalone-web-1 chown -R www-data:www-data /code/settings
docker exec -it docker-standalone-web-1 chown -R www-data:www-data /code/var
  • Navigate to localhost:8081 and follow install instructions.
    • db username and password: Check .env file
    • db host: db.
    • db port: 3306
  • If you want to run docker as a service append -d to docker commands. docker-compose -f docker-compose-nodejs.yml up -d

How to listen on standard 80 port?

Edit .env file and set LHC_PUBLIC_PORT and LHC_NODE_JS_PORT port to 80

How to setup HTTPS?

That's up to you. You can have in host machine runing nginx and just proxy request or tweak images/docker files I provided. You should play around with web service.

E.g to the ones who are too lazy too use google :D

Tip commands

Generate SSL certificate under docker folder for demo.livehelperchat.com domain. Change paths in this command. You have to be pointed domain to your sever

certbot certonly --config-dir /opt/lhc/docker-standalone/conf/nginx/ssl --webroot --webroot-path /opt/lhc/docker-standalone/livehelperchat/lhc_web -d demo.livehelperchat.com

This is how cronjob can look like. Make sure you put your domain and correct docker-standalone-web-1 name.

0 0 * * * certbot certonly --keep-until-expiring --config-dir /opt/lhc/docker-standalone/conf/nginx/ssl --webroot --webroot-path /opt/lhc/docker-standalone/livehelperchat/lhc_web -d demo.livehelperchat.com --post-hook "docker restart docker-standalone-web-1" > /dev/null 2>&1

If you are migrating server and want to setup fresh certbot, you can just use this command

certbot certonly --manual --preferred-challenges http --config-dir /opt/lhc/docker-standalone/conf/nginx/ssl -d demo.livehelperchat.com

web service part will have to look like

  web:
    image: nginx:latest
    env_file: .env
    ports:
      - "${LHC_PUBLIC_PORT}:80"
      - "443:443"
    volumes:
      - ./livehelperchat/lhc_web:/code
      - ./conf/nginx/site-ssl.conf:/etc/nginx/conf.d/default.conf
      - ./conf/nginx/mime.types:/etc/nginx/mime.types
      - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./conf/nginx/ssl/live/demo.livehelperchat.com/fullchain.pem:/etc/nginx/ssl/demo.livehelperchat.com/fullchain.pem
      - ./conf/nginx/ssl/live/demo.livehelperchat.com/privkey.pem:/etc/nginx/ssl/demo.livehelperchat.com/privkey.pem
    depends_on:
      - db
      - php
      - php-cronjob
    networks:
      - code-network
    restart: always

Modify /conf/nginx/site-ssl.conf and change where you see demo.livehelperchat.com to your domain.

Rebuild docker image after a changes.

cd /opt/lhc/docker-standalone && docker compose -f docker-compose-nodejs.yml build --no-cache

Remember to automated SSL issuing workflow :)

cd /opt/lhc/docker-standalone && docker compose -f docker-compose-nodejs.yml down
cd /opt/lhc/docker-standalone && docker compose -f docker-compose-nodejs.yml up -d

My mails are not sending?

You have to edit back office mail settings and use SMTP.

How to update?

# Update docker images
cd docker-standalone && git pull origin master
# If there is any changes you can build your containers
docker compose -f docker-compose-nodejs.yml build --no-cache

# Or just pull new ones
docker-compose -f docker-compose-nodejs.yml pull

# I would recommend also just restart composer containers
docker compose -f docker-compose-nodejs.yml down
docker compose -f docker-compose-nodejs.yml up
# OR start docker as service
docker compose -f docker-compose-nodejs.yml up -d

# All these commands are executed from docker-standalone folder
cd livehelperchat && git pull origin master
cd lhc-php-resque && git pull origin master
cd NodeJS-Helper && git pull origin master

# Login to php-fpm container and execute
docker exec -it docker-standalone-php-1 /bin/bash
# Execute in container. You might need to download composer.phar file
cd /code && php composer.phar update
cd /code && php composer.phar install
cd /code && php cron.php -s site_admin -c cron/util/update_database -p local
cd /code && php cron.php -s site_admin -c cron/util/clear_cache

After install todo

  • Go to Settings -> Live help confgiuration -> Chat configuration -> Screen sharing and
    • Check NodeJs support enabled
    • In socket.io path, optional enter /wsnodejs/socket.io
  • Go to Settings -> Live help confgiuration -> Chat configuration -> Online tracking and
    • Check Cleanup should be done only using cronjob.
    • Check Footprint updates should be processed in the background. Make sure you are running workflow background cronjob.
  • Go to Settings -> Live help confgiuration -> Chat configuration -> Misc and
    • Check Disable live auto assign
  • Go to Settings -> Live help confgiuration -> Chat configuration -> Workflow and
    • Check Should cronjob run departments transfer workflow, even if user leaves a chat
  • Set 'site_address' => 'https://chat.example.com' in settings/settings.ini.php to your install installation path. It has to be location where index.php is located.
  • Set site_address in docker-standalone/lhc-php-resque/lhcphpresque/settings/settings.ini.php
  • After install make sure settings/settings.ini.php file looks like this if you are using php-resque and nodejs
  • array (
    0 => 'lhcphpresque',
    1 => 'nodejshelper',
    ),```
    
    

How to run everything under proxy with HTTPS support?

server {
    listen         *:80; # This line should be gone once SSL is setup
    server_name    server_name chat.example.com; # Change to your domain

    location / {
	      proxy_set_header X-Real-IP $remote_addr;
	      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	      proxy_set_header Host $http_host;
	      proxy_set_header X-NginX-Proxy true;
	      # Uncomment below two lines if you are running under https. So LHC will pickup https correctly
	      # proxy_set_header X-Forwarded-Proto https;
	      # proxy_set_header X-Forwarded-Ssl on;

	      proxy_pass http://localhost:8081/; # Change port to your docker public port
	      proxy_redirect off;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
    }
    
    # Those will appear automaticlaly once you setup SSL using certbot
    # listen 443 ssl; # managed by Certbot
    # ssl_certificate /etc/letsencrypt/live/chat.example.com/fullchain.pem; # managed by Certbot
    # ssl_certificate_key /etc/letsencrypt/live/chat.example.com/privkey.pem; # managed by Certbot
    # include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    # ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

About

Docker repository with instructions how to setup standalone app with nodejs, cobrowsing, php-resque, cronjobs services.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5