Original-URL des Artikels: https://www.golem.de/news/eigene-cloud-daten-nach-hause-holen-1406-107155.html    Veröffentlicht: 16.06.2014 12:18    Kurz-URL: https://glm.io/107155

Eigene Cloud

Daten nach Hause holen

Wer nicht will, dass seine Daten irgendwo auf fremden Servern liegen, sollte sie nach Hause holen. Wir erklären, wie ein eigener kleiner Server für Cloud-Daten eingerichtet wird. Er könnte auch E-Mails sammeln und als Media-Server dienen.

Private Daten gehören einfach nicht auf fremde Server. Sie sind am besten zu Hause aufgehoben, auf einem Heimserver. Auf ihm sollen zunächst Dokumente, Fotos oder Musik gelagert werden, auf die wir auch über das Internet zugreifen können - er ist also unser privater Cloud-Server. Später soll der Server auch unsere E-Mails abholen, er könnte sogar als Multimediacenter genutzt werden.

Wir haben bereits Owncloud und Seafile auf dem Raspberry Pi installiert, jetzt wollen wir einen kräftigeren Rechner verwenden. Später soll er so ausgebaut werden, dass er unsere E-Mails sammelt und zu Hause speichert. Als Server eignet sich beispielsweise ein NUC oder ein anderer preiswerter Mini-PC. Die meisten Varianten haben genug Rechenleistung, um als Dateiserver mit Owncloud oder Seafile eingesetzt zu werden.

Üben in der virtuellen Maschine

Wer erst üben will, kann das beispielsweise in einer virtuellen Maschine tun. Das hat den Vorteil, dass auch Kombinationen mit mehreren Datenträgern ausprobiert werden können, etwa wenn das Betriebssystem auf einem knappen internen Speicher installiert werden soll, während die eigentlichen Daten auf einem zweiten größeren Laufwerk liegen, das an einem externen USB-3.0- oder SATA-Anschluss hängt. Genau für dieses Szenario ist unsere Partitionierungsanleitung.

Als Betriebssystem verwenden wir Debian in der aktuellen Version 7.5. Vor der eigentlichen Installation muss der externe Datenträger bereits angeschlossen werden, darauf befindliche Daten werden bei der Installation gelöscht, da der Datenträger später verschlüsselt wird.

Immer erreichbar

Damit unser Cloud-Server auch im Internet erreichbar ist, benötigen wir zunächst einen eigenen Domain-Namen (Dynamic Domain Name Service, DDNS), den wir beispielsweise beim Dyndns-Anbieter No-IP erhalten. Die meisten Router bieten entsprechende Konfigurationsmöglichkeiten für solche dynamischen Domainnamen.

Da wir über eine schnelle Internetverbindung verfügen, installieren wir Debian über das Netzwerk mit Hilfe des kleinen 64-Bit-Netinstall-Images, das es auch für USB-Sticks gibt. Alternativ lassen sich auch CD- oder DVD-Images herunterladen und auf einem USB-Stick installieren.

Schritt für Schritt

Im Startbildschirm wählen wir die Option Graphical Install und konfigurieren zunächst Sprache, Ländereinstellungen und Tastatur. Der Rechnername lässt sich frei wählen. Im nächsten Schritt fügen wir den dynamischen Domain-Namen ein, den wir uns zuvor besorgt haben. Danach wird das Root-Passwort festgelegt, das wir später für administrative Zwecke benötigen werden. Anschließend wird ein Benutzerkonto angelegt und ebenfalls mit einem Passwort versehen.

Schwierige Plattenaufteilung

Jetzt werden die Datenträger eingerichtet. Eines vorweg: Das Partitonierungsprogramm des Debian-Installers ist für Einsteiger alles andere als intuitiv. Auch deshalb raten wir dazu, die Installation zunächst in einer virtuellen Maschine auszuprobieren. Vor allem das Anlegen verschlüsselter Partitionen ist zum einen etwas verwirrend, zum anderen lassen sie sich im Installer nicht mehr löschen, während nicht verschlüsselte Partitionen wieder entfernt und neu angelegt werden können.

Damit die Datenpartition später verschlüsselt werden kann, verlangt der Debian-Installer, dass auch die Swap-Datei verschlüsselt wird. Das ist durchaus sinnvoll. Der Nachteil ist, dass bei einem Neustart des Servers, etwa nach einem Update des Linux-Kernels, die Kennwörter zum Einbinden der verschlüsselten Partitionen eingegeben werden müssen. Wenn der persönliche Cloud-Server normalerweise unbeaufsichtigt in der Ecke steht, muss der Nutzer also in diesem Fall den Neustart an Tastatur und Bildschirm begleiten. Updates kommen recht häufig vor und da der Server direkt am Internet hängt, sollten Aktualisierungen möglichst zeitnah eingespielt werden.

Das Für und Wider der Verschlüsselung

Selbst wenn der Server in den Ruhezustand geht, müssen nach dem Aufwachen die Passphrasen für die verschlüsselten Partitionen erneut eingegeben werden. Es gibt zwar die Möglichkeit, statt mit einer Passphrase verschlüsselte Datenträger automatisch mit erstellten Schlüsseln freizuschalten, die beispielsweise auf einem USB-Stick ausgelagert werden können und nur beim Systemstart benötigt werden. Im Installer gelang uns eine solche Konfiguration aber nicht. Versierte Anwender können dies später an der Kommandozeile nachholen.

Bleibt die Frage, ob es überhaupt sinnvoll ist, auch die Partitionen zu verschlüsseln, zumal sowohl Seafile als auch Owncloud interne Verschlüsselungsoptionen mitbringen. Während des Betriebs kann ein Angreifer, der sich Zugang zu dem System verschafft hat, ohnehin auf die Daten auf den verschlüsselten Partitionen zugreifen, solange sie im Dateisystem eingebunden sind. Wirklich sicher sind sie nur, wenn der Server ausgeschaltet ist. Wir erklären deshalb im Folgenden, wie Partitionen im Debian-Installer verschlüsselt werden können, wirklich notwendig ist das aber nicht.

Swap und Co.

Im Partitionsmenü wählen wir per Doppelklick zunächst den Eintrag manuell und den Datenträger aus, auf dem später das Betriebssystem installiert werden soll. Dort richten wir eine neue Partitionstabelle ein. Danach markieren wir den Eintrag Freier Speicher und erstellen zuerst eine kleine Partition als Swap-Datei; sie sollte so groß sein wie der verfügbare Arbeitsspeicher. Wir definieren sie als primär, setzen sie im nächsten Schritt an den Anfang der Partition und benutzen sie als Auslagerungsdatei (Swap). Mit Anlegen der Partition beenden bestätigen wir unsere ersten Konfigurationseinstellungen.

Anschließend erstellen wir auf dem übrigen freien Speicher eine weitere primäre Partition mit dem Ext4-Dateisystem. Den Einbindungspunkt / für das Linux-Root-System definiert der Installer automatisch. Auch hier bestätigen wir unsere Einstellungen mit einem Doppelklick auf Anlegen der Partition beenden. Falls bis hierhin etwas schief läuft, kann die Partitionierung durch das Klicken auf Zurück und im Hauptmenü über die Option Festplatten partitionieren erneut gestartet werden. Wer nur eine Festplatte im Server verwenden will, ist jetzt mit der Partitionierung fertig. Falls ein weiterer Datenträger angeschlossen ist, erstellen wir darauf ebenfalls eine neue Ext4-Partition und wählen als Einhängepunkt /home.

Kryptographische Festplatten

Wer jetzt die Partitionen verschlüsseln will, klickt auf den Eintrag mit dem Namen Verschlüsselte Datenträger konfigurieren und anschließend auf Verschlüsselte Datei erzeugen. Dort wählen wir zunächst die Swap-Partition aus. Sie wird automatisch mit AES bei einer Schlüssellänge von 256 Bit eingerichtet. Wer eine alternative Verschlüsselung verwenden will, wählt hier stattdessen Blowfish oder Twofish. Den Standard-Eintrag für den IV-Algorithmus belassen wir bei Xts-plain64. Er gilt als sicher, platzsparend und schnell. Nachdem wir die Änderungen übernommen haben, werden unter Umständen die Partitionstabellen aktualisiert. Anschließend klicken wir auf Anlegen der Partition beenden und im folgenden Dialogfeld auf fertigstellen. Jetzt kommt die Aufforderung, eine Passphrase einzugeben, die tunlichst nicht vergessen werden sollte. Auf gleiche Weise wird die Partition des externen Datenträgers verschlüsselt.

Zurück im Hauptfenster des Partitionierungsmenüs überprüfen wir nochmals das neue Partitionslayout. Vor allem das Dateisystem der Swap-Partition setzt der Installer nach der Verschlüsselung regelmäßig auf Ext4 zurück. Diese Partition öffnen wir nochmals per Doppelklick und wählen stattdessen unter Benutzen als wieder Auslagerungsdatei (Swap) aus. Beim externen Datenträger sollte nochmals überprüft werden, ob der Einbindungspunkt auf /home gesetzt ist. Mit einem Doppelklick auf Partitionierung beenden und Änderungen übernehmen schließen wir die Partitionierung ab.

Installiert und angepasst

Jetzt erfolgt die Installation des Grundsystems. Für die anschließende Konfiguration der externen Softwarequellen können einfach die nächsten drei Vorgaben übernommen werden. Aus denen lässt sich später Software nachinstallieren und - noch viel wichtiger - Updates herunterladen. Wer an der anonymen Statistiksammlung des Debian-Projekts teilnehmen möchte, kann im nächsten Dialogfeld die Option Ja wählen.

Nun folgt die Softwareauswahl. Hier deaktivieren wir zunächst den Eintrag Debian desktop environment, da wir unseren Rechner lediglich als Server verwenden wollen. Auch als Print-Server benötigen wir unseren Cloud-Server nicht. Stattdessen wählen wir die Einträge Web server, SQL database und SSH server. Abschließend wird der Bootloader Grub installiert. Nach einem Neustart steht unser Debian-Server bereit.

Angepasst

Für die weitere Konfiguration ist möglicherweise die Installation des Dateimanagers Midnight Commander sinnvoll. Über ihn können wir uns durch das Dateisystem hangeln, er ist nach der Installation mit dem Texteditor Nano verknüpft. Mit Alt-F4 lassen sich so Konfigurationsdateien im Midnight Commander direkt zum Editieren öffnen. In Nano lässt sich mit Strg-W nach Zeichenketten suchen. Mit Strg-O werden die Änderungen gespeichert. Mit Strg-X lässt sich der Editor schließen. Wir loggen uns zunächst als normaler Benutzer samt Passwort ein. Danach geben wir su ein und reichen das Root-Passwort nach, um Administratorrechte zu erhalten. Jetzt geben wir apt-get update und apt-get upgrade ein, um das System auf den aktuellen Stand zu bringen. Den Midnight Commander installieren wir anschließend mit apt-get install mc.

Damit der Server immer unter der gleichen IP-Adresse erreichbar ist, wird die Textdatei /etc/network/interfaces angepasst. Statt des Eintrags iface eth0 inet dhcp müssen dann folgende Zeilen eingetragen werden:

iface eth0 inet static
address *IP-Adresse*
netmask 255.255.255.0
gateway *IP-Adresse des Routers*.

Danach wird das Netzwerk-Subsystem unseres Cloud-Servers mit dem Befehl /etc/init.d/networking restart neu gestartet. Eine feste IP-Adresse stört einen DHCP-Server im Netzwerk nicht, solange diese Adresse nicht bereits von einem anderen Gerät verwendet wird und sich möglichst in einem anderen Subnetz befindet. Wenn der Heimrouter beispielsweise IP-Adressen im Bereich 192.168.0/24 vergibt, sollte für den Server etwa 192.168.1.1 ausgewählt werden.

Weitergeleitet

Im Router muss zusätzlich eine Weiterleitung zu unserem Cloud-Server auf Port 80 und 443 eingerichtet werden. Dazu benötigt der Server jedoch eine statische IP-Adresse im internen Netzwerk. Ein weiterer Vorteil einer festen IP-Adresse: Wir können den Server im internen Netzwerk über SSH verwalten, ohne mühsam die IP-Adresse zu ermitteln. Von Windows aus lässt sich das beispielsweise mit Putty erledigen.

In einem ersten Test wollen wir eine Weiterleitung für einen externen SSH-Zugang einrichten, der später zur Fernwartung dienen kann. SSH müssen wir aber noch absichern, wenn der Debian-Server direkt über Internet erreichbar ist. Er soll über einen anderen Port erreichbar sein als über den Standard-Port 22 und das Login als Administrator Root nicht zulassen. Dazu öffnen wir die Konfigurationsdatei /etc/ssh/sshd_config. Hinter dem Eintrag Port ersetzen wir den Standard-Port mit einer eigenen Portnummer, etwa zwischen 20.000 und 30.000. Diese sind selten besetzt. Wenn wir uns später einloggen wollen, setzen wir die alternative Port-Nummer hinter den Schalter -p, etwa ssh -p 23417. Damit wird eine unablässige Prüfung nach offenen SSH-Standard-Ports durch Bots oder Skripts vermieden.

Abgesichert

Falls die Konfiguration des Routers es zulässt, kann auch dort eine Weiterleitung von dem neu definierten Port auf den Standardport 22 auf dem Debian-Server eingerichtet werden. Dann kann der Eintrag dort so bleiben, wie er ist. Sicherer ist es aber, den Port auf beiden Geräten zu ändern.

Außerdem soll Root der direkte Zugang verwehrt werden und nur ein einziger Benutzer soll sich auf den Server über SSH einloggen können. Dazu tragen wir in der Konfigurationsdatei folgende Zeilen ein: PermitRootLogin No und AllowUsers *Benutzername*. Der Benutzername ist das Kürzel des Benutzers, den wir bei der Installation eingerichtet haben. Mit den Zeilen LoginGraceTime 180 und MaxAuthTries 3 begrenzen wir die Zeit für Loginversuche auf drei Minuten und die Anzahl der Versuche auf drei. Künftig können wir uns dann mit ssh -p 23417 -l *Benutzerkürzel* *IP-Adresse des Debian-Servers* Zutritt zum Rechner verschaffen. Aus dem Internet funktioniert das Einloggen mit der IP-Adresse des Servers freilich nicht. Hier benötigen wir unsere DDNS-Adresse, die wir uns besorgt haben. Klappt alles, müsste der Server auch von einem Rechner aus dem Internet erreichbar sein. Wenn später alles richtig funktioniert, kann der entfernte SSH-Zugriff deaktiviert werden, indem die Weiterleitung im Router gelöscht wird.

Owncloud installieren und konfigurieren

In den offiziellen Debian-Softwarequellen der Linux-Distribution gibt es zwar bereits eine Owncloud-Version, die ist allerdings veraltet und funktioniert mit aktuellen Versionen des Owncloud-Clients nicht. Stattdessen richten wir für die aktuelle Version für Debian die offizielle Softwarequelle ein:

echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list

Mit

wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key

und

apt-key add - < Release.key

sichern wir die Softwarequelle noch mit einem Schlüssel ab. Dann folgt die eigentliche Installation mit apt-get update und apt-get install owncloud. Damit werden fast alle benötigten Komponenten automatisch installiert, etwa der Apache-Webserver. Aus Bequemlichkeit entscheiden wir uns für Mysql, das immer noch weit verbreitet ist. Sqlite hingegen ist leichtgewichtiger, stößt aber bei zahlreichen Benutzerzugriffen und vielen Dateien an Grenzen und ist zudem etwas langsamer als Mysql. Die Datenbank muss mit apt-get install sqlite installiert werden.

Mysql absichern

Den Mysql-Server installieren wir mit apt-get install mysql-server. Während der Installation muss ein beliebiges Administratorpasswort für die Datenbank gesetzt werden. Mit sudo mysql_secure_installation sichern wir unsere Mysql-Installation noch ab. Dabei werden sämtliche anonyme Benutzer entfernt, der Benutzer Root darf sich danach nur auf dem Server selbst in den Datenbankserver einloggen. Außerdem wird die Datenbank Test entfernt, die ohne Zugangsdaten genutzt werden kann. Alle Fragen des Konfigurationsprogramms können wir mit Ja beantworten.

Außerdem verwenden wir aus Sicherheitsgründen für unsere Owncloud-Installation einen eigenen Mysql-Benutzer. Dazu rufen wir den Kommandozeilenmodus der Datenbank mit mysql -uroot -p auf und geben unser zuvor gesetztes Administratorpasswort ein. Mit den Zeilen

CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'meinpasswort';

CREATE DATABASE IF NOT EXISTS owncloud;

GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' IDENTIFIED BY 'meinpasswort';

werden der Benutzer und die neue Datenbank namens owncloud angelegt und mit einem beliebigen Passwort versehen. Die Kommandozeile des Mysql-Servers verlassen wir mit quit.

Große Dateien speichern

Im Apache-Webserver müssen noch einige Anpassungen vorgenommen werden. Die Voreinstellungen verhindern beispielsweise, dass Dateien hochgeladen werden können, die größer sind als 2 MByte. Das auf dem Debian-System verwendete Dateisystem Ext4 kann durchaus mit Dateien in dieser Größe umgehen. Dafür muss in der Konfigurationsdatei /etc/php5/apache2/php.ini die Zeile upload_max_filesize angepasst werden. Hier kann ein beliebiger Wert gesetzt werden, auf die Leistung von Owncloud hat das keinen Einfluss. Wir haben uns für den Wert 4G entschieden, damit wir maximal 4 GByte große Dateien speichern können. Parallel dazu muss in der gleichen Konfigurationsdatei die Zeile post_max_size mit dem identischen Wert versehen werden. Schließlich muss noch der Wert output_buffering aktiviert und auf = 4096 gesetzt werden.

Damit die Daten zwischen Clientbrowser und dem Owncloud-Server im Netz verschlüsselt über SSL übertragen werden, müssen noch entsprechende Zertifikate bereitgestellt werden. Hier gibt es zwei Möglichkeiten. Es können selbst erstellte Zertifikate verwendet oder offizielle etwa bei einem kostenlosen Dienst bestellt werden.

Apache konfigurieren

Selbst erstellte Zertifikate eignen sich vornehmlich dann, wenn der Debian-Server immer im eigenen Netzwerk verwendet werden soll. Sowohl Owncloud-Clients als auch Browser beschweren sich naturgemäß über eigene Zertifikate. Sie lassen sich aber dennoch meist auf dem Clientrechner installieren und nutzen.

Eine Verschlüsselung ist allerdings zwingend notwendig, vor allem wenn wir auf unseren Server aus dem Internet zugreifen wollen, und besonders wenn die Verbindung über unverschlüsseltes WLAN erfolgt. Denn sonst können Angreifer sowohl übertragene Passwörter als auch die Daten im Klartext abgreifen. Zunächst aktivieren wir mit a2enmod ssl das SSL-Modul in Apache2 und erstellen mit mkdir -p /etc/apache2/ssl das Verzeichnis, in dem die Zertifikate abgelegt werden.

Wir generieren jetzt sicherheitshalber ein eigenes Zertifikat, das speziell für Owncloud bestimmt ist, kein Passwort benötigt und für ein Jahr gültig ist. Dazu geben wir folgenden Befehl ein:

openssl req -newkey rsa:4096 -sha512 -x509 -days 365 -nodes -keyout /etc/apache2/ssl/owncloud.key -out /etc/apache2/ssl/owncloud.crt

Bei Common Name muss der Name samt Domainname unseres Servers verwendet werden, der auch in der Datei /etc/hosts steht. Sonst funktioniert Webdav mit Owncloud nicht.

Virtueller Host

Wir kopieren im Verzeichnis /etc/apache2/sites-available die Konfigurationsdatei default-ssl mit dem Befehl cp nach owncloud. In dieser fügen wir unter der Zeile ServerAdmin die Zeile ServerName *Rechnername* und DocumentRoot /var/www/owncloud/ ein. Dann passen wir die Pfade in den Zeilen SSLCertificateFile und SSLCertificateKeyFile so an, dass sie zu den eben generierten owncloud.crt (das Zertifikat) und owncloud.key (der Schlüssel) zeigen. Vor den letzten beiden Zeilen legen wir noch folgenden Abschnitt an:


Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
Satisfy Any


Anschließend müssen noch die Befehle a2enmod rewrite und a2enmod headers ausgeführt werden, damit die Änderungen übernommen werden. Außerdem muss das Dav-Modul mit a2enmod dav_fs aktiviert werden. Der neue virtuelle Server wird mit a2ensite owncloud aktiviert. Schließlich wird der Webserver mit service apache2 restart neu gestartet.

Nginx statt Apache

Der Webserver Nginx ist leichtgewichtiger als Apache und lässt sich ebenfalls mit Owncloud nutzen. Zunächst müssen dazu die gleichen Änderungen in der Konfigurationsdatei php.ini vorgenommen werden wie bereits für Apache, etwa die Werte upload_max_filesize und post_max_size auf 4G und output_buffering auf 4096.

Da Apache automatisch mit Owncloud installiert wird, müssen wir den Webserver zunächst mit /etc/init.d/apache2 stop ausschalten. Nginx hingegen wird mit /etc/init.d/nginx start aktiviert. Damit beim Systemstart der richtige Webserver gestartet wird, entfernen wir den Apachedienst mit insserv -r apache2 aus der Startumgebung und fügen dort stattdessen mit insserv nginx den anderen Webserver hinzu.

Zertifikat für Nginx

Für eine verschlüsselte Verbindung mit Nginx benötigen wir auch hier unsere eigenen Schlüssel, die wir im Verzeichnis /etc/ssl/nginx ablegen wollen. Falls das Verzeichnis noch nicht existiert, legen wir es mit mkdir -p /etc/ssl/nginx an und wechseln mit cd dorthin. Anschließend geben wir den Befehl:

openssl req -newkey rsa:4096 -sha512 -x509 -days 365 -nodes -keyout /etc/ssl/nginx/owncloud.key -out /etc/ssl/nginx/owncloud.crt

Konfiguriert

Hier gelten die gleichen Regeln wie für den Apache-Server: Bei Common Name muss der Name unseres Debian-Servers verwendet werden, damit Webdav mit Owncloud funktioniert. Falls Owncloud sich bei der späteren Konfiguration darüber beschwert, dass Webdav doch nicht funktioniert, kann hier auch die IP-Adresse des Debian-Servers verwendet werden. Beiden Dateien geben wir mit chmod 600 owncloud.key und chmod 600 owncloud.crt die benötigten Rechte. Dann installieren wir noch den FastCGI Process Manager für PHP mit apt-get install php5-fpm.

Schließlich benötigen wir noch eine neue Konfigurationsdatei für unsere Owncloud-Webseite. Die lässt sich auf der Webseite des Projekts einsehen. Wir haben sie auch auf unseren Servern abgelegt, sie lässt sich von dort mit wget https://video.golem.de/download/13321 herunterladen und im Verzeichnis /etc/nginx/sites-available ablegen. Dort müssen die beiden Zeilen mit dem Servernamen angepasst und die Datei umbenannt werden, etwa in owncloud. Anschließend setzen wir einen symbolischen Link, um unseren neuen virtuellen Host zu aktivieren. Dazu wechseln wir in das Verzeichnis /etc/nginx/sites-enabled und geben dort den Befehl ln -s /etc/nginx/sites-available/owncloud owncloud ein. Anschließend starten wir den Webserver mit service nginx restart neu.

Owncloud starten und einrichten

Jetzt lesen wir die IP-Adresse des Debian-Servers mit dem Befehl ifconfig aus. Diesen geben wir im Firefox-Browser eines weiteren Rechners im lokalen Netz ein, beginnend mit https://. Es folgt die Aufforderung, dem Zertifikat zu vertrauen. Da wir das Zertifikat selbst erstellt haben, bestätigen wir die Abfrage. Einen Warnhinweis, dass die Datei Htaccess nicht verarbeitet werden kann, können wir ignorieren. Owncloud löscht sie später ohnehin, da sie von Nginx nicht verarbeitet wird.

Anschließend wird Owncloud konfiguriert. Zunächst wird ein Administratorkonto samt Passwort angelegt. Unter dem Dropdown-Menü Fortgeschritten wählen wir Mysql aus und geben dort die Werte ein, die wir zuvor bei der Einrichtung der Datenbank festgelegt haben. Unter Datenbank-Host muss localhost eingetragen werden. Hier können wir auch das Verzeichnis festlegen, auf dem später unsere Daten gespeichert werden sollen. Wenn beispielsweise bei der Installation des Debian-Servers ein zweiter Datenträger im Ordner /home/ eingehängt wurde, muss dort zunächst das Verzeichnis /home/owncloud angelegt werden, und mit chown www-data www-data /home/owncloud sowie chmod 770 müssen die entsprechenden Rechte gesetzt werden.

Owncloud verschlüsselt auch selbst

Danach ist die Owncloud-Oberfläche im Browser zu sehen. Rechts oben befinden sich der Benutzername und ein Dropdown-Menü mit dem Eintrag Administration. Dort lassen sich Feineinstellungen vornehmen und Fehlermeldungen einsehen. Links unten im Fenster ist ein Pluszeichen, über das sich weitere Apps installieren lassen.

Bereits installiert ist die Erweiterung Encryption, die dort aktiviert werden kann. Dann werden einige, aber nicht alle Dateien verschlüsselt, die bei Owncloud hochgeladen werden, etwa Dokumente. Anschließend ist eine Neuanmeldung fällig. Im Administrationsbereich lässt sich noch ein Wiederherstellungsschlüssel aktivieren, damit auch im Notfall die Daten wieder entschlüsselt werden können. Wem der Speicherplatz zu knapp wird, der kann dort weitere externe Datenträger einbinden.

Da Owncloud jetzt über HTTPS erreichbar ist, muss im Router noch eine entsprechende Weiterleitung eingerichtet werden. Die Port-Nummer einer verschlüsselten HTTP-Verbindung lautet 443. Jetzt sollte der Server auch über das Internet unter https://*DDNS-Domianname*/owncloud erreichbar sein. Testen lässt sich die externe Verbindung auch über die entsprechende Smartphone-App. Falls etwas nicht geklappt hat, lassen sich Fehlermeldungen entweder bei Owncloud selbst oder im System-Verzeichnis /var/log auslesen. Dort liegen die Logfiles von Apache und auch des SSH-Servers mit dem Namen auth.log.

Seafile installiert

Der Seafile-Server ist nicht in den offiziellen Softwarequellen diverser Linux-Distributionen zu finden. Stattdessen muss die Software direkt von der Webseite des Projekts heruntergeladen werden. Der Nachteil: Neue Versionen des Servers müssen erneut händisch von der Webseite des Projekts heruntergeladen und eingespielt werden. Deshalb empfiehlt ein Howto auf der Webseite des Projekts ein spezielles Verzeichnislayout, dem wir folgen.

Zunächst erstellen wir als normaler Benutzer den Ordner seafile in unserem Home-Verzeichnis. Wir wechseln mit cd seafile dorthin und geben dann den Befehl

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.0.4_x86-64.tar.gz

ein, um die Software von der Webseite des Projekts herunterzuladen. Anschließend wird das Tar.gz-Archiv mit tar -xzf seafile-server_* entpackt. Danach erstellen wir mit mkdir installed noch das entsprechende Verzeichnis und verschieben mit mv seafile-server_* installed das zuvor heruntergeladene Tar.gz-Archiv dorthin. Hier können später Archive aktuellerer Versionen des Seafile-Servers gespeichert werden.

Mysql oder Sqlite

Nun wechseln wir mit cd seafile-server-3.0.4 in den Ordner, in dem die zuvor entpackten Dateien liegen. Dort sind zahlreiche Shell-Skripts zu finden, die an der Endung .sh zu erkennen sind. Mit diesen erfolgt die Einrichtung des Seafile-Servers.

Zunächst müssen noch einige Python-Bibliotheken aus den Debian-Softwarequellen installiert werden. Folgender Befehl erledigt das in einem Rutsch:

sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging python-mysqldb

Anschließend starten wir mit ./setup-seafile-mysql.sh die Konfiguration der Mysql-Datenbank, für die wir das Administrator-Passwort der Datenbank benötigen. Alternativ lässt sich Seafile auch mit der kleineren Datenbank Sqlite verwenden. Dafür gibt es das Installationsscript setup-seafile.sh. Zunächst muss ein beliebiger Name für den Seafile-Server eingegeben werden. Danach muss die IP-Adresse des Debian-Servers im lokalen Netzwerk eingegeben werden, wenn dazwischen ein Router geschaltet ist. Andernfalls muss hier unser DDNS-Domain-Name eingetragen werden.

Fertig installiert...

Seafile benötigt spezielle Ports, die in den nächsten Schritten definiert werden. Wir folgen hier zunächst den Vorgaben, die wir mit Enter quittieren. Auch der Vorgabe des Verzeichnisses für die Ablage der gespeicherten Daten folgen wir, diese werden im Home-Verzeichnis des Nutzers abgelegt. Nach der Festlegung weiterer Ports erfolgt die Abfrage, ob wir neue Datenbanken erstellen oder vorhandene nutzen wollen. Mit der ersten Option lassen wir zunächst neue Datenbanken erstellen. Bei einem späteren Upgrade auf eine neue Version von Seafile-Server können wir dann auf die bestehenden zurückgreifen.

Nach der Eingabe des Administrator-Passworts für Mysql lassen wir zunächst den neuen Benutzer seafile erstellen und geben diesem ein neues Passwort. Die Einrichtung der Datenbanken als Benutzer root ist aus Sicherheitsgründen nicht empfohlen, vor allem wenn der Server später auch über das Internet erreichbar sein soll. Die drei folgenden Empfehlungen für die Namen der neuen Datenbanken übernehmen wir wieder jeweils mit Enter. Nachdem das Skript noch eine Zusammenfassung unserer Eingaben angezeigt hat, drücken wir erneut die Eingabetaste, um die Änderungen zu übernehmen. Ähnlich verfahren wir, wenn wir Sqlite nutzen wollen.

...und konfiguriert

Das Skript erstellt nicht nur die benötigten Datenbanken, sondern legt auch den symbolischen Link seafile-server-latest an, der zum Verzeichnis der aktuell verwendeten Seafile-Server-Version führt. Die im Laufe der Installation dort abgelegten Konfigurationsdateien lassen sich später weiterverwenden.

Standardmäßig gibt es unter Linux eine Begrenzung, wie viele Dateien gleichzeitig geöffnet werden dürfen, nämlich 1024. Das reicht in den meisten Fällen aus. Seafile hält die Verbindungen zwischen Client und Server offen, wenn diese verbunden sind. Daher wird empfohlen, die Begrenzung mit ulimit -n 30000 zu erhöhen, vor allem wenn zahlreiche Clients auf den Seafile-Server zugreifen.

Seafile hochgefahren

Anschließend wechseln wir mit cd seafile-server-latest in das Stammverzeichnis des Seafile-Servers und starten ihn mit ./seafile.sh start. Jetzt muss mit ./seahub.sh start der Hub-Server gestartet werden, über den die Clients zugreifen. Hier muss beim ersten Start noch ein Administrator-Konto eingerichtet werden. Dazu geben wir auf Anfrage eine E-Mail-Adresse und ein beliebiges Passwort ein.

Auf einem Client-Rechner lässt sich der Seafile-Server über den Browser mit http://*IP-Adresse-des-Debian-Servers*:8000 erreichen. Dort können über das Werkzeug-Symbol beispielsweise neue Benutzer und Gruppen eingerichtet werden. Dort neu erstellte Ordner, die sogenannten Bibliotheken, lassen sich verschlüsseln.

Damit Seafile auch verschlüsselt aus dem Internet erreichbar ist, müssen wir einen Webserver davorschalten. Hier empfiehlt sich Nginx, da er leicht zu konfigurieren ist. Wie bereits bei der Konfiguration von Nginx für Owncloud beschrieben, benötigen wir Schlüssel und Zertifikat. Die Beispielkonfigurationsdatei von der Projekt-Webseite oder von unserem Server kann im Verzeichnis /etc/nginx/available-sites abgelegt und angepasst werden, etwa der Servername und der Pfad zu Zertifikat und Schlüssel. Ist die Konfigurationsdatei korrekt angepasst, wird Nginx mit service nginx restart neu gestartet. Eine weitere Anpassung erfolgt in der Seafile-Konfigurationsdatei ccnet.conf. Dort muss in der Zeile SERVICE_URL die Webadresse unseres Cloud-Servers eingegeben werden und am Ende nochmals hinter HTTP_SERVER_ROOT = 'https://*Webadresse*/seafhttp'.

Jetzt sind wir Admins!

Dass unser Server am Internet hängt, ist nicht ganz unproblematisch. Er erfordert regelmäßige Wartung und sollte immer wieder auf Einbrüche überprüft werden. Das gilt auch für den Router, hinter dem der Server hängt. Je mehr Ports in dessen Firewall geöffnet werden, desto größer die Gefahr von Angriffen. Ganz brisante Daten sollten dort nicht gespeichert oder zumindest nochmals verschlüsselt werden.

Der eigene kleine Server zu Hause bietet jedoch die Sicherheit, immer Kontrolle über seine eigenen Daten zu haben. Werden sie gelöscht, sind sie weg und geistern nicht als Kopien irgendwo im Netz herum. Auch die Kontrolle darüber, wer auf unsere Daten zugreifen darf, liegt dann ganz bei uns.  (jt)


Verwandte Artikel:
Open-Source-Unternehmen: Startups sterben, Nextcloud startet neu   
(05.02.2018, https://glm.io/132577 )
Dropbox-Alternativen: Seafile-Installation in Handarbeit   
(02.05.2014, https://glm.io/106202 )
Berlin: Dropbox baut sein Netzwerk mit Equinix aus   
(08.03.2018, https://glm.io/133212 )
Hetzner Cloud: Cloud-Ressourcen für wenig Geld aber mit Zusatzkosten mieten   
(23.01.2018, https://glm.io/132324 )
Google: Chromebooks bekommen "Linux-VMs" und "Terminal"   
(27.02.2018, https://glm.io/133030 )

© 1997–2019 Golem.de, https://www.golem.de/