Skip to main content

Install Using Docker and Docker-Compose

I did a video last year on Zammad, an open source, powerful helpdesk support system that you can self host.  Recently, while looking into Zammad for some personal use, I started wondering what other options might be out there for Open Source offerings, and came across UVDesk.  

I have to say it definitely gives Zammad a run for the money on features, ease of use, and configurability.  UVDesk is still a bit lacking in Reporting, and doesn't have the ability to add custom fields in the Community Edition yet, but their forums and documentation suggest it's already in their hosted offering, and will make it's way into the Community Edition in the future.

If you've been looking for a self hosted, open source option for helpdesk / support ticketing software, then UVDesk might just be a great fit for your needs.

In the Video linked above, I give you and overview of what features it offers, then we install it, and go through a lot of the initial setup and configuration.


What you'll need

  • Docker-CE and Docker-Compose installed on the machine you want to host UVDesk from.
  • (optional) Portainer-CE
  • (optional) NGinX-Proxy-Manager (if you want to have a URL defined).
  • About 20 minutes of your time.

Installation via a Simple Script

You can easily install Docker-CE, Docker-Compose, Portainer-CE, and NGinX Proxy manager by using this quick install script I created and maintain on Github.  Just use the command:


To download the script to your desired host.

Change the permissions to make the script executable:

chmod +x ./

and then run the script with the command:


When run, the script will prompt you to select your host operating system, then will ask you which bits of software you want to install.

Simply enter 'y' for each thing you want to install.

At some point, you may be asked for your super user (sudo) password as well.

Allow the script to complete installation.

At this point, you might want to log out and back in, as this will allow you to use the docker and docker-compose commands without the need of sudo in front of them.

Installing UVDesk

Once you have Docker-CE and Docker-Compose installed, we'll want to create a new directory for our UVDesk install.

mkdir uvdesk

Now, move into that directory

cd uvdesk

Next, we need to create a docker-compose.yml file, and put our yaml code into it.

nano docker-compose.yml

Now, copy the code block below into that file. To paste in the terminal, you can right-click then select paste, or you can use the hotkey combination of CTRL + Shift + V.

version: '3'
    image: "mysql:5.7"
      - ./uvdesk/db_data:/var/lib/mysql
    restart: always
      MYSQL_DATABASE: uvdesk
      MYSQL_ROOT_PASSWORD: "change-me-to-something-strong"
      MYSQL_USER: "uvdesk"
      MYSQL_PASSWORD: "change-me-to-something-strong-too"
    image: nuttcorp/uvdesk:latest
      - db
    tty: true
        MYSQL_USER: "uvdesk"
        MYSQL_PASSWORD: "change-me-to-something-strong-too"
        MYSQL_ROOT_PASSWORD: "change-me-to-something-strong"
        MYSQL_DATABASE: uvdesk
        - 80:80

  db_data: {}

In the file above, make sure to change the following:

  • MySQL Root Password:  Make this a long strong password - you don't have to remember it, so just make it really strong.  You need to change this to the same password in both sections.
  • MySQL Password: this is the mysql user password for the MySQL User liste (which you may also change in both sections if you want). Make this a long strong password - you don't have to remember it, so just make it really strong.  You need to change this to the same password in both sections.
  • Port: You will likely want to change the left side of the port mapping as well. NEVER change the right side of docker port mappings, but you can change the left side.  This is the port you'll access the Web UI from.  I don't like to use 80, as this is generally used by NGinX, Apache, etc for proxying an FQDN (fully qualified domain name) to the IP and port of the application.

Once you've made those changes you are ready to run the applicatioin. Use the command:

docker-compose up -d

and the applicatioin images will begin to pull down from dockerhub.  Once both images have downloaded, extracted, and started their run processes, you should see 2 'done' messages in the terminal.

Note: sometimes it takes a little time for an application to get fully up and running. UVDesk seems to start pretty quickly for me, but if it's not up right away, give it a few minutes.

Check your Install

Now, you can check your install by navigating in a web browser (Firefox, Chrome, Brave, Vivaldi, Opera, etc) to your host machine's IP address and the port you set on the left side of the port mapping.

If everythingn is up and running, you should be presented with the first run wizard.

Read the block of text, then click 'Next' or 'Continue'.

You'll be presented with a page to setup the database connection for the software.  This is an important step, so make sure you get the following information:

  • We don't want to use or localhost as our MySQL address.  In this case, since we ran these with docker-compose, we want to use the container name of our mysql instance in docker.

If you're unsure of the container name, you can view your running containers information by using the command:

docker-compose ps

From the above output, we see the database (mysql) container name is uvdesk_db_1

This is what we want to put in the database setting for the IP / Address.  Exactly as it prints out on your screen.

Now, move down, and change the mysql user from "root" the MYSQL_USER value you set in the docker-compose file. If you didn't change it from the example above, it will be uvdesk.

Next, enter the MYSQL_PASSWORD value you entered in the docker-compose file above (make sure not to use the MYSQL_ROOT_PASSWORD value).

Finally, make sure the dtaabase name is set to uvdesk (unless you also changed that in the docker-compose file, if so, use your entered value). Your form should look something like this:

Click "Proceed", and everything should go through without issue. You'll now be prompted to create and administrative user account.

Once complete click "Proceed", and you'll be asked to set the URL slugs for the employee (member) and customer sites. I change "member" to "agent" but feel free to do as you like.  Then click "Proceed".

You'll be taken to the Install screen.  Click 'Install Now' and let it run.

NOTE: There are 2 login pages.  The customer page, and the member / agent page.  As a customer, you'll login through the customer page.  This usually comes up by default when you enter just the IP and port of your site. You can change to the Agent page by putting member, or agent if you followed my video steps during setup, in the URL in place of customer.

You are now up and running with a basic UVDesk setup.  Check out the video above for more detail on all of the settings and configuration inside the UVDesk Web User Interface.

Support my Channel

Support my Channel and ongoing efforts through Patreon: