Page 1 of 1

Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Thu 31. Mar 2022, 16:29
by JensE
Ich habe keine Anleitung gefunden, Horde bei KeyHelp als Webmailer zu installieren.
Daher habe ich mir die Mühe gemacht, das selbst zu installieren, da es ein Kunde unbedingt haben wollte.

Zum eigenen Nachschlagen und für alle anderen, die ebenfalls Horde installieren wollen, will ich hier mal die Installationsschritte beschreiben, die ich gemacht habe.

Basis: Debian 11 / KeyHelp 22.0

Als erstes in KeyHelp vorbereiten:

- Neuen User "horde" in KeyHelp anlegen:
Beim Anlegen habe ich folgende Einstellungen geändert:
Allgemein->System-Domain erstellen NEIN
Ressoucen & Berechtigungen
-> Speicherplatz unbegrenzt, Domains 1 Datenbanken 1 Domain-Sicherheit JA
Unter PHP ist es wichtig, das Verzeichnis /usr/share/php in open_basedir einzutragen.

- Datenbank für horde anlegen

- Domain für horde anlegen (darüber wird Horde erreichbar sein)
Ich habe die Domain webmail.domain.de verwendet. Da domain.de aber einem anderen user gehört, war das etwas tricky.
1. Als user der Domain domain.de die Domain webmail.domain.de anlegen.
Da webmail.domain.de nun aber dem falschen user gehört, müssen wir das direkt in der Datenbank keyhelp ändern.
KeyHelp lässt es nicht zu, das Subdomains bei einem anderen user angelegt werden, als dem user, der die Hauptdomain angelegt hat.
Deshalb müssen wir die DB keyhelp öffnen und nach der user_id des users horde suchen. Die steht in der Tabelle 'users' in der Spalte 'id'
Wenn wir die ID des horde-users kennen können wir zur Tabelle 'domains' wechseln und diese dort in das Feld 'id_user' unserer Webmail-Domain eintragen.
Anschließend finden wir die Webmail-Domain beim user horde und können die hier konfigurieren und das SSL-Zertifikat einrichten.

Nun geht es auf der Konsole als root weiter:
Horde lässt sich einfach mit folgenden Befehlen über PEAR installieren:

# fehlende php extension tidy installieren
apt-get install php-tidy

# Horde PEAR channel registrieren:
pear channel-discover pear.horde.org

# Das Installationsverzeichnis für Horde setzen:
pear install horde/horde_role
pear run-scripts horde/horde_role
# bei Abfrage "Filesystem location for the base Horde application:"
-> Web-Pfad des horde-Users angeben: /home/users/horde/www/

# Horde Groupware Webmail Edition installieren:
pear install -a -B horde/webmail

# Nun das Installationsscript starten und die Fragen beantworten
webmail-install
#folgende Fragen beantworten
What database backend should we use?
-> mysqli
Username to connect to the database as* []
-> DB-User der HORDE-DB
Password to connect with
-> DB-Passwort der HORDE-DB
How should we connect to the database?
-> ENTER
Location of UNIX socket []
-> ENTER
Database name to use* []
-> DB-Name der HORDE-DB
Internally used charset* [utf-8]
-> utf8mb4
Use SSL to connect to the (DB-)server?
-> false
Split reads to a different server?
-> false
Should Horde log all queries.
-> 0

# standard-Website von Keyhelp aus dem Web-root löschen, damit auch HORDE angezeigt wird
rm /home/users/horde/www/index.html
rm /home/users/horde/www/bulma.min.css

Horde sollte nun über die Domain webmail.domain.de erreichbar sein.
--------------
Wenn sich horde nicht auf deutsch umstellen lässt, prüfen, ob die deutschen locale installiert sind.
Das geht ebenfalls in der Konsole als root

# welche Locale sind installiert?
locale

# benötigte locale installieren
dpkg-reconfigure locales

# standard locale setzen
localectl set-locale LANG=de_DE.UTF-8

WICHTIG: Server neu starten bzw Konsole neu starten, damit die Änderungen wirksam werden.

Viel Spaß nun mit horde.

PS.: Hier noch der Link zur offiziellen Installationsanleitung
https://www.horde.org/apps/webmail/docs/INSTALL



[Mod-Edit]
Thread nach Bastelecke verschoben.

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Thu 31. Mar 2022, 16:38
by 24unix
JensE wrote: Thu 31. Mar 2022, 16:29 Unter PHP ist es wichtig, das Verzeichnis /usr/share/php in open_basedir einzutragen.
Warum das?
JensE wrote: Thu 31. Mar 2022, 16:29 localectl set-locale LANG=de_DE.UTF-8
Damit vergnaddelst Du doch das Setup des gesamten Servers.
Wenn Horde das wirklich braucht, dann würde ich das maximal für den einen User machen, besser noch über die Umgebungsvariablen nur für Horde.

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Thu 31. Mar 2022, 17:32
by Jolinar
JensE wrote: Thu 31. Mar 2022, 16:29 - Domain für horde anlegen (darüber wird Horde erreichbar sein)
Ich habe die Domain webmail.domain.de verwendet. Da domain.de aber einem anderen user gehört, war das etwas tricky.
1. Als user der Domain domain.de die Domain webmail.domain.de anlegen.
Da webmail.domain.de nun aber dem falschen user gehört, müssen wir das direkt in der Datenbank keyhelp ändern.
KeyHelp lässt es nicht zu, das Subdomains bei einem anderen user angelegt werden, als dem user, der die Hauptdomain angelegt hat.
Deshalb müssen wir die DB keyhelp öffnen und nach der user_id des users horde suchen. Die steht in der Tabelle 'users' in der Spalte 'id'
Wenn wir die ID des horde-users kennen können wir zur Tabelle 'domains' wechseln und diese dort in das Feld 'id_user' unserer Webmail-Domain eintragen.
Das bekommst du mit Bordmitteln hin...
Als Admin die Domain webmail.domain.de als Domain (nicht als Subdomain) anlegen und dem User Horde zuweisen...fertig. 8-)

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Mon 2. May 2022, 22:01
by JensE
Jolinar wrote: Thu 31. Mar 2022, 17:32
JensE wrote: Thu 31. Mar 2022, 16:29 - Domain für horde anlegen (darüber wird Horde erreichbar sein)
Ich habe die Domain webmail.domain.de verwendet. Da domain.de aber einem anderen user gehört, war das etwas tricky.
1. Als user der Domain domain.de die Domain webmail.domain.de anlegen.
Da webmail.domain.de nun aber dem falschen user gehört, müssen wir das direkt in der Datenbank keyhelp ändern.
KeyHelp lässt es nicht zu, das Subdomains bei einem anderen user angelegt werden, als dem user, der die Hauptdomain angelegt hat.
Deshalb müssen wir die DB keyhelp öffnen und nach der user_id des users horde suchen. Die steht in der Tabelle 'users' in der Spalte 'id'
Wenn wir die ID des horde-users kennen können wir zur Tabelle 'domains' wechseln und diese dort in das Feld 'id_user' unserer Webmail-Domain eintragen.
Das bekommst du mit Bordmitteln hin...
Als Admin die Domain webmail.domain.de als Domain (nicht als Subdomain) anlegen und dem User Horde zuweisen...fertig. 8-)
Danke für den Tipp. Ich hatte das auf einem Testserver ausprobiert. Dort konnte ich die webmail.domain.de nicht bei einem anderen User anlegen. Jetzt auf dem Produktivserver hat das funktioniert.
Ich würde meinen ersten Post gerne korrigieren. Kann ich den irgendwo bearbeiten?

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Mon 2. May 2022, 22:11
by JensE
24unix wrote: Thu 31. Mar 2022, 16:38
JensE wrote: Thu 31. Mar 2022, 16:29 Unter PHP ist es wichtig, das Verzeichnis /usr/share/php in open_basedir einzutragen.
Warum das?

Weil unter diesem Pfad die PEAR-Pakete liegen. Ist der Pfad nicht eingetragen, kommt folgende Error-Meldung:
PHP Warning: require_once(): open_basedir restriction in effect. File(/usr/share/php/Horde/Autoloader/Default.php) is not within the allowed path(s):
JensE wrote: Thu 31. Mar 2022, 16:29 localectl set-locale LANG=de_DE.UTF-8
Damit vergnaddelst Du doch das Setup des gesamten Servers.
Wenn Horde das wirklich braucht, dann würde ich das maximal für den einen User machen, besser noch über die Umgebungsvariablen nur für Horde.
Da magst du recht haben. Auf meinem Produktiv-Server habe ich das auch nicht gebraucht.

Was man auch nicht vergessen darf ist, die ganzen gesperrten Funktionen unter PHP disable_functions im horde-Profil zu löschen. Sonst funktioniert die Hälfte von Horde nicht...

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Tue 3. May 2022, 09:07
by Jolinar
JensE wrote: Mon 2. May 2022, 22:01 Ich würde meinen ersten Post gerne korrigieren. Kann ich den irgendwo bearbeiten?
Das geht leider nur für eine gewisse Zeitspanne.
Du hast zwei Möglichkeiten:
1. Du schreibst deine Änderungen in weiteren Posts fort (ist ja schließlich auch dein Thread ;) ), so kann man die Entwicklung deines "Bastelprojekts" verfolgen und nachvollziehen.
2. Sollten es nur punktuelle Änderungen sein, die du im Startpost gemacht haben willst, kannst du auch einen der Moderatoren per PN kontaktieren und die gewünschten Änderungen mitteilen, dann wird das auch entsprechend im Startpost angepaßt.

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Tue 3. May 2022, 10:09
by JensE
Okay, bei der Installation und dem anschließenden Testen auf dem Produktivserver haben sich noch ein paar Änderungen / Ergänzungen ergeben. Ich fasse die mal kurz zusammen:

Beim KeyHelp-User horde musste ich noch folgende Anpassungen in den PHP-Einstellungen vornehmen:
open_basedir musste ich noch um den Ordner ##DOCROOT##/tmp/.. erweitern, da ich sonst in Horde keine Sessions anzeigen lassen konnte.
Der Eintrag dafür sieht jetzt so aus:

open_basedir:
##DOCROOT##/www:##DOCROOT##/files:##DOCROOT##/tmp:/usr/share/php:##DOCROOT##/tmp/..

Die Einträge in disable_functions habe ich alle gelöscht, da sonst keine Logs geschrieben werden können und sonst sehr viel in Horde nicht funktioniert.

Unter Ressourcen & Berechtigungen habe ich noch Domain-Sicherheit und Zertifikatsverwaltung aktiviert, damit ich das Lets Encrypt Zertifikat als horde verwalten kann.

Bei der Domain webmail.domain.de

Die Domain konnte ich ohne Eingriff in die DB anlegen. Wichtig ist die Domain als Hauptdomain anzulegen.

PS: Was ich nur nicht verstehe, warum muss ich den Ordner ##DOCROOT##/tmp/.. in open_basedir angeben, wenn doch schon der Ordner ##DOCROOT##/tmp angegeben ist. Der Ordner sollte doch schon erlaubt sein, da es ein Unterordner ist. Vielleicht weiß jemand warum und kann mir das erklären...

Re: Horde Groupware 5.2.22 auf einem KeyHelp-Server installieren

Posted: Tue 3. May 2022, 10:39
by 24unix
JensE wrote: Tue 3. May 2022, 10:09 PS: Was ich nur nicht verstehe, warum muss ich den Ordner ##DOCROOT##/tmp/.. in open_basedir angeben, wenn doch schon der Ordner ##DOCROOT##/tmp angegeben ist. Der Ordner sollte doch schon erlaubt sein, da es ein Unterordner ist. Vielleicht weiß jemand warum und kann mir das erklären...
Mit dem ".." gehst Du eine Ebene höher, effektiv gibst Du damit also das komplette DocRoot frei.