Home Lab 02: Deploying a Ticketing System on a Virtual Machine

Introduction

Today’s workforce relies heavily on technology to complete tasks and communicate, but this technology doesn’t always work as expected. When users encounter technical issues, they need a way to request support and get their systems running again quickly.

Ticketing Systems

As users submit requests for technical support, IT departments need an effective way to manage these incoming service requests. Ticketing systems provide a structured communication channel between end users and the IT professionals who support them.

The key functions of a ticketing system include:

  1. End users can report issues immediately when they occur
  2. IT departments can organize and assign work to specific team members
  3. Complex issues can be escalated to senior IT professionals when needed
  4. Solutions can be documented for future reference

Getting Hands On Experience

Understanding how ticketing systems function and the workflow used in enterprise environments is crucial. These systems form the backbone of IT department operations. Since entry-level job postings often require ticketing system experience, this makes for an excellent project for aspiring IT professionals.

To gain hands-on experience, I will host a free ticketing software called Peppermint on my Proxmox server. I plan to submit and resolve tickets as issues arise during my lab work. This approach will allow me to experience the system from both a user and technician perspective while learning to install and configure the software.

Creating The Virtual Host Machine

I will be hosting an instance of Peppermint using a Docker container running on an Ubuntu Linux virtual machine (VM). While I won’t cover Docker or container technology in detail, as I’m still learning these technologies myself, I’ll walk through the setup process.

The first step in this lab is creating a VM running Ubuntu Linux. Setting up a virtual machine in a Proxmox server is straightforward. I will link a video walk-through that explains the process in detail.

The process resembles creating a VM using a Type 2 hypervisor platform like VirtualBox. It involves selecting an operating system, configuring the virtual hardware and networking, along with other specific configuration options.

Post Installation Steps

There are several common procedures for provisioning VMs. Here are the steps I take after creating a virtual machine:

  1. Take a base image snapshot before making any changes
  2. Install additional firmware and drivers
  3. Update the operating system
  4. Install the Qemu guest agent (enabled during VM setup)
  5. Take an updated snapshot of the system

Following these steps ensures the system is secure, up to date, and recoverable if something goes wrong.

Installing Docker

Containers are a way to package applications and their dependencies in an isolated environment, allowing the application to run consistently across different environments.

Docker is the software that enables the creation and management of these containerized applications. To install Docker, follow the instructions in the documentation:

  1. Set up the APT repository
  2. Install the latest packages
  3. Test functionality with the hello-world container

Pulling Down Peppermint Containers Using Docker

I first created a directory for the project and named it “peppermint.” The Peppermint docs include Docker installation instructions. To get it working, I created a docker-compose.yml file in the peppermint directory and pasted the provided text into it. This .yml file will spin up two containers: one for the Peppermint application and another for a PostgreSQL database. Docker Compose simplifies multi-container application deployment and management, which is something I want to learn more about.

With Docker installed and the docker-compose.yml file created, a single command will pull everything needed to create the containers for my ticketing system:

sudo docker compose up -d

To access the application and use its features, simply type http://your-server-ip:3000 into a browser. This will load the login page.

Change Default Login Details

Peppermint provides a default login username and password, neither of which are secure. Maintaining strong security is crucial not only for admins but also for users. I logged in using the defaults and immediately changed the login details.

Since the application is only accessible on my local area network, this isn’t critical. However, I believe it’s best to get into the habit of creating strong, unique usernames and passwords for all logins, and securely storing them in a password manager.

Adding Users

To get both the user’s and the technician’s viewpoint on how this software operates, I need two users with different functions. The first will be the main admin user that will configure the software, manage other users, and resolve incoming tickets. The second user will submit my home lab tasks and to-do items in the form of tickets.

Within the admin section of the dashboard, you can create new users which will require a:

  1. Name
  2. Email
  3. Password

Creating Tickets

I logged out of the admin account and into the user I created to submit tickets. The process of creating tickets is super simple so I added a couple items that Ive been needing to get done. My workflow with the system now is to submit tickets using the normal user and as I complete them I will comment, add notes, and close out the tickets with the admin user.

Future Plans

My goal with this project is to scale it in order to provide technical support to family and close friends. Some of the challenges involved include:

  • Serving the ticket system over the internet while maintaining security
  • Providing new users with login details and supporting them when they forget them
  • Managing an increasing number of tickets

One of my main goals right now is gaining practical experience with technology, and offering free tech support to people around me is a great way to do that.

I also plan to work more with containers and Docker to deploy other applications in my home lab. I will write a post documenting my learning throughout that process in the future.

Conclusion

Getting hands-on, practical experience with common IT tools is a crucial step toward entering the field. As someone with no prior experience in IT, working with these technologies excites me and motivates me to start my career in this field. The primary purpose of the IT department is to support technology users by ensuring their systems run smoothly. The only way to achieve this effectively is through strong communication. Ticketing software allows users and technicians to communicate about issues and resolve them as quickly as possible, keeping work moving forward.

Leave a Reply

Your email address will not be published. Required fields are marked *