21 Mai 2015

[Howto] Owncloud Auto-Setup mit LDAP-Anbindung

Owncloud erfreut sich zunehmender Beliebtheit. Neben Universtitäten und Privatpersonen finden auch immer mehr Unternehmen Gefallen an der offenen und einfach zu benutzenden Filesharing-Lösung, bei der die Daten auf eigenen Servern verbleiben können. Um die Installation einer Owncloud-Umgebung zu vereinfachen beschreiben wir im Folgenden, wie diese inklusive der Anbindung an ein LDAP automatisiert möglich ist.

Datei-Austausch-Dienste wie Dropbox und Google Drive erfreuen sich reger Beliebtheit. Mit ihrer Hilfe können Dateien wie Urlaubsfotos, aber auch Protokolle und Geschäftsberichte einfach zwischen Nutzern und verschiedenen Geräten ausgetauscht werden. Doch gerade geschäftskritische oder persönliche Daten möchten viele Nutzer nur ungern auf die Server fremder Firmen hochladen. Gerade in Hinblick auf mögliche Datenschutz-Bedenken, aber auch unter Berücksichtigung der Veröffentlichungen von Edward Snowden, haben daher so genannte private Cloud-Lösungen mehr und mehr an Bedeutung gewonnen.

Das vor 5 Jahren ins Leben gerufene ownCloud Projekt ist hier ein Vorreiter: es bietet Nutzern die Möglichkeit, in eigener, kontrollierter Umgebung eine Filehosting-Umgebung zur Verfügung zu stellen, die sehr benutzerfreundlich zu bedienen ist und auf einer großen Auswahl von Geräten und Betriebssystemen funktioniert. So haben sich z.B. mehrere Universitäten in Deutschland zusammengeschlossen und bieten auf Basis von ownCloud unter dem Projekt sciebo einen Datei-Austausch-Dienst für mehr als 300.000 Studenten an, der insgesamt 5 Petabyte Speicherplatz bereitstellt.

Auch Unternehmen greifen vermehrt auf ownCloud als eigene, interne Filehosting-Lösung zurück. Dabei greift ownCloud für die Authentifizierung meist auf eine LDAP-Schnittstelle zurück, in der die relevanten Unternehmens-Mitarbeiter eingetragen sind. Die Herausforderung im Enterprise-Umfeld ist aber das automatische Deployment: umfangreiche IT-Setups werden heutzutage üblicherweise mit Puppet, Ansible oder ähnlichen Werkzeugen verwaltet und in Docker-Containern oder VMs bereit gestellt. Diese erfordern, dass die Software vollständig ohne manuelle Interaktion installiert und konfiguriert wird. Der bei ownCloud übliche Ansatz ist jedoch, nach der Installation die Webseite der ownCloud-Instanz aufzurufen und diverse Schritte von Hand durchzuführen.

Die Installation von ownCloud kann über Pakete erfolgen. Dies erfordert üblicherweise keine Benutzerinteraktion. Die Erstkonfiguration, bei der im Webinterface der Admin-Nutzer und die Datenbank angegeben werden müssen, kann automatisiert erfolgen, in dem entsprechende Angaben in der Datei $owncloud/config/autoconfig.php hinterlegt werden: bei jedem ownCloud-start wird geprüft, ob die Datei vorliegt. In dem Fall werden alle notwendigen Einstellungen übernommen und damit die maßgebliche config.php befüllt. Die autoconfig.php ist ähnlich aufgebaut wie die config.php:

<?php
$AUTOCONFIG = array (
  'directory' => '/var/www/html/owncloud/data',
  'adminlogin'    => 'mmu',
  'adminpass'     => '123456',
  'dbtype'        => 'pgsql',
  'dbname'        => 'owncloud',
  'dbuser'        => 'postgres',
  'dbpass'        => '123456',
  'dbhost'        => '192.168.123.45',
  'dbtableprefix' => 'oc_',
);

Die config.php kann in dem Fall trotz allem schon existieren und andere statische Konfigurations-Optionen wie zum Beispiel für Proxies enthalten. Weitere Informationen zur Auto-Konfiguration finden sich in entsprechenden Abschnitt des ownCloud-Admin-Handbuchs.

Damit die automatische Konfiguration alle notwendigen Einträge erstellt, muss aber ownCloud einmalig aufgerufen werden. Dies geht am einfachsten mit einem curl-Aufruf: curl -s -k 127.0.0.1/owncloud/ > /dev/null. Dieser veranlasst ownCloud dazu, einmalig alle notwendigen Schritte durchzuführen, die DB-Einträge zu erstellen, etc. Mit ownCloud 8.1 wird es übrigens einen ownCloud-eigenen Befehl dafür geben, siehe auch pull request #14416 bei Github.

Im Anschluss daran muss die LDAP-App aktiviert und konfiguriert werden. Seit ownCloud 8.0 und dank dieses Patches von mark0n ist es möglich, dies vollständig über die Kommandozeile mit Hilfe des ownCloud-eigenen PHP-Scripts occ umzusetzen. Die wesentlichen Schritte dazu sind:

php -f $ocpath/occ app:enable user_ldap
php -f $ocpath/occ ldap:create-empty-config
php -f $ocpath/occ ldap:set-config "" ldapHost 192.168.123.11
php -f $ocpath/occ ldap:set-config "" ldapPort 389
php -f $ocpath/occ ldap:set-config "" ldapBase \"dc=example,dc=net\"
php -f $ocpath/occ ldap:set-config "" ldapConfigurationActive 1

Dabei ist zu beachten, dass alle Befehle als der Nutzer des Webservers ausgeführt werden. Dass die Konfiguration korrekt übernommen wurde kann ebenfalls mit Hilfe von occ geprüft werden: php -f $ocpath/occ ldap:show-config. Die Ausgabe zeigt die aktuell bestehende LDAP-Konfiguration von ownCloud, und damit auch alle möglichen weiteren Konfigurationsoptionen.

Abschließend lässt sich sagen, dass ownCloud auch mit LDAP-Anbindung gut automatisiert aufgesetzt werden kann, sofern in Kauf genommen wird, dass einige direkte Befehle abgesetzt werden. Wünschenswert wäre hier, wenn das dahinterliegende Konfigurationsformat besser dokumentiert wäre, um dies direkt zu verteilen statt php-Befehle auszuführen.

Alle bisher erschienen Einträge zum Thema Automatisierung finden sich in der Kategorie Konfigurationsmanagement. Bei weiteren Fragen zu Services und Support rund um ownCloud, Puppet oder Ansible, insbesondere bei komplexeren Setups, stehen wir natürlich auch gerne zur Verfügung.

 

Dieser Artikel wurde ursprünglich geschrieben von Roland Wolters.

Kategorien: HowTos
Tags: Owncloud Puppet

SH

über den Autor

Sascha Heuer


Beitrag teilen: