====== OsTicket Install/Migration ====== 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. === System update and installing the dependecies === 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 ==== 1. Add the php 5.6 repository==== Since it is an old version and is no longer distributed we will have to installit through a repository. ===Add the key of the repository and update the packages list=== curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x sudo apt update ====2. Install apache, MariaDB and Php==== ===Apche and MariaDB=== 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 ===Php5.6 and necessary extension=== 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 ===Enable the Php module in Apache=== sudo a2enmod php5.6 sudo systemctl restart apache2 ====3. Configure the database==== For this installation we will use a dump of a already existing database.\\ ===Access MySQL=== sudo mysql -u root -p ===Create the user and database=== 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 ====4. osTicket files==== ===Dowload the .zip=== 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 ====5. Manual configuration==== ===Rename the config file=== sudo mv /var/www/html/osticket/include/ost-sampleconfig.php /var/www/html/osticket/include/ost-config.php ===Edit the file (only if you have the sql dump)=== 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'); ====6. Cleaning up and permissions==== ===Set Apache propriety=== sudo chown -R www-data:www-data /var/www/html/osticket/ ===Set config file to only read=== sudo chmod 0644 /var/www/html/osticket/include/ost-config.php ===Remove setup fodler (ONLY IF YOU HAD THE SQL DUMP)=== sudo rm -rf /var/www/html/osticket/setup/ ====Go on the site==== 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. ======OsTicket Update====== 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. ====1. Php==== ===Install the new version and extension=== 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 ===Activate the new version=== sudo a2dismod php5.6 sudo a2enmod php8.4 sudo systemctl restart apache2 ====2. OsTikcet==== ===Install the files=== 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) ===Change the files=== 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 ===Reset the Apache permission=== sudo chown -R www-data:www-data /var/www/html/osticket/ ====3. Update on the site==== Now you will have to access the admin pannel and there will be a voice that says to start the update. Do it. ====4. Cleaning up and permissions==== ===Remove the setup folder=== Do this only after a few minutes the end of the update on the platform sudo rm -rf /var/www/html/osticket/setup/ ===Make sure the config file is only readble=== sudo chmod 0644 /var/www/html/osticket/include/ost-config.php ======Nginx migration====== Now the migration from apache2 to nginx ====1.Nginx Install==== sudo apt update sudo apt install nginx -y ====2.Stop Apache2==== sudo systemctl stop apache2 sudo systemctl disable apache2 ====3.Configure PHP-FPM for nginx==== sudo systemctl enable --now phpx.x-fpm ====4.Create Nginx config file==== ===Remove the nginx default link=== sudo rm /etc/nginx/sites-enabled/default ===Create a new config file=== 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; } } ====5.Activate the website and Nginx==== ===Enable the website=== sudo ln -s /etc/nginx/sites-available/osticket /etc/nginx/sites-enabled/ ===Test the config and start Nginx=== sudo nginx -t If the result is positive then start nginx sudo systemctl enable --now nginx ====6.Final permissions checks==== sudo chown -R www-data:www-data /var/www/html/osticket/ sudo chmod -R 755 /var/www/html/osticket/ ====7.Https certificate==== ===Install certbot=== apt install -y python3-certbot python3-certbot-nginx ===Use certbot=== After you run this command follow the instructions sudo certbot certonly --nginx ===Update the Nginx configuration file=== 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