This part is for installing the v1.10 of the osTicket software which is the one that is live at the moment of the writing of this Wiki.
sudo apt update && sudo apt upgrade -y sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 curl wget unzip net-tools
Since it is an old version and is no longer distributed we will have to installit through a repository.
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x sudo apt update
sudo apt install -y apache2 mariadb-server
Now do the mariadb secure installation
mariadb-secure-installation
And to finish the mariadb config add these lines in /etc/mysql/my.cnf to enable the remote access
[mysqld] bind-address=0.0.0.0
sudo apt install -y php5.6 php5.6-cli php5.6-mysql php5.6-fpm php5.6-xml php5.6-mbstring php5.6-gd php5.6-imap php5.6-json php5.6-apcu php5.6-intl php5.6-mcrypt libapache2-mod-php5.6
sudo a2enmod php5.6 sudo systemctl restart apache2
For this installation we will use a dump of a already existing database.
sudo mysql -u root -p
CREATE DATABASE osticket_db; CREATE USER 'osticket_user'@'localhost' IDENTIFIED BY 'password_of_ur_choice'; GRANT ALL PRIVILEGES ON osticket_db.* TO 'osticket_user'@'localhost'; CREATE USER 'root'@'%' IDENTIFIED BY 'password_of_ur_choice'; (to have a user with the remote access) GRANT ALL PRIVILEGES ON osticket_db.* TO 'root'@'%'; FLUSH PRIVILEGES; EXIT;
Now we can import the dump.sql into the databse we just created (if you don't have a dump skip this).
mysql -u osticket_user -p osticket_db < /path/to/dump.sql
wget https://github.com/osTicket/osTicket/releases/download/v1.10/osTicket-v1.10.zip unzip osTicket-v1.10.zip -d osticket sudo mv osticket/upload /var/www/html/osticket
sudo mv /var/www/html/osticket/include/ost-sampleconfig.php /var/www/html/osticket/include/ost-config.php
sudo vim /var/www/html/osticket/include/ost-config.php
define('DBTYPE','mysql');
define('DBHOST','localhost');
define('DBNAME','osticket_db');
define('DBUSER','osticket_user');
define('DBPASS','password_of_ur_choice');
define('TABLE_PREFIX','ost_');
define('OSTINSTALLED',TRUE);
define('SECRET_SALT','uKVB7ZnvozppfEOzuyWVVZlZX81thj6p'); (put this exact string to uncrypt the tickets)
define('ADMIN_EMAIL','ur_email@example.com');
sudo chown -R www-data:www-data /var/www/html/osticket/
sudo chmod 0644 /var/www/html/osticket/include/ost-config.php
sudo rm -rf /var/www/html/osticket/setup/
Search on a browser the URL/osticket and if you had the sql dump everything should be operative. If this was the first install follow the instruction the osTicket wizard tells you.
This section is for the OsTicket and Php update (only for OsTicket version older than the 1.6). The first thing to do is to on the admin pannel and disable the service.
sudo apt update sudo apt install -y php8.4 php8.4-cli php8.4-mysql php8.4-fpm php8.4-xml php8.4-mbstring php8.4-gd php8.4-intl php8.4-apcu php8.4-bcmath libapache2-mod-php8.4
sudo a2dismod php5.6 sudo a2enmod php8.4 sudo systemctl restart apache2
cd /tmp wget https://github.com/osTicket/osTicket/releases/download/v1.18.4/osTicket-v1.18.4.zip
(ofc check if the link is the right version)
Unzip the files
unzip osTicket-v1.18.4.zip -d osticket_new
Save a config copy
cp /var/www/html/osticket/include/ost-config.php /tmp/ost-config.bak
Overwrite the files in the osticket folder
sudo cp -r /tmp/osticket_new/upload/* /var/www/html/osticket/
Put the old config file
sudo cp /tmp/ost-config.bak /var/www/html/osticket/include/ost-config.php
sudo chown -R www-data:www-data /var/www/html/osticket/
Now you will have to access the admin pannel and there will be a voice that says to start the update. Do it.
Do this only after a few minutes the end of the update on the platform
sudo rm -rf /var/www/html/osticket/setup/
sudo chmod 0644 /var/www/html/osticket/include/ost-config.php
Now the migration from apache2 to nginx
sudo apt update sudo apt install nginx -y
sudo systemctl stop apache2 sudo systemctl disable apache2
sudo systemctl enable --now phpx.x-fpm
sudo rm /etc/nginx/sites-enabled/default
sudo vim /etc/nginx/sites-available/osticket
server {
listen 80;
server_name your_URL_or_IP;
root /var/www/html;
index index.php index.html index.htm;
access_log /var/log/nginx/osticket_access.log;
error_log /var/log/nginx/osticket_error.log;
location ~ ^/osticket/(include|setup|pages|plugins)/ {
deny all;
return 403;
}
location /osticket/ {
try_files $uri $uri/ /osticket/index.php?$query_string;
}
location ~ ^/osticket/(api|apps|include/plugins)/ {
try_files $uri $uri/ @osticket-api;
}
location @osticket-api {
rewrite ^/osticket/api/(.*)$ /osticket/api/http.php/$1 last;
rewrite ^/osticket/apps/(.*)$ /osticket/apps/dispatcher.php/$1 last;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/phpx.x-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d;
}
location ~ /\. {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/osticket /etc/nginx/sites-enabled/
sudo nginx -t
If the result is positive then start nginx
sudo systemctl enable --now nginx
sudo chown -R www-data:www-data /var/www/html/osticket/ sudo chmod -R 755 /var/www/html/osticket/
apt install -y python3-certbot python3-certbot-nginx
After you run this command follow the instructions
sudo certbot certonly --nginx
server {
server_name your_URL_or_IP;
root /var/www/html;
index index.php index.html index.htm;
access_log /var/log/nginx/osticket_access.log;
error_log /var/log/nginx/osticket_error.log;
location ~ ^/osticket/(include|setup|pages|plugins)/ {
deny all;
return 403;
}
location /osticket/ {
try_files $uri $uri/ /osticket/index.php?$query_string;
}
location ~ ^/osticket/(api|apps|include/plugins)/ {
try_files $uri $uri/ @osticket-api;
}
location @osticket-api {
rewrite ^/osticket/api/(.*)$ /osticket/api/http.php/$1 last;
rewrite ^/osticket/apps/(.*)$ /osticket/apps/dispatcher.php/$1 last;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/phpx.x-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d;
}
location ~ /\. {
deny all;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/your_URL/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/your_URL/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
#if ($host = your_URL) {
# return 301 https://$host$request_uri;
#} # managed by Certbot
listen 80;
server_name your_URL your_IP;
return 301 http://$host$request_uri;
}
Restart nginx
sudo systemctl restart nginx