Installation · 12 min read · Dec 21, 2025
Wie man das UVdesk Helpdesk-System auf Ubuntu 22.04 installiert

UVdesk ist ein Open-Source, SaaS-basiertes Helpdesk-System für Unternehmen, um mit ihren Kunden zu interagieren und rund um die Uhr Unterstützung anzubieten. Zu den Funktionen gehören Ticketverwaltung, Wissensdatenbankunterstützung, vorgefertigte Antworten und automatische Ticketerstellung basierend auf E-Mails. Die Fähigkeiten von UVdesk können durch externe Module erweitert werden. Sie können bestimmte Aktionen basierend auf spezifischen Auslösern automatisieren, um Ihren Arbeitsablauf zu verbessern.
In diesem Tutorial lernen Sie, wie Sie UVdesk auf einem Ubuntu 22.04-Server mit Nginx, MySQL und PHP installieren.
Voraussetzungen
- Ein Server, der Ubuntu 22.04 ausführt.
- Ein vollständig qualifizierter Domainname (FQDN), der auf den Server verweist. Für unser Tutorial verwenden wir die Domain
uvdesk.example.com. - Ein Nicht-Root-Benutzer mit Sudo-Rechten.
- Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo apt update && sudo apt upgrade - Installieren Sie grundlegende Dienstprogramme. Einige davon sind möglicherweise bereits installiert.
$ sudo apt install wget curl nano unzip -y
Schritt 1 - Firewall konfigurieren
Bevor Sie Pakete installieren, ist der erste Schritt, die Firewall zu konfigurieren, um HTTP- und HTTPS-Verbindungen zuzulassen.
Überprüfen Sie den Status der Firewall.
$ sudo ufw status
Sie sollten etwas sehen, das wie folgt aussieht.
Status: aktiv
Zu Aktion Von
-- ------ ----
OpenSSH ERLAUBEN Überall
OpenSSH (v6) ERLAUBEN Überall (v6)
Erlauben Sie HTTP- und HTTPS-Ports.
$ sudo ufw allow http
$ sudo ufw allow https
Überprüfen Sie den Status erneut zur Bestätigung.
$ sudo ufw status
Status: aktiv
Zu Aktion Von
-- ------ ----
OpenSSH ERLAUBEN Überall
80/tcp ERLAUBEN Überall
443 ERLAUBEN Überall
OpenSSH (v6) ERLAUBEN Überall (v6)
80/tcp (v6) ERLAUBEN Überall (v6)
443 (v6) ERLAUBEN Überall (v6)
Schritt 2 - Nginx installieren
Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.
Importieren Sie den Signaturschlüssel von Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Fügen Sie das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Aktualisieren Sie die System-Repositorys.
$ sudo apt update
Installieren Sie Nginx.
$ sudo apt install nginx
Überprüfen Sie die Installation.
$ nginx -v
nginx version: nginx/1.22.0
Starten Sie den Nginx-Server.
$ sudo systemctl start nginx
Schritt 3 - PHP und Erweiterungen installieren
Ubuntu 22.04 wird standardmäßig mit PHP 8.1 ausgeliefert. UVdesk funktioniert jedoch gut mit PHP 8.0. Um PHP 8.0 zu installieren, müssen wir das PHP-Repository von Ondrej verwenden.
Fügen Sie das PHP-Repository von Ondrej hinzu.
$ sudo add-apt-repository ppa:ondrej/php
Aktualisieren Sie Ihre System-Repository-Liste.
$ sudo apt update
Installieren Sie PHP und die von UVdesk benötigten Erweiterungen.
$ sudo apt install php8.0 php8.0-curl php8.0-intl php8.0-gd php8.0-xsl php8.0-mbstring php8.0-zip php8.0-xml php8.0-bz2 php8.0-mysql php8.0-soap php8.0-mysql php8.0-fpm php8.0-gmp php8.0-bcmath php8.0-apcu php8.0-redis php8.0-imagick php8.0-imap php8.0-xdebug php8.0-tidy php8.0-ldap php8.0-opcache php8.0-mailparse
Überprüfen Sie die installierte PHP-Version.
$ php --version
PHP 8.0.23 (cli) (built: Sep 18 2022 10:25:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.23, Copyright (c) Zend Technologies
mit Zend OPcache v8.0.23, Copyright (c), von Zend Technologies
mit Xdebug v3.1.5, Copyright (c) 2002-2022, von Derick Rethans
Schritt 4 - MySQL installieren
Ubuntu 22.04 wird mit der neuesten Version von MySQL ausgeliefert. Sie können es mit einem einzigen Befehl installieren.
$ sudo apt install mysql-server
Überprüfen Sie die MySQL-Version.
$ mysql --version
mysql Ver 8.0.30-0ubuntu0.22.04.1 für Linux auf x86_64 ((Ubuntu))
Dieser Schritt ist notwendig für MySQL-Versionen 8.0.28 und höher. Geben Sie die MySQL-Shell ein.
$ sudo mysql
Führen Sie den folgenden Befehl aus, um das Passwort für Ihren Root-Benutzer festzulegen. Stellen Sie sicher, dass es eine Mischung aus Zahlen, Großbuchstaben, Kleinbuchstaben und Sonderzeichen enthält.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Verlassen Sie die Shell.
mysql> exit
Führen Sie das MySQL-Sicherheitsinstallationsskript aus.
$ sudo mysql_secure_installation
Zuerst werden Sie nach Ihrem Root-Passwort gefragt. Geben Sie es ein. Als Nächstes werden Sie gefragt, ob Sie die Komponente zur Validierung von Passwörtern installieren möchten. Sie überprüft die Stärke der in MySQL verwendeten Passwörter. Drücken Sie Y, um es zu installieren. Als Nächstes werden Sie gefragt, welches Niveau der Passwortvalidierungspolitik Sie festlegen möchten. Wählen Sie 2, da dies die stärkste ist.
Sichern der MySQL-Serverbereitstellung.
Geben Sie das Passwort für den Benutzer root ein:
DIE VALIDIERUNGSKOMPONENTE FÜR PASSWÖRTER kann verwendet werden, um Passwörter zu testen
und die Sicherheit zu verbessern. Sie überprüft die Stärke von Passwörtern
und erlaubt den Benutzern, nur solche Passwörter festzulegen, die
ausreichend sicher sind. Möchten Sie die VALIDIERUNGSKOMPONENTE FÜR PASSWÖRTER einrichten?
Drücken Sie y|Y für Ja, eine andere Taste für Nein: Y
Es gibt drei Stufen der Passwortvalidierungspolitik:
NIEDRIG Länge >= 8
MITTEL Länge >= 8, numerisch, gemischte Groß- und Kleinbuchstaben und Sonderzeichen
STARK Länge >= 8, numerisch, gemischte Groß- und Kleinbuchstaben, Sonderzeichen und Wörterbuchdatei
Bitte geben Sie 0 = NIEDRIG, 1 = MITTEL und 2 = STARK ein: 2
Verwenden des vorhandenen Passworts für root.
Geschätzte Stärke des Passworts: 100
Geben Sie als Nächstes N ein, um zu verweigern, Ihr Root-Passwort zu ändern. Geben Sie auch Y ein, um anonyme Benutzer zu entfernen, entfernte Root-Anmeldungen zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.
Ändern Sie das Passwort für root? ((Drücken Sie y|Y für Ja, eine andere Taste für Nein) : N
... überspringen.
Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer,
was es jedem ermöglicht, sich bei MySQL anzumelden, ohne ein Benutzerkonto zu haben.
Dies ist nur für Tests gedacht und um die Installation etwas reibungsloser zu gestalten.
Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln.
Anonyme Benutzer entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : Y
Erfolg.
Normalerweise sollte root nur von
'localhost' aus verbunden werden. Dies stellt sicher, dass jemand nicht das
Root-Passwort aus dem Netzwerk erraten kann.
Verweigern Sie die Remote-Anmeldung für root? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : Y
Erfolg.
Standardmäßig kommt MySQL mit einer Datenbank namens 'test', auf die
jeder zugreifen kann. Dies ist ebenfalls nur für Tests gedacht
und sollte entfernt werden, bevor Sie in eine Produktionsumgebung wechseln.
Testdatenbank und Zugriff darauf entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : Y
- Testdatenbank wird gelöscht...
Erfolg.
- Berechtigungen für die Testdatenbank werden entfernt...
Erfolg.
Das Neuladen der Berechtigungstabellen stellt sicher, dass alle Änderungen
bis jetzt sofort wirksam werden.
Berechtigungstabellen jetzt neu laden? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : Y
Erfolg.
Alles erledigt!
Schritt 5 - MySQL konfigurieren
Melden Sie sich bei der MySQL-Shell an. Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden.
$ sudo mysql -u root -p
Erstellen Sie eine Beispiel-Datenbank.
mysql> CREATE DATABASE uvdeskdb;
Erstellen Sie ein SQL-Benutzerkonto.
mysql> CREATE USER 'uvdesk'@'localhost' IDENTIFIED BY 'Your_password2';
Gewähren Sie dem Benutzer alle Berechtigungen für die Datenbank.
mysql> GRANT ALL PRIVILEGES ON uvdeskdb.* TO 'uvdesk'@'localhost';
Aktualisieren Sie die Benutzerberechtigungen.
mysql> FLUSH PRIVILEGES;
Verlassen Sie die Shell.
mysql> exit
Schritt 6 - Composer installieren
UVdesk verwendet Composer zur Verwaltung von Abhängigkeiten. Führen Sie die folgenden Befehle aus, um Composer herunterzuladen und zu installieren.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verifiziert'; } else { echo 'Installer beschädigt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
Überprüfen Sie, ob Composer ordnungsgemäß installiert wurde.
$ composer -V
Composer version 2.4.2 2022-09-14 16:11:15
Schritt 7 - UVDesk herunterladen und konfigurieren
Erstellen Sie das Verzeichnis /var/www.
$ sudo mkdir /var/www
Wechseln Sie in das Verzeichnis www.
$ cd /var/www
Geben Sie dem aktuell angemeldeten Systembenutzer Berechtigungen für den Ordner /var/www.
$ sudo chown $USER:$USER /var/www/
Verwenden Sie Composer, um Abhängigkeiten für UVdesk zu installieren.
$ composer clear-cache
$ composer create-project uvdesk/community-skeleton uvdesk.example.com
Installieren Sie das Dienstprogramm für Zugriffssteuerlisten (acl).
$ sudo apt install acl
Gewähren Sie Berechtigungen für bestimmte Verzeichnisse und Dateien sowohl für den aktuell angemeldeten Benutzer $USER als auch für den Nginx-Benutzer nginx.
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var
$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public
$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config
$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations
$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations
$ sudo setfacl -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/.env
Schritt 8 - SSL installieren und konfigurieren
Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.
Ubuntu 22.04 wird standardmäßig mit Snapd ausgeliefert. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core
Installieren Sie Certbot.
$ sudo snap install --classic certbot
Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d uvdesk.example.com
Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/uvdesk.example.com auf Ihrem Server herunter.
Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Überprüfen Sie den Zeitplan des Certbot-Erneuerungsdienstes.
$ sudo systemctl list-timers
Sie finden snap.certbot.renew.service als einen der geplanten Dienste.
NÄCHSTE ÜBRIG LETZTE VERGANGEN EINHEIT AKTIVIERT
Mon 2022-09-19 00:28:48 UTC 13min übrig Sun 2022-09-18 23:31:55 UTC 43min ago fstrim.timer fstrim.service
Mon 2022-09-19 00:39:00 UTC 23min übrig Mon 2022-09-19 00:09:00 UTC 6min ago phpsessionclean.timer phpsessionclean.service
Mon 2022-09-19 00:40:00 UTC 24min übrig n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
.......
Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führen Sie einen Testlauf des Prozesses durch.
$ sudo certbot renew --dry-run
Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.
Schritt 9 - Nginx und PHP konfigurieren
PHP-FPM konfigurieren
Öffnen Sie die Datei /etc/php/8.0/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Wir müssen den Unix-Benutzer/die Gruppe der PHP-Prozesse auf nginx setzen. Suchen Sie die Zeilen user=www-data und group=www-data in der Datei und ändern Sie sie in nginx.
...
; Unix-Benutzer/-gruppe der Prozesse
; Hinweis: Der Benutzer ist obligatorisch. Wenn die Gruppe nicht festgelegt ist, wird die Standardbenutzergruppe
; verwendet.
; RPM: apache-Benutzer, der gewählt wurde, um Zugriff auf die gleichen Verzeichnisse wie httpd zu gewähren
user = nginx
; RPM: Halten Sie eine Gruppe, die im Protokollverzeichnis schreiben darf.
group = nginx
...
Suchen Sie die Zeilen listen.owner = www-data und listen.group = www-data in der Datei und ändern Sie sie in nginx.
; Setzen Sie Berechtigungen für den Unix-Socket, falls einer verwendet wird. In Linux müssen Lese-/Schreibberechtigungen
; festgelegt werden, um Verbindungen von einem Webserver zuzulassen. Viele
; BSD-abgeleitete Systeme erlauben Verbindungen unabhängig von Berechtigungen. Der Besitzer
; und die Gruppe können entweder nach Name oder nach ihren numerischen IDs angegeben werden.
; Standardwerte: Benutzer und Gruppe sind als laufender Benutzer festgelegt
; Modus ist auf 0660 festgelegt
listen.owner = nginx
listen.group = nginx
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Erhöhen Sie die Ausführungszeit für PHP-FPM und PHP-CLI auf 60 Sekunden.
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/cli/php.ini
Erhöhen Sie das Speicherlimit für PHP-FPM von 128 MB auf 256 MB.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.0/fpm/php.ini
Starten Sie den PHP-FPM-Dienst neu.
$ sudo systemctl restart php8.0-fpm
Ändern Sie die Gruppe des PHP-Sessionsverzeichnisses in Nginx.
$ sudo chgrp -R nginx /var/lib/php/session
Nginx konfigurieren
Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/uvdesk.conf zur Bearbeitung.
$ sudo nano /etc/nginx/conf.d/uvdesk.conf
Fügen Sie den folgenden Code ein.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name uvdesk.example.com;
access_log /var/log/nginx/uvdesk.access.log;
error_log /var/log/nginx/uvdesk.error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/uvdesk.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/uvdesk.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
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;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 8.8.8.8;
root /var/www/uvdesk/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-Skripte an den FastCGI-Server weiterleiten
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Hängt von der PHP-Version ab
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
try_files $uri =404;
}
}
# HTTPS erzwingen
server {
listen 80;
listen [::]:80;
server_name uvdesk.example.com;
return 301 https://$host$request_uri;
}
Beachten Sie, dass das Wurzelverzeichnis, das in der Nginx-Konfiguration verwendet werden soll, /var/www/uvdesk/public/ und nicht /var/www/uvdesk/ ist.
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.
$ sudo nano /etc/nginx/nginx.conf
Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.
server_names_hash_bucket_size 64;
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreich
Starten Sie den Nginx-Dienst neu.
$ sudo systemctl restart nginx
Schritt 10 - UVDesk installieren
Starten Sie die URL https://uvdesk.example.com in Ihrem Browser, und Sie erhalten den folgenden Bildschirm.

Klicken Sie auf die Schaltfläche Loslegen, um den Installationsprozess zu starten. Der Installer überprüft auf der nächsten Seite die PHP-Einstellungen und Dateiberechtigungen.

Klicken Sie auf Fortfahren, um fortzufahren. Sie werden auf der nächsten Seite aufgefordert, die Datenbankdetails auszufüllen. Geben Sie die Daten ein, wie sie in Schritt 4 konfiguriert sind.

Klicken Sie auf Fortfahren, um fortzufahren. Als Nächstes werden Sie aufgefordert, ein Super-Administrator-Konto zu erstellen. Füllen Sie Ihre Daten aus.

Klicken Sie auf Fortfahren, um fortzufahren. Als Nächstes werden Sie aufgefordert, die Website zu konfigurieren, indem Sie einen Namen für die Mitglieder- und Kundenpanel-Präfixe angeben. Diese Präfixe werden in den URLs der Website verwendet.

Klicken Sie auf Fortfahren, um fortzufahren. Sie erreichen die letzte Installationsseite.

Klicken Sie auf Jetzt installieren, um die Installation zu beginnen. Nach Abschluss erhalten Sie den folgenden Bildschirm.

Sie können über die angegebenen Links auf das Admin-Panel und die Frontend-Website zugreifen. Ihre UVDesk-Installation ist bereit zur Nutzung.
Hinweis: Wenn die Installation aufgrund eines `SQL-Fehlers
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.