Skip to main content

Install osTicket - Ticketing System

· 9 min read
Mochamad Jazuly
Cybersecurity Analyst

osTicket

osTicket merupakan salah satu sistem tiket open-source pada platform LInux yang ditulis dalam PHP. osTicket mendukung berbagai jenis database seperti MySQL, PostgreSQL dan dapat berintegrasi dengan LDAP/Active directory untuk otentikasi terpusat. osTicket adalah aplikasi berbasis web yang sederhana dan ringan. osTicket memiliki fitur mengarahkan pertanyaan yang dibuat melalui email, formulir web, dan panggilan telepon menjadi platform dukungan pelanggan yang sederhana, mudah digunakan, multi-user, dan berbasis web.

osTicket adalah sistem tiket open-source yang banyak digunakan. sistem ini dengan baik mengintegrasikan pertanyaan yang dibuat melalui email, telepon, dan formulir berbasis web ke dalam antarmuka web multi-pengguna yang mudah digunakan. Mengelola, mengatur, dan arsipkan semua permintaan dan tanggapan di satu tempat dengan tetap memberikan akuntabilitas dan respons yang layak kepada pelanggan/pelapor.

Fitur osTicket

Berikut ini beberapa fitur unggulan osTicket:

  1. Custom Fields/ Kustomisasi Pengisian Data : Sesuaikan data yang dikumpulkan dari pengguna saat mengirimkan tiket untuk membantu menyelesaikan masalah secara langsung.
  2. Custom Columns and Queues/ Kustom Kolom dan Antrean: Kustomisasi Antrean adalah tampilan tiket berdasarkan kriteria kustom yang Anda tentukan. Kustomisasi Kolom adalah kolom tambahan yang awalnya tidak ditampilkan saat melihat tab tiket.
  3. *Ticket Filters/ Filter Tiket: Membuat pengaturan untuk mengarahkan tiket masuk ke departemen, agen, dan personil terkait yang mempercepat tindakan yang tepat.
  4. Help Topics/ Bantuan Topik: Bantuan Topik yang dapat dikonfigurasi untuk tiket web memungkinkan kita mengarahkan pertanyaan ke departemen yang tepat untuk penyelesaian cepat.
  5. Agent Collision Avoidance/ Penghindaran Tabrakan Agen: Mekanisme penguncian tiket untuk memungkinkan staf mengunci tiket selama respons untuk menghindari respons yang bertentangan atau ganda.
  6. Assign, Transfer, & Referral/ Tetapkan, Transfer, & Rujukan: Transfer tiket antar departemen untuk memastikan ditangani oleh agen yang benar, atau tetapkan tiket ke agen atau tim agen tertentu.
  7. Auto-Responder/ Balasan Otomatis: Balasan otomatis yang dapat dikonfigurasi dikirim ketika tiket baru dibuka atau pesan diterima.
  8. Thread Action: Agen memiliki kemampuan untuk membuat Tiket atau Tugas dari urutan entri Tiket atau dari urutan entri Tugas.
  9. Service Level Agreements/Perjanjian Tingkat Layanan: Semua permintaan dan tanggapan dukungan diarsipkan secara online untuk pengguna akhir.
  10. Advanced Search/Pencarian Lanjutan: Mempersempit kriteria pencarian dengan Pencarian Lanjutan.
  11. Task/Tugas: Membuat daftar tugas internal untuk agen.

Instalasi pada Ubuntu Server 18.04

Syarat untuk penerapan osTicket:

  1. Server Ubuntu 18.04
  2. LEMP Server (MySQL/MariaDB dan PHP)
  3. Nginx
  4. osTicket v1.15.2
  5. SSL

Perbaharui Sistem

Memperbaharui sistem operasi dengan perintah :

$ sudo apt update && apt upgrade -y

Install LEMP Server

OsTicket memerlukan server Web, PHP dan Database Server untuk diinstal di server.

Install Nginx Web Server

Menginstal web server Nginx dengan perintah berikut :

$ sudo apt install nginx -y

Sekarang mari kita periksa layanan Nginx dan Untuk memulai layanan secara manual, jalankan perintah berikut :

$ sudo systemctl status nginx
$ sudo systemctl start nginx

Mengaktifkan nginx untuk memulai saat boot dengan menjalankan perintah berikut :

$ sudo systemctl enable nginx

Install PHP dan PHP-PFM

Selanjutnya, perlu menginstal PHP, PHP-FPM dan beberapa modul PHP tambahan yang diperlukan agar OsTicket dapat berjalan dengan baik. Berikut perintah untuk menginstal php-7.2:

$ sudo apt install php php-mysql php-cgi php-fpm php-cli php-curl php-gd php-imap php-mbstring php-xml-util php-intl php-apcu php-common php-gettext php-bcmath

Sekarang edit file php.ini dengan jalankan perintah berikut di terminal :

$ sudo nano /etc/php/7.2/fpm/php.ini

Hapus komentar variabel cgi.fix_pathinfo dan ubah nilainya menjadi 0.

...
cgi.fix_pathinfo=0
...

Setelah itu simpan file dengan cara CTRL+X, kemudian ketik Y dan enter. Selanjutnya, restart php7.2-fpm dan aktifkan saat startup menggunakan perintah berikut:

$ sudo systemctl restart php7.2-fpm
$ sudo systemctl enable php7.2-fpm

Install dan Konfigurasi Database Server untuk OsTicket

Dari jendela terminal, jalankan perintah berikut untuk menginstal server database MySQL :

$ sudo apt install mysql-server

Sekarang mulai MySQL dan aktifkan untuk memulai saat boot kemudian periksa status MySQL dengan perintah berikut :

$ sudo systemctl start mysql
$ sudo systemctl enable mysql
$ sudo systemctl status mysql

Selanjutnya, amankan instalasi MySQL dengan perintah berikut :

$ sudo mysql_secure_installation

Jawab semua pertanyaan seperti berikut (dapat disesuaikan sesuai dengan kebutuhan) :

Would you like to setup VALIDATE PASSWORD plugin? Y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 -> 1
New password: (masukkan password)
Re-enter new password: (masukkan kembali password)
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Selanjutnya, masuk ke konsol MySQL seperti yang ditunjukkan di bawah ini :

$ sudo mysql -u root -p

Masukkan kata sandi root. Sekarang Anda perlu membuat user untuk database osTicket :

mysql > CREATE USER 'osticket_user'@'localhost' IDENTIFIED BY '0sticketPass';
mysql > SELECT user,authentication_string,plugin,host FROM mysql.user;

catatan : osticket_user : user, dapat diganti sesuai kebutuhan. 0sticketPass : password, dapat diganti sesuai kebutuhan.

Sekarang perlu membuat database untuk osTicket :

mysql > CREATE DATABASE osticket_db;
mysql > GRANT ALL PRIVILEGES ON osticket_db.* TO 'osticket_user'@'localhost';
mysql > FLUSH PRIVILEGES;

Download dan Konfigurasi osTicket

Buat direktori baru untuk osTicket dan kemudian masuk ke direktori tersebut.

$ sudo mkdir -p /var/www/osticket/
$ cd /var/www/osticket/

Selanjutnya download osTicket terbaru menggunakan wget dan ekstrak dengan menggunakan unzip perintah berikut :

$ sudo apt install wget unzip
$ sudo wget https://github.com/osTicket/osTicket/releases/download/v1.15.2/osTicket-v1.15.2.zip
$ sudo unzip osTicket-v1.15.2.zip

Anda akan mendapatkan scripts dan upload direktori setelah mengekstraksi. Selanjutnya buat file konfigurasi osTicket dari file ost-sampleconfig.php menggunakan perintah berikut:

$ sudo cp include/ost-sampleconfig.php include/ost-config.php

Selanjutnya, Anda perlu mengubah direktori web osTicket menjadi user dan grup www-data :

$ sudo chown -R www-data:www-data /var/www/osticket

Membuat Virtual Host osTicket

Untuk memudahkan konfigurasi yang efisien, aman dan stabil untuk server NGINX, kita dapat menggunakan konfigurasi yang dapat kita sesuaikan dengan kebutuhan pada situs https://www.digitalocean.com/community/tools/nginx. Saatnya mengkonfigurasi nginx.conf, dengan menjalankan perintah berikut :

$ cd /etc/nginx/
$ sudo nano nginx.conf

Masukkan konfigurasi nginx.conf sebagai berikut :

# Generated by nginxconfig.io
# https://www.digitalocean.com/community/tools/nginx

user www-data;
pid /run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 65535;

# Load modules
include /etc/nginx/modules-enabled/*.conf;

events {
multi_accept on;
worker_connections 65535;
}

http {
charset utf-8;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
log_not_found off;
types_hash_max_size 2048;
types_hash_bucket_size 64;

## Start: Size Limits & Buffer Overflows ##
client_max_body_size 1k;
client_body_buffer_size 1K;
client_header_buffer_size 1k;
large_client_header_buffers 2 1k;
## END: Size Limits & Buffer Overflows ##

# MIME
include mime.types;
default_type application/octet-stream;

# Logging
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;

# SSL
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites
ssl_dhparam /etc/nginx/dhparam.pem;

# Mozilla Intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
resolver_timeout 2s;

# Load configs
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

Simpan file konfigurasi Nginx dan keluar (CTRL+X, kemudian Y). Sekarang buat konfigurasi virtual host baru untuk OsTicket dengan menjalankan perintah berikut :

$ sudo nano /etc/nginx/sites-available/osticket.conf

Salin konfigurasi seperti di bawah ini :

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 192.168.11.111; #domain osticket
set $base /var/www/osticket/upload;
root /var/www/osticket/upload;

# SSL
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; #path sertifikat ssl
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; #path kunci sertifikat ssl

# security
include nginxconfig.io/security.conf;

# index.php
index index.php index.html index.htm;

# index.php fallback
location / {
try_files $uri $uri/ /index.php?$query_string;
}

# additional config
include nginxconfig.io/general.conf;

# handle .php
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
include nginxconfig.io/php_fastcgi.conf;
}
}

# HTTP redirect
server {
listen 80;
listen [::]:80;
server_name 192.168.11.111;
return 301 https://192.168.11.111$request_uri;
}

Ubah server_name 192.168.11.111 seusai dengan nama domain yang telah disiapkan dan memasukkan path sertifikat sll dan kuncinya. Simpan file konfigurasi Nginx dan keluar (CTRL+X, kemudian Y). Selanjutnya konfigurasi security.conf yang sebelumnya kita membuat dahulu direktori nginxconfig.io dengan perintah sebagai berikut :

$ sudo mkdir -p /etc/nginx/nginxconfig.io/
$ sudo nano /etc/nginx/nginxconfig.io/security.conf

Salin konfigurasi seperti di bawah ini :

# security headers
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
add_header Permissions-Policy "interest-cohort=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# . files
location ~ /\.(?!well-known) {
deny all;
}

Kemudian konfigurasi general.conf dengan perintah berikut :

$ sudo nano /etc/nginx/nginxconfig.io/general.conf

Salin konfigurasi seperti di bawah ini :

# favicon.ico
location = /favicon.ico {
log_not_found off;
access_log off;
}

# robots.txt
location = /robots.txt {
log_not_found off;
access_log off;
}

# assets, media
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
expires 7d;
access_log off;
}

# svg, fonts
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
expires 7d;
access_log off;
}

# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

Selanjutnya konfigurasi php_fastcgi.conf dengan perintah berikut :

$ sudo nano /etc/nginx/nginxconfig.io/php_fastcgi.conf

Salin konfigurasi seperti di bawah ini :

# 404
try_files $fastcgi_script_name =404;

# default fastcgi_params
include fastcgi_params;

# fastcgi settings
fastcgi_index index.php;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

# fastcgi params
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/";

Aktifkan Virtual Host dan uji konfigurasinya.

$ sudo ln -s /etc/nginx/sites-available/osticket.conf /etc/nginx/sites-enabled/
$ sudo nginx -t

Jika tidak ada kesalahan konfigurasi, Output akan terlihat seperti ini : Sekarang restart service :

$ sudo systemctl restart nginx

Instal dan Konfigurasikan osTicket

Akses alamat ip/ domain (https://192.168.11.111) pada browser untuk menampilkan osTicket UI, maka akan tampil halaman seperti di bawah ini : Selanjutnya pilih Continue dan Anda akan diarahkan ke bagian konfigurasi osTicket.

System Settings

  • Helpdesk Name : nama dari layanan bantuan
  • Default Email : email utama layanan bantuan

Admin User

  • First Name : nama depan
  • Last Name : nama belakang
  • Email Address : alamat email administrator
  • Username : username administrator
  • Password : password administrator
  • Retyoe Password : ulangi password administrator

Databases Settings

  • MySQL Table Prefix : default (tidak perlu dirubah)
  • MySQL Hostname : default (localhost)
  • MySQL Database : nama database yang telah dibuat (osticket_db)
  • MySQL Username : username untuk database (osticket_user)
  • MySQL Password : password user osticket_user Tekan Install Now setelah pengisian data di atas. Ketika instalasi berhasil, maka akan menampilkan seperti berikut. Selanjutnya, ubah izin ost-config.php untuk menghapus akses write dan menghapus direktori setup dengan menjalankan perintah berikut:
$ cd /var/www/osticket/upload/include/
$ sudo chmod 0644 include/ost-config.php
$ sudo rm -R /var/www/osticket/upload/setup

Instalasi osTicket telah selesai, sebagai informasi sebagai berikut :


buy me a coffee