In diesem Artikel installieren wir sämtliche Serversoftware (Apache2, MariaDB, PHP, FFmpeg, Postfix etc.) für VIMP und konfigurieren das Webhosting unter RHEL 9 / AlmaLinux 9.
Wir gehen im Folgenden davon aus, dass Sie direkt als root auf dem Server arbeiten. Sollte das nicht der Fall sein, muss den Befehlen überall noch entsprechend sudo vorangestellt werden.
Da VIMP zum Zeitpunkt der Veröffentlichung dieses Artikels noch nicht mit PHP 8.4 kompatibel ist, installieren wir zunächst PHP 8.3.
Hinweis für RHEL 9: EPEL, Remi und RPM Fusion sind Drittanbieter-Repositories und nicht Bestandteil des offiziellen Red-Hat-Supportumfangs. Sie werden für bestimmte VIMP-Abhängigkeiten wie PHP 8.3, PECL-Erweiterungen und FFmpeg benötigt. In Umgebungen mit strengen Support- oder Compliance-Anforderungen sollte dies vorab mit dem Betreiber abgestimmt werden.
dnf update
dnf install -y dnf-plugins-core
Für AlmaLinux 9 aktivieren wir CRB wie folgt:
dnf config-manager --set-enabled crb
Für RHEL 9 aktivieren wir CRB wie folgt:
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
Danach geht es wie folgt weiter:
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module reset php -y
dnf module enable php:remi-8.3 -y
Für ffmpeg wird zusätzlich RPM Fusion benötigt:
dnf install -y distribution-gpg-keys
rpmkeys --import /usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-free-el-$(rpm -E %rhel)
dnf --setopt=localpkg_gpgcheck=1 install -y \
https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm
Bei RHEL 9 muss das System in der Regel bei Red Hat registriert sein, damit die offiziellen RHEL-Repositories funktionieren. Dafür führen wir unter RHEL folgendes aus:
subscription-manager register
subscription-manager refresh
subscription-manager identity
dnf repolist
Bzw. optional, falls BaseOS/AppStream nicht aktiv sind:
subscription-manager repos --enable rhel-9-for-$(arch)-baseos-rpms
subscription-manager repos --enable rhel-9-for-$(arch)-appstream-rpms
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
Danach installieren wir die benötigten restlichen Pakete und Erweiterungen:
dnf install mariadb-server httpd php-mysqlnd php php-fpm php-gd php-cli php-xml php-curl php-mbstring php-pecl-zip php-pecl-xmlrpc php-pecl-imagick-im7 php-ldap php-pdo perl-Image-ExifTool ffmpeg nano openssl time golang
Als MTA (Mail Transport Agent) können Sie z.B. postfix installieren, sofern der Mail-Versand nicht über einen SMTP-Server stattfinden soll (was aber die empfohlene Methode ist). Andere MTAs wie Sendmail und Exim können natürlich auch verwendet werden. Achten Sie hier darauf, dass der MTA so konfiguriert ist, dass PHP E-Mails versenden kann.
dnf install postfix
Nun aktivieren wir die Dienste:
systemctl enable --now mariadb
systemctl enable --now php-fpm
Und starten den Apache neu:
systemctl restart httpd
Als Nächstes legen wir die benötigten Ordner auf dem Server an:
mkdir -p /var/www/vimp/web mkdir /var/www/logs
und passen die Verzeichnisrechte an:
chown -R apache:apache /var/www/vimp chown root:apache /var/www/logs
chmod 775 /var/www/vimp/web
chmod 775 /var/www/logs
getenforce
Wenn als Ausgabe Enforcing steht, installieren wir zunächst noch semanage, sofern es fehlt:
dnf install -y policycoreutils-python-utils
Dann setzen wir den Grundkontext für VIMP (lesen/ausführen):
semanage fcontext -a -t httpd_sys_content_t "/var/www/vimp(/.*)?"
restorecon -Rv "/var/www/vimp"
und das Log-Verzeichnis:
semanage fcontext -a -t httpd_log_t "/var/www/logs(/.*)?"
restorecon -Rv "/var/www/logs"
Und definieren die schreibbaren Verzeichnisse:
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/cache(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/log(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/userdata(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/vimp/web(/.*)?"
restorecon -Rv "/var/www/vimp"
Und erlauben dem apache-User, den Livestreamprozess zu starten:
semanage fcontext -a -t httpd_sys_script_exec_t "/var/www/vimp/plugins/stLiveStreamingPlugin/lib/vendor/mediamtx/mediamtx_exec"
Achtung: Folgenden Befehl können wir erst nach der Installation von VIMP ausführen, da dieser erst funktioniert, wenn die Binary existiert. Notieren Sie ihn sich deshalb erstmal nur:
restorecon -v "/var/www/vimp/plugins/stLiveStreamingPlugin/lib/vendor/mediamtx/mediamtx_exec"
Wenn VIMP nicht über lokalen Socket, sondern per TCP auf MySQL/MariaDB zugreift, z. B. 127.0.0.1:3306 oder Remote-DB:
setsebool -P httpd_can_network_connect_db on
Falls VIMP allgemein ausgehend Netzwerkzugriffe braucht, z. B. LDAP, SSO, SMTP, externe APIs:
setsebool -P httpd_can_network_connect on
Für LDAP kann zusätzlich relevant sein:
setsebool -P httpd_can_connect_ldap on
Und für den Livestreamservice benötigen wir:
setsebool -P httpd_execmem on
Folgendermaßen geben wir die benötigten Ports frei:
semanage port -a -t http_port_t tcp 1935 # RTMP Livestream
semanage port -a -t http_port_t tcp 1936 # RTMPS Livestream
semanage port -a -t http_port_t tcp 8888 # HLS Streaming
semanage port -a -t http_port_t tcp 9997 # VIMP API (Inter-Server)
semanage port -a -t http_port_t tcp 9998 # VIMP API (Inter-Server)
semanage port -a -t http_port_t tcp 514 # Syslog TCP (ausgehend, SIEM-Push)
semanage port -a -t http_port_t tcp 514 # Syslog UDP (ausgehend, SIEM-Push)
Und zum Schluss konfigurieren wir gegebenenfalls noch die Firewall:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-port=1935/tcp # RTMP
firewall-cmd --permanent --add-port=1936/tcp # RTMPS
firewall-cmd --permanent --add-port=8888/tcp # HLS Streaming
firewall-cmd --permanent --add-port=9997/tcp # VIMP API (Inter-Server)
firewall-cmd --permanent --add-port=9998/tcp # VIMP API (Inter-Server)
firewall-cmd --reload
(Sollte ein Zugriff über http nicht gewünscht sein, so sollte nur https in der Firewall erlaubt werden.)
Für Apache2 erstellen wir einen eigenen vHost für VIMP.
nano /etc/httpd/conf.d/vimp.conf
In die erstellte Konfigurationsdatei fügen wir folgenden Code ein und passen den Servernamen, die E-Mail-Adresse sowie ggf. den DocumentRoot Pfad an:
<VirtualHost *:80>
# enter your server name/domain in the following line
ServerName my.vimp.domain
# enter your webmaster's e-mail address in the following line
ServerAdmin my@email.address
# replace /var/www/vimp/ with your actual VIMP installation folder path in the following line
DocumentRoot /var/www/vimp/web
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# replace /var/www/vimp/ with your actual VIMP installation folder path in the following line
<Directory "/var/www/vimp/web/">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride all
Require all granted
</Directory>
<IfModule mod_xsendfile.c>
XSendFile on
SetEnv MOD_X_SENDFILE_ENABLED 1
# Absolute path to the VIMP Installation-Directory (the directory containing web - not web itself)
XSendFilePath /var/www/vimp
</IfModule>
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
Header set Access-Control-Allow-Headers *
</IfModule>
<IfModule http2_module>
H2WindowSize 1048576
Protocols h2c http/1.1
</IfModule>
LimitRequestBody 0
ErrorLog /var/www/logs/vimp_error.log
CustomLog /var/www/logs/vimp_access.log combined
</VirtualHost>
Wichtig:
LimitRequestBody 0) ebenfalls passend gesetzt werden. Sonst greift PHP korrekt, aber der Upload wird vorher blockiert.
Anschließend installieren wir noch die benötigten Module, aktivieren PHP-FPM und wählen PHP 8.3 auf der CLI aus:
dnf install mod_ssl mod_http2
systemctl enable --now php-fpm
alternatives --config php
Wählen Sie den PHP8.3-Eintrag bei der erscheinenden Auswahl.
An dieser Stelle laden wir den Apache2 neu:
systemctl enable --now httpd
systemctl restart httpd
Unter AlmaLinux 9 / Red Hat Enterprise Linux 9 wird die PHP-Konfiguration zentral über folgende Datei geladen:
/etc/php.ini
Zusätzliche PHP-Konfigurationsdateien werden aus folgendem Verzeichnis eingebunden:
/etc/php.d/
Für VIMP wird empfohlen, die PHP-Anpassungen nicht direkt in /etc/php.ini vorzunehmen, sondern in einer eigenen Konfigurationsdatei abzulegen. Dadurch bleiben die Änderungen übersichtlich und werden bei Paketupdates nicht versehentlich überschrieben.
Erstellen Sie dazu die Datei:
nano /etc/php.d/99-vimp.ini
Fügen Sie dort die folgenden Werte ein:
upload_max_filesize = 4096M post_max_size = 4200M register_argc_argv = On memory_limit = 1024M max_execution_time = 60 max_input_time = 120
Für php-fpm benötigen wir abweichende Werte und editieren dafür wir die folgende Datei:
nano /etc/php-fpm.d/www.conf
Fügen Sie dort die folgenden Werte ein:
php_value[upload_max_filesize] = 4096M
php_value[post_max_size] = 4200M
php_value[register_argc_argv] = On
php_value[memory_limit] = 1024M
php_value[max_execution_time] = 60
php_value[max_input_time] = 120
Hinweis: post_max_size sollte etwas größer sein als upload_max_filesize, da bei Datei-Uploads zusätzlicher Overhead durch die HTTP-POST-Daten entstehen kann. Für größere Uploadlimits erhöhen Sie beide Werte entsprechend, wobei post_max_size weiterhin größer als upload_max_filesize sein sollte.
Speichern Sie die Datei ab und starten Sie PHP-FPM neu:
systemctl restart php-fpm
Und wir starten den Apache nochmals neu:
systemctl restart httpd
Prüfen Sie danach, ob die Werte aktiv sind:
php --ini
php -i | egrep 'upload_max_filesize|post_max_size|register_argc_argv|memory_limit|max_execution_time|max_input_time'
Für PHP-FPM kann zusätzlich geprüft werden:
php-fpm -i | egrep 'upload_max_filesize|post_max_size|register_argc_argv|memory_limit|max_execution_time|max_input_time'
Jetzt legen wir die Datenbank für VIMP an:
# mysql
Der MySQL-Client meldet sich mit dem mysql-Prompt:
create database DATENBANKNAME default character set utf8mb4 collate utf8mb4_unicode_ci; create user 'DATENBANKBENUTZER'@'%' identified by 'PASSWORT'; grant all privileges on DATENBANKNAME.* to 'DATENBANKBENUTZER'@'%' with grant option; flush privileges; exit;
Zusätzlich erstellen wir folgende Konfigurationsdatei für die MariaDB:
nano /etc/my.cnf.d/vimp.cnf
Und fügen Folgendes darin ein:
[mariadb] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [client] default-character-set = utf8mb4
Abschließend starten wir die Datenbank neu, damit die Konfigurationsänderungen angewendet werden:
systemctl restart mariadb
Abschließend müssen Sie noch die SourceGuardian PHP-Erweiterung installieren. Eine Anleitung dazu finden Sie hier.
Der Upload und die Installation des VIMP-Installers ist in diesem Artikel beschrieben.
Die Installation ist nun abgeschlossen. Rufen Sie jetzt Ihr Portal im Browser auf.
Während der Installation werden drei Benutzer erstellt, die die drei Benutzerrollen darstellen:
Bitte ändern Sie alle Passwörter so schnell wie möglich. Wenn Sie die Benutzer nicht mehr benötigen, können Sie sie im Admin-Bereich löschen. Achten Sie nur darauf, den admin-Benutzer zu behalten!