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…

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
- Docker and Docker Compose are installed.
- Traefik is installed and running on ports 80 and 443.
- The
web
andwebsecure
networks set up for Traefik. - 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:


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!