uvdesk is my main help desk service that i self host. it took a lot of configuration, but i finally got an installation that was currently and repeatable. there was a docker compose install for it, but as easy as it was, it was not maintained. so i decided to follow the documentation using composer, and it worked like a charm. i would advise to run uvdesk inside of a virtual machine and not an lxc. because it needs its specific dependencies, it is better to run it off of a virtual machine.
this is pretty much what i documented:
setup debian with hostname and ip address
nano /etc/network/interfaces
static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x
dns-nameservers x.x.x.x 9.9.9.9
update pacakes and install updates
apt update && apt upgrade -y
install prereqs
apt install curl wget zip composer -y
install apache2 and mariadb
apt install apache2 mariadb-server mariadb-client -y
install php modules for uvdesk
apt install php8.2-fpm -y X
apt install libapache2-mod-php8.2 -y X
apt install php8.2-bcmath -y X
apt install php8.2-bz2 -y X
apt install php8.2-calendar -y
apt install php8.2-ctype -y
apt install php8.2-curl -y X
apt install php8.2-dom -y X
apt install php8.2-exif -y
apt install php8.2-fileinfo -y
apt install php8.2-gd -y X
apt install php8.2-gmp -y X
apt install php8.2-iconv -y
apt install php8.2-intl -y
apt install php8.2-json -y
apt install php8.2-mbstring -y
apt install php8.2-mysql -y X
apt install php8.2-mysqli -y
apt install php8.2-pdo -y
apt install php8.2-phar -y
apt install php8.2-posix -y
apt install php8.2-soap -y X
apt install php8.2-tokenizer -y
apt install php8.2-xdebug -y X
apt install php8.2-xsl -y X
apt install php8.2-xml -y
apt install php8.2-xmlreader -y
apt install php8.2-xmlwriter -y
apt install php8.2-zip -y X
apt install php8.2-apcu -y X
apt install php8.2-redis -y X
apt install php8.2-imagick -y X
apt install php8.2-imap -y X
apt install php8.2-mailparse -y X
enable php8.2-fpm
a2enmod proxy_fcgi setenvif
a2enconf php8.2-fpm
configure mariadb
mysql_secure_installation
login as root
N for unix socket auth
Y to remove anonymous users
Y to disallow root login remotely
Y to remove test DB
Y to reload privilege table
login to mariadb (enter root password)
mysql -u root -p
enter these commands to create the UV Desk DB
CREATE DATABASE uvdesk_db;
GRANT ALL ON uvdesk.* to ‘uvdesk_user’@’localhost’ IDENTIFIED BY ‘secure-password’;
FLUSH PRIVILEGES;
EXIT;
download latest uvdesk zip
wget -O uvdesk.zip https://cdn.uvdesk.com/uvdesk/downloads/opensource/uvdesk-community-current-stable.zip
extract to /var/www
unzip ./uvdesk.zip -d /var/www/
rename extracted folder
mv /var/www/uvdesk* /var/www/uvdesk
set permissions for the directory
chown -R www-data:www-data /var/www/uvdesk
create uvdesk apache configuration file
nano /etc/apache2/sites-available/uvdesk.conf
paste this in the .conf file
ServerName x.x.x.x
DocumentRoot /var/www/uvdesk/public
<Directory /var/www/uvdesk/public>
Require all granted
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
add port 8081 to apache2
cd /etc/apache2
nano ports.conf
Listen 8081
enable rewrite modules
a2enmod rewrite
enable uvdesk site
a2ensite uvdesk
restart apache2
systemctl restart apache2
navigate to http://IP/uvdesk
setup the server
Server: 127.0.0.1
Port: 3306
Username: uvdesk_user
Password: secure-password
Database: uvdesk_db
create the super admin account
[email protected]
password123
website configuration panels
member > admin – admin
customer > guest – guest
portals
x.x.x.x:8081/en/admin/login – dashboard
x.x.x.x:8081/en – customer portal
create swift mailer
Mailer ID: Zoho SMTP
Transport Type: SMTP
Check enabled delivery
Server: smtppro.zoho.com
Email: [email protected]
Password: password123
Port: 465
Encryption: SSL
Auth Mode: login
create mailbox
ID: Zoho IMAP
Name: Helpdesk
Check enable mailbox
Transport: IMAP
Host: {imappro.zoho.com:993/imap/ssl}INBOX
Username/Email: [email protected]
Password: password123
Outgoing Mail: Zoho SMTP
email settings table
Email ID: [email protected]
Name: Helpdesk
Swiftmailer ID: Zoho SMTP
sync mailbox
php /var/www/uvdesk/bin/console uvdesk:refresh-mailbox [email protected]
create cron job of sync (every 30 min)
*/30 * * * * php /var/www/uvdesk/bin/console uvdesk:refresh-mailbox [email protected]