Horde: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
 
(31 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
== Installation mit Composer ==
  
== Horde 5 - Installation ==
+
=== Download ===
=== PEAR installieren ===
+
  cd /srv/www/htdocs
* Debian etc.
+
  git clone https://github.com/maintaina-com/horde-deployment.git horde
  apt install php-pear
 
=== Horde Groupware installieren über PEAR ===
 
  pear upgrade PEAR
 
pear channel-discover pear.horde.org
 
pear install horde/horde_role
 
pear run-scripts horde/Horde_Role
 
  
  pear install -a -B horde/horde
+
=== Installation ===
  pear install -a -B horde/groupware
+
  cd horde
  pear install -a -B horde/imp
+
  export COMPOSER_ALLOW_SUPERUSER=1
 +
  composer install
  
* Konfiguration erzeugen
+
=== Horde Konfiguration erzeugen ===
  cd /srv/www/htdocs/horde/config
+
  cd web/horde/config
 
  cp conf.php.dist conf.php
 
  cp conf.php.dist conf.php
* Seite aufrufen
 
https://t2792.greatnet.de/horde/
 
Zunächst die Datenbank konfigurieren.
 
* Datenbank
 
Eine neue Datenbank mit phpMyAdmin erzeugen
 
  
Datenbanktabellen erzeugen
+
=== Horde aktivieren ===
  /usr/bin/horde-db-migrate
+
  cd /srv/www/htdocs/horde
* Info: [http://www.horde.org/apps/horde/docs/INSTALL#quick-install Quickinstall]
+
composer horde-reconfigure
 +
 
 +
=== Berechtigungen ===
 +
chown wwwrun.www /srv/www/htdocs/horde -R
 +
 
 +
=== Virtual Host anlegen ===
 +
Unter Suse Linux im Verzeichnis <tt>/etc/apache2/vhosts.d</tt> eine Konfiguration für den viturellen Host anlegen
 +
# Beispiel
 +
/etc/apache2/vhosts.d/horde.conf
 +
DocumentRoot setzen
 +
<VirtualHost xxx.xxx.xxx.xxx:80>
 +
      DocumentRoot "/srv/www/htdocs/horde/web"
 +
      ...
 +
Server neu starten
 +
service apache2 restart
  
== Horde Framework Upgrade ==
+
=== Horde Apps installieren ===
cd /srv/www/htdocs
+
Beispiel: Installation von <tt>imp</tt> Webmail App
  pear upgrade -a -B horde/groupware
+
  composer require horde/imp dev-FRAMEWORK_6_0
pear upgrade -a -B horde/horde
 
pear upgrade -a -B horde/imp
 
...
 
  
chown wwwrun.www horde -R
+
== Authentifikation ==
  
== Horde Framework ==
+
==== Authentifikation gegen eine Passwortdatei ====
=== Backend für die Authentifikation ===
 
Beispiel 1: Authentifikation gegen eine Passwortdatei
 
 
  $conf['auth']['admins'] = array('admin_name');
 
  $conf['auth']['admins'] = array('admin_name');
 
  $conf['auth']['driver'] = 'http';
 
  $conf['auth']['driver'] = 'http';
 
  $conf['auth']['params']['htpasswd_file'] = '/srv/www/.authpass';
 
  $conf['auth']['params']['htpasswd_file'] = '/srv/www/.authpass';
 
  $conf['auth']['params']['encryption'] = 'plain';
 
  $conf['auth']['params']['encryption'] = 'plain';
 
+
Diese Einstellungen können helfen, dass man sich anmelden kann, wenn nach einem Update die Authentifizierung über <tt>imp</tt> nicht möglich ist.
Passwortdatei erzeugen
+
* Passwortdatei erzeugen
 
  htpasswd2 -c .htpasswd username  
 
  htpasswd2 -c .htpasswd username  
 
Diese Passwörter sind verschlüsselt.
 
Diese Passwörter sind verschlüsselt.
Zeile 50: Zeile 50:
 
Man kann auch Plaintext Passwörter in die Datei schreiben, dann:
 
Man kann auch Plaintext Passwörter in die Datei schreiben, dann:
 
  $conf[auth][params][encryption] = "plain"
 
  $conf[auth][params][encryption] = "plain"
Beipiel 2: Athentifikation über IMP
+
==== Athentifikation über IMP ====
 
  $conf['auth']['admins'] = array('admin_user');
 
  $conf['auth']['admins'] = array('admin_user');
 
  $conf['auth']['driver'] = 'application';
 
  $conf['auth']['driver'] = 'application';
 
  $conf['auth']['params']['app'] = 'imp';
 
  $conf['auth']['params']['app'] = 'imp';
=== Horde auf lokalem Rechner ===
+
== Upgrade ==
Möchte man Horde auf dem lokalen Rechner installieren, so braucht man einen virtuellen Host, weil Horde einen vollständigen Domainnamen erwartet.
+
=== Composer ===
* Virtueller Server
+
cd /srv/www/htdocs/horde
Beispiel:
+
composer update
/etc/apache2/vhosts.d/notebook.conf
+
chown wwwrun.www * -R
 +
service apache2 restart
 +
Durch das Update wird die Konfiguration von <tt>imp</tt> und <tt>kronolith</tt> gelöscht. Falls die Authentifizierung über <tt>imp</tt> erfolgen soll, kommt es daher zu einer Fehlermeldung.
 +
Mail ist nicht aktiviert
 +
Nach temporäre Änderung der Authentifizierungseinstellungen ist eine Anmeldung in der Groupware möglich. Dann kann man die Konfiguration von <tt>imp</tt> aktualisieren.
  
  <VirtualHost *>
+
=== Authentifizierung ändern ===
    DocumentRoot /srv/www/htdocs
+
Horde Konfiguration manuell b earbeiten
    ServerName notebook
+
  /srv/www/htdocs/horde/vendor/horde/horde/config/conf.php
    ServerAlias notebook.localnet
+
Die temporären Änderungen sind hier beschrieben: [[#Backend für die Authentifikation|Horde Authentifizierung]]
</VirtualHost>
 
* Authentifikation
 
Für Testzwecke genügt die Authentifikation über eine Passwortdatei
 
: Siehe weiter oben in diesem Artikel
 
  
 
== Kalender und Kontakte synchronisieren ==
 
== Kalender und Kontakte synchronisieren ==
Zeile 107: Zeile 107:
 
: Mit dem Addon '''Category Manager''' kann man die Verteilerlisten ersetzen, indem man Nachrichten an die Mitglieder einer Kontaktkategorie sendet.
 
: Mit dem Addon '''Category Manager''' kann man die Verteilerlisten ersetzen, indem man Nachrichten an die Mitglieder einer Kontaktkategorie sendet.
  
==== TzPush ====
+
== Imp Webmail ==
Mit Hilfe des Protokolls Exchange Active Sync (EAS) können Adressen zwischen Thunderbird und Horde synchronisiert werden.
 
 
 
Das Thunderbird Addon '''TzPush''' ermöglicht die Synchronisation der Kontakte über dieses Protokoll.
 
: TzPush funktioniert anscheinend nicht mehr mit neueren Thunderbird Versionen
 
* Horde für '''ActiveSync''' konfigurieren
 
# /srv/www/htdocs/horde/config/conf.php
 
$conf['activesync']['enabled'] = true;
 
$conf['activesync']['params']['driverconfig'] = 'horde';
 
$conf['activesync']['storage'] = 'Sql';
 
$conf['activesync']['emailsync'] = false;
 
$conf['activesync']['version'] = '14.1';
 
$conf['activesync']['auth']['type'] = 'basic';
 
$conf['activesync']['autodiscovery'] = 'user';
 
$conf['activesync']['outlookdiscovery'] = false;
 
$conf['activesync']['logging']['type'] = false;
 
$conf['activesync']['ping']['forcedheartbeat'] = 60;
 
$conf['activesync']['ping']['deviceping'] = false;
 
$conf['activesync']['ping']['waitinterval'] = 15;
 
* Webserver für Acive Sync vorbereiten
 
In der Apache2 VirtualHost Konfiguration folgende Direktive hinzufügen
 
# /etc/apache2/default-server.conf
 
<VirtualHost xxx.xxx.xxx.xxx:yy>
 
    Alias /Microsoft-Server-ActiveSync /srv/www/htdocs/horde/rpc.php
 
* Thunderbird AddOn TzPush installieren
 
Mit dem AddOn '''tzpush''' kann das Thunderbird Adressbuch mit Horde synchronisiert werden
 
* TzPush konfigurieren
 
Thunderbird / Extras / Tz-Push Settings
 
Anleitung zur Konfiguration auf der AddOn Seite: https://addons.mozilla.org/en-US/thunderbird/addon/tzpush/
 
* Debugging
 
In Thunderbird die erweiterte Konfiguration öffnen
 
Bearbeiten / Einstellungen / Allgemein / Konfiguration bearbeiten
 
Folgende Direktive setzen
 
extensions.tzpush.debugwbxml = 1
 
In Thunderbird die Fehlerkonsole öffnen und alle Einträge löschen.
 
: Dann einen Sync-Vorgang mit Tz-Push starten
 
* Troubleshooting
 
In der Konfiguration von TzPush die '''Device Id''' löschen.
 
 
 
In der Horde Administration die Active-Sync Geräte überprüfen und gegebenenfalls löschen.
 
 
 
== Horde Anwendungen ==
 
=== Imp Webmail ===
 
 
* Backend
 
* Backend
 
Für IMP muss ein Backend konfiguriert werden. Das geht nicht im Webinterface. Das Backend (IMAP oder POP3) wird in der Datei <code>imp/config/backends.local.php</code> definiert.
 
Für IMP muss ein Backend konfiguriert werden. Das geht nicht im Webinterface. Das Backend (IMAP oder POP3) wird in der Datei <code>imp/config/backends.local.php</code> definiert.
Zeile 170: Zeile 128:
 
  ?>
 
  ?>
  
=== Kronolith - Kalender ===
+
== Kronolith - Kalender ==
 
==== Kalender in Thunderbird abonnieren ====
 
==== Kalender in Thunderbird abonnieren ====
 
Einen neuen Kalender erstellen
 
Einen neuen Kalender erstellen
Zeile 207: Zeile 165:
 
: Achtung: Nicht vergessen auf den PHP Eröffnungstag: <code><?php</code>
 
: Achtung: Nicht vergessen auf den PHP Eröffnungstag: <code><?php</code>
  
=== Turba - Adressbuch ===
+
== Turba - Adressbuch ==
 +
=== Adressbuch Layout ändern ===
 +
Vorlagen für das Layout
 +
vendor/horde/turba/config/backends.php
 +
In folgender Datei kann man das Layout anpassen:
 +
vendor/horde/turba/config/backends.local.php
 +
Input Typen für Formularfelder: https://wiki.horde.org/Doc/Dev/FormTypes
  
=== Gollem Dateimanager ===
+
== Gollem Dateimanager ==
 
Es muss ein Backend konfiguriert werden.
 
Es muss ein Backend konfiguriert werden.
 
: In der Datei <code>gollem/config/backends.php</code> sind verschiedene Backends vorkonfiguriert. Dieses Skript sollte man nicht bearbeiten, da es bei Updates überschrieben wird.  
 
: In der Datei <code>gollem/config/backends.php</code> sind verschiedene Backends vorkonfiguriert. Dieses Skript sollte man nicht bearbeiten, da es bei Updates überschrieben wird.  
Zeile 247: Zeile 211:
 
);
 
);
 
== Troubles ==
 
== Troubles ==
 +
Bugtracker: https://bugs.horde.org/
 
=== Testscript ===
 
=== Testscript ===
 
  www.example.com/horde/test.php
 
  www.example.com/horde/test.php
 
Diese Seite zeigt, ob etwas fehlt.
 
Diese Seite zeigt, ob etwas fehlt.
=== Update Informationen werden nicht richtig angezeigt ===
 
Auf der Konfigurationsseite werden verfügbare Updates für einzelne Pakete angezeigt, aber
 
# Beispiel
 
pear upgrade horde/Horde_ActiveSync
 
Nothing  to upgrade
 
Lösung durch einen [https://github.com/horde/base/commit/d4388e344abc86b81d41abec27d9deab9047772b.patch Patch] der Datei
 
/www/horde/admin/config/index.php
 
=== Horde und php7 ===
 
Nach dem Wechsel auf PHP7 war Horde zunächst unbrauchbar.
 
: Ich habe Horde neu installiert.
 
* Horde Backup
 
webRoot=/srv/www/htdocs
 
cd $webRoot
 
cp -av horde horde.bak -R
 
* Horde entfernen
 
pear uninstall `pear list -c horde | tail -n +4 | awk '{ print "horde/"$1 }'`
 
Siehe: http://www.netdip.com/how-to-completely-remove-horde-pear-packages/
 
* Horde neu installieren
 
pear clear-cache
 
pear upgrade --force
 
pear channel-discover pear.horde.org
 
pear install horde/horde_role
 
pear run-scripts horde/Horde_Role
 
 
pear install -a -B horde/horde
 
pear install -a -B horde/groupware
 
pear install -a -B horde/imp
 
 
* Anpassungen
 
pear uninstall Services_Weather
 
Service_Weather bewirkt einen Crash beim Erzeugen der Horde Konfiguration
 
* Horde Konfiguration wiederherstellen
 
cp -a horde.old/config/conf.php horde/config/
 
* Konfiguration der Horde Module wiederherstellen
 
for d in imp turba nag gollem kronolith trean mnemo ; do cp -a horde.old/$d/config/conf.php horde/$d/config/ ; done
 
* Weitere Dateien zurückkopieren, falls notwendig
 
for d in imp turba ; do cp -a horde.old/$d/config/backends.local.php horde/$d/config/ ; done
 
 
=== Datenbank Migrationsskripte nicht gefunden ===
 
ln -s /etc/php5/cli/pear.conf /etc/php5/apache2/
 
 
=== UTF-8 ===
 
=== UTF-8 ===
 
Fehlermeldung nach dem Login
 
Fehlermeldung nach dem Login
Zeile 296: Zeile 221:
 
  # $conf['sql']['charset'] = 'utf-8';
 
  # $conf['sql']['charset'] = 'utf-8';
 
  $conf['sql']['charset'] = 'utf8mb4';
 
  $conf['sql']['charset'] = 'utf8mb4';
 
 
== Horde im Internet ==
 
== Horde im Internet ==
 
[http://www.horde.org/apps/horde/docs Dokumentation]   
 
[http://www.horde.org/apps/horde/docs Dokumentation]   

Aktuelle Version vom 25. April 2024, 13:26 Uhr

Installation mit Composer

Download

cd /srv/www/htdocs
git clone https://github.com/maintaina-com/horde-deployment.git horde

Installation

cd horde
export COMPOSER_ALLOW_SUPERUSER=1 
composer install

Horde Konfiguration erzeugen

cd web/horde/config
cp conf.php.dist conf.php

Horde aktivieren

cd /srv/www/htdocs/horde
composer horde-reconfigure

Berechtigungen

chown wwwrun.www /srv/www/htdocs/horde -R

Virtual Host anlegen

Unter Suse Linux im Verzeichnis /etc/apache2/vhosts.d eine Konfiguration für den viturellen Host anlegen

# Beispiel
/etc/apache2/vhosts.d/horde.conf

DocumentRoot setzen

<VirtualHost xxx.xxx.xxx.xxx:80>
     DocumentRoot "/srv/www/htdocs/horde/web"
     ...

Server neu starten

service apache2 restart

Horde Apps installieren

Beispiel: Installation von imp Webmail App

composer require horde/imp dev-FRAMEWORK_6_0

Authentifikation

Authentifikation gegen eine Passwortdatei

$conf['auth']['admins'] = array('admin_name');
$conf['auth']['driver'] = 'http';
$conf['auth']['params']['htpasswd_file'] = '/srv/www/.authpass';
$conf['auth']['params']['encryption'] = 'plain';

Diese Einstellungen können helfen, dass man sich anmelden kann, wenn nach einem Update die Authentifizierung über imp nicht möglich ist.

  • Passwortdatei erzeugen
htpasswd2 -c .htpasswd username 

Diese Passwörter sind verschlüsselt.

Man kann auch Plaintext Passwörter in die Datei schreiben, dann:

$conf[auth][params][encryption] = "plain"

Athentifikation über IMP

$conf['auth']['admins'] = array('admin_user');
$conf['auth']['driver'] = 'application';
$conf['auth']['params']['app'] = 'imp';

Upgrade

Composer

cd /srv/www/htdocs/horde
composer update
chown wwwrun.www * -R
service apache2 restart

Durch das Update wird die Konfiguration von imp und kronolith gelöscht. Falls die Authentifizierung über imp erfolgen soll, kommt es daher zu einer Fehlermeldung.

Mail ist nicht aktiviert

Nach temporäre Änderung der Authentifizierungseinstellungen ist eine Anmeldung in der Groupware möglich. Dann kann man die Konfiguration von imp aktualisieren.

Authentifizierung ändern

Horde Konfiguration manuell b earbeiten

/srv/www/htdocs/horde/vendor/horde/horde/config/conf.php

Die temporären Änderungen sind hier beschrieben: Horde Authentifizierung

Kalender und Kontakte synchronisieren

Smartphone

Am Smartphone die App DavDroid istallieren

DavDroid installieren

Die App DavDroid heißt jetzt DAVx5. Diese App auf dem Smartphone installieren.

Die App ist gut dokumentiert und kostet einige Euro, was sie auf jeden Fall wert ist.

Am Smartphone wird ein DAVdroid Konto erstellt, das die Synchronisation mit dem Kalender und mit dem Adressbuch über CalDAV möglich macht.

DavDroid Konto einrichten

Für die Synchronisation legt man am Smartphone ein DavDroid Konto an mit beispielsweise folgenden Daten:

URL:       https://example.com/horde/rpc.php/calendars/myUserName/calendar:gO8Nqo6qPBun1TwWNl148w1o
User:      myUserName
Passwort:  *****

Und wie finde ich die richtige URL?

Am PC im Webbrowser in den Kalender einloggen
https://example.com/horde/login.php

In den Kalender Eigenschaften von Kronolith unter Abonnement wird die URL angezeigt. Die Kalendereigenschaften öffnet man, indem man in der Navigationsleiste des Kalenderprogramms auf das Bleistiftsymbol klickt.

DAVdroid Einstellungen

  • Kontaktgruppen Methode

Horde unterstützt keine Gruppen in den Kontakten. Um Probleme zu vermeiden, sollte folgende Einstellung vorgenommen werden:

Gruppen sind Kategorien der Kontakte

Siehe: https://www.davdroid.com/tested-with/horde/

Thunderbird Synchronisation

TbSync

Das Thunderbird Addon TbSync ermöglicht die Synchronistation von Kalender und Kontakten über CalDAV / CardDAV.

Zusätzlich braucht man das Addon Provider für CalDav und CardDav.
  • TbSync konfigurieren
Extras / AddOn Einstellungen / TbSync

Nun kann man ein neues CalDav / CardDav Konto hinzufügen, indem man die Benutzerdefinierte Konfiguration wählt

Serveradresse: https://myhost.example.com/hordePfad/rpc.php

Nach erfolgter Synchronisation hat man ein neues Adressbuch mit dem Namen des eben erstellten Kontos.

  • Kontaktgruppen

Die Verteilerlisten von Thunderbird sind offenbar nicht direkt synchronisierbar.

Mit dem Addon Category Manager kann man die Verteilerlisten ersetzen, indem man Nachrichten an die Mitglieder einer Kontaktkategorie sendet.

Imp Webmail

  • Backend

Für IMP muss ein Backend konfiguriert werden. Das geht nicht im Webinterface. Das Backend (IMAP oder POP3) wird in der Datei imp/config/backends.local.php definiert.

// IMAP server
$servers['imap'] = array( 
   // ENABLED by default; will connect to IMAP port on local server
   'disabled' => false,
   'name' => 'IMAP_Server@t2792.greatnet.de',  
   'hostspec' => 'localhost',
   'hordeauth' => false,
   'protocol' => 'imap',
   'port' => 143,
   'secure' => 'tls',
);
  • HTML Nachrichten anzeigen

Aus Sicherheitsgründen werden HTML Nachrichten nicht direkt im Browser angezeigt. Dieses Verhalten kann man ändern:

Datei imp/config/mime_drivers.local.php erzeugen mit folgendem Inhalt:
<?php
   $mime_drivers['html']['inline'] = true;
?>

Kronolith - Kalender

Kalender in Thunderbird abonnieren

Einen neuen Kalender erstellen

Datei / Neu / Kalender / Im Netzwerk

Dann die Adresse des Kalenders eingeben.

https://example.com/horde/rpc.php/calendars/username/calendar:xyxyxy_ID/

Die richtige Adresse findet man in den Kalender Eigenschaften.

  • In Kronolith auf das Bleistift - Symbol klicken.
  • Im Tab Abonnement wird ein Link angezeigt.
  • Nun kann man die Adresse kopieren, um sie in Thunderbird einzufügen.
Mehrere Kalender abonnieren

Wenn die Zugangsdaten der Kalender nicht gleich sind, gibt es ein Problem mit dem Passwortspeicher von Thunderbird.

Thunderbird speichert offensichtlich nur 1 Passwort für alle Kalender

Lösung bzw. Workaround: In der erweiterten Konfiguration folgende Option setzen

calendar.network.multirealm = true

Gastkonto

Man kann über folgende URL über das Gastkonto ohne Passworteingabe auf einen Kalender zugreifen

# Beispiel
https://example.com/horde/kronolith/?display_cal=internal_gO8Nq6nq9Bu71TwWNl148w1

Leider weiß ich nicht mehr, woher ich diese Information habe, es funktioniert aber.

Mit einem Link dieser Art bekommt man als Gast Zugang zum Kalender. Die Berechtigungen, die dieser Gastbenutzer haben soll, sollten vorher in den Kalender Eigenschaften definiert werden.
Einstellungen des Gastkontos

Die Kalendereinstellungen werden normalerweise per User gespeichert. Da dem Gastkonto kein User zugeordnet ist, müssen die Default Einstellungen geändert werden, was nur manuell geht. Hier ein Beispiel für SUSE Linux. Die Konfiguration befindet sich in

/srv/www/htdocs/horde/kronolith/config/prefs.php

Diese Datei sollte man aber nicht verändern, statt dessen eine neue Datei anlegen

cd /srv/www/htdocs/horde/kronolith/config
touch prefs.local.php

In dieser Datei definiert man die gewünschten Änderungen. Das heißt, man kopiert sie aus prefs.php und ändert dann nach Bedarf, hier ein Beispiel:

<?php
// Erster Wochentag soll Montag sein
$_prefs['week_start_monday']['value'] = '1';
// Zeit im 24 Stunden Format
$_prefs['twentyFour']['value'] = true;
Achtung: Nicht vergessen auf den PHP Eröffnungstag: <?php

Turba - Adressbuch

Adressbuch Layout ändern

Vorlagen für das Layout

vendor/horde/turba/config/backends.php

In folgender Datei kann man das Layout anpassen:

vendor/horde/turba/config/backends.local.php

Input Typen für Formularfelder: https://wiki.horde.org/Doc/Dev/FormTypes

Gollem Dateimanager

Es muss ein Backend konfiguriert werden.

In der Datei gollem/config/backends.php sind verschiedene Backends vorkonfiguriert. Dieses Skript sollte man nicht bearbeiten, da es bei Updates überschrieben wird.
  • Override

Den Code für das Backend kopieren und im Unterverzeichnis backends.d ablegen.

Backend: Lokales Filesystem

# gollem/config/backends.d/20-groupware.php
$backends['ftp']['disabled'] = true;
$backends['sqlhome']['disabled'] = true;
 
$backends['file'] = array(
   'disabled' => false,
   'name' => 'Virtual Home Directories',
   'driver' => 'file',
   'hordeauth' => true,
   'params' => array(
       'vfsroot' => '/srv/www/htdocs/vfs',
       'permissions' => '755'
   ),
   'loginparams' => array(),
   'root' => '/'.$GLOBALS['registry']->getAuth(),
   'home' => '/'.$GLOBALS['registry']->getAuth(),
   'createhome' => true,
   // 'filter' => '^regex$',
   // 'quota' => false,
   'shares' => true,
   'attributes' => array(
       'type',
       'name',
       'share',
       'edit',
       'download',
       'modified',
       'size',
   )

);

Troubles

Bugtracker: https://bugs.horde.org/

Testscript

www.example.com/horde/test.php

Diese Seite zeigt, ob etwas fehlt.

UTF-8

Fehlermeldung nach dem Login

A fatal error has occurred utf8 is not supported by MySQL

Konfiguration horde/config/conf.php ändern

# $conf['sql']['charset'] = 'utf-8';
$conf['sql']['charset'] = 'utf8mb4';

Horde im Internet

Dokumentation

Horde Wiki

https://www.omerzu.de/horde.php