Qloapps with Docker Compose and Traefik

This article will explore how to deploy QloApps using Docker Compose and Traefik, ensuring your site is accessible via SSL. This setup…

Qloapps with Docker Compose and Traefik

This article will explore how to deploy QloApps using Docker Compose and Traefik, ensuring your site is accessible via SSL. This setup assumes you already have Traefik installed and configured on ports 80 and 443, with the networks web and websecure.

QloApps is an open-source hotel management system. Give it a try!

Prerequisites

  1. Docker and Docker Compose are installed.
  2. Traefik is installed and running on ports 80 and 443.
  3. The web and websecure networks set up for Traefik.
  4. A domain name pointing to your server (e.g., qloapps.<yourdomain>.com).

Step-by-Step Guide

1. Create the Docker Compose File

First, let’s create a docker-compose.yml file that defines our QloApps, MariaDB, and PhpMyAdmin services:

version: '3' 
 
services: 
  mariadb: 
    image: bitnami/mariadb:latest 
    environment: 
      - ALLOW_EMPTY_PASSWORD=yes 
    volumes: 
      - mariadb_data:/bitnami/mariadb 
    networks: 
      - mysql-network 
 
  phpmyadmin: 
    image: bitnami/phpmyadmin:latest 
    ports: 
      - "8080:8080" 
      - "8443:8443" 
    networks: 
      - mysql-network 
 
  qloapps: 
    image: webkul/qloapps_docker:latest 
    ports: 
      - "2222:22" 
      - "3306:3306" 
      - "1000:80" 
    networks: 
      - mysql-network 
      - web 
    labels: 
      - traefik.enable=true 
      - traefik.http.routers.qloapps.entrypoints=web,websecure 
      - traefik.http.routers.qloapps.tls=true 
      - traefik.http.routers.qloapps.tls.certresolver=lets-encrypt 
      - traefik.http.services.qloapps.loadbalancer.server.port=80 
      - traefik.http.routers.qloapps.rule=Host(`qloapps.<yourdomain>.com`) 
 
volumes: 
  mariadb_data: 
 
networks: 
  web: 
    external: true 
  mysql-network: 
    external: false

2. Explanation of the Docker Compose File

  • MariaDB Service: Uses the Bitnami MariaDB image with an empty password allowed for simplicity. Data is persisted using a named volume mariadb_data.
  • PhpMyAdmin Service: Uses the Bitnami PhpMyAdmin image and is accessible on ports 8080 and 8443 for database management.
  • QloApps Service: Uses the Webkul QloApps Docker image and exposes ports 2222, 3306, and 1000. It includes Traefik labels for routing traffic to the correct service and applying SSL using Let’s Encrypt. I use port 1000 to access it since Traefik occupies port 80.

3. Deploy the Services

With your docker-compose.yml file ready, deploy the services by running the following command in the directory where your docker-compose.yml is located:

docker-compose up -d

This command will download the necessary images, create the containers, and start the services in detached mode.

4. Verify the Deployment

To access PhpMyAdmin, navigate to http://your-server-ip:8080 or https://your-server-ip:8443 and log in with the MariaDB credentials. Login with username root with an empty password as we use ALLOW_EMPTY_PASSWORD=yes. Create a database named qloapps to be used by your QloApps application.

After the services are up and running, verify the deployment by navigating to https://qloapps.<yourdomain>.com. You should see the QloApps installation page with SSL enabled. Below is my site already deployed:

Qloapps installation

Then after installation make sure to remove /install directory and change the admin directory. Follow these instructions: [QloApps Docker Hub](https://hub.docker.com/r/webkul/qloapps_docker.

Conclusion

In this article, we’ve set up QloApps using Docker Compose and Traefik, with SSL enabled on qloapps.<yourdomain>.com.

Feel free to customize the docker-compose.yml file to fit your specific needs, such as setting strong passwords and adjusting ports as necessary. Happy deploying!