Die eigene Cloud – Seafile, Bittorrent Sync und Baikal auf einem Raspberry Pi – Tutorial

Seit etwa einem dreiviertel Jahr bin im Besitz eines Raspberry Pi und habe damit ein wenig rumgenerdet. Hauptsächlich verwende ich ihn als kleinen Server, der bei mir a.u als Ersatz für Dropbox und weitere Cloud-Dienste wie z.B. Kalender und Kontakte Synchronisation dient. Über die Anfänge und ersten Gehversuche habe ich hier bereits geschrieben. Eigentlich wollte ich kein Tutorial mehr schreiben – da gibt es schon sehr viele und sehr gute. Da ich aber bislang noch keines gefunden habe, das wirklich vom ersten Schritt an erklärt wie man so einen Raspberry Server mit allem drum und dran aufsetzt, habe ich mich umentschieden. Außerdem bin ich bei einigen Punkten anderer Tutorials an kleinen Problemen hängen geblieben, die wiederum eigene Recherche und sehr viel „trial and error“ nach sich gezogen haben.  Das ganze ist also eine Zusammenstellung von Anleitungen anderer Raspberry Geeks mit Ergänzungen und Änderungen von mir. Diese Step by Step Anleitung sollte es auch Leuten ohne großartige Nerd-Fertigkeiten ermöglichen eine eigene Cloud aufzusetzen. Sei es aus Neugier, Spaß am basteln, Lust auf Internet oder auch aus „PRISM-Break“ Gründen.

Was wird das hier also?

Eine Schritt für Schritt Anleitung um zu Hause einen eigenen kleinen Raspberry Pi-Server mit eigener „Dropbox“ und eigener Kontakt- und Kalendersynchronisation zu bauen. Und natürlich wie man die Dienst dann mit seinem Laptop, Smartphone und Tablet nutzen kann. Als Software wird Seafile (Dropbox-Ersatz), Bittorrent Sync (Dateiaustausch zwischen einzelnen Geräten) und Baikal (Kontakte und Kalendersynchronisation) verwendet. Es ist alles so gehalten, dass man alles per copy und paste ans Laufen bringen kann.

1.Disclaimer
2. Hardware
3. SD Karte formatieren und Betriebssystem laden
4. Raspberry Pi in Betrieb nehmen
5. Weitere Konfiguration und DynDNS verwenden
6. SSH-Zugriff absichern und Standart Benutzernamen ändern
7.Installation von Bittorent Sync
8. Installation von Seafile
9. Installation von Baikal
10. Schluss

 

1. Disclaimer

Erstens:Ich bin kein Linux-Profi und auch kein IT-Sicherheitsspezialist. Ich kann nicht beurteilen wie „sicher“ diese Cloud im Eigenbau ist. Soweit möglich werden alle verwendeten Dienste mit SSL Verschlüsselung eingerichtet. Ob und mit welchem Aufwand diese selfmade-cloud hackbar ist, entzieht sich meiner Fachkenntnis.  Da aber wie gesagt ein Großteil der Anleitungen von anderen Personen stammen – und ich glaube die kennen sich echt aus – kann das alles gar nicht so falsch sein.

Zweitens: Ich arbeite mit einem Mac und mit iOS. Windows und Android User können hiermit mit Sicherheit auch etwas anfangen, aber ich gehe hier nicht groß auf die Unterschiede zu Windows und Co. ein.

Achtung: Damit es zu keinen Missverständnissen und Unfällen kommt:
Alle Befehlszeilen in diesem Tutorial können einfach so kopiert werden, wenn sie innerhalb einer grauen Box stehen. Zum Beispiel

sudo reboot 

Sollte irgendein Befehl, Passwort o.ä. innerhalb dieses Artikels mit „Anführungszeichen“ versehen sein, versteht sich die Eingabe ohne(!) Anführungszeichen.
Wenn es um Benutzernamen, Passwörter, Domainadressen etc. geht, habe ich hier immer exemplarisch den Namen „ruhezustand“, „ruhezustand.selfhost.eu“ oder „raspberrypasswort“ etc. hingeschrieben. Das ist immer nur als Beispiel zu verstehen. Natürlich sollen (und müssen) andere Namen und Passwörter vergeben werden!

Also aufmerksam lesen und dann entsprechend die richtige Dinge abändern!

 

2. Hardware:

Das hier braucht man um sofort erfolgreich loszulegen. Hier eine Liste der Komponenten die ich verwende.
(Kann man natürlich auch woanders als bei Amazon- nur so als Anschauungsbeispiel.)

  • Raspberry Pi Model B (z.B. Amazon)
  • passendes Netzteil (z.B. Amazon)
  • Edimax WLAN USB Adapter (z.B. Amazon)
  • 16 GB SD Speicherkarte (z.B. Amazon)
  • USB Stick mind 32 GB  (z.B. Amazon) für den „Cloud“-Speicher. Geht natürlich auch größer oder mit externer USB Festplatte.

Optional aber empfehlenswert, da das Gerät dauerhaft eingeschaltet ist und ja auch irgendwo rumsteht:

  • Gehäuse für den Raspberry Pi (z.B. Amazon)
  • Kühlkörper für den Raspberry Pi (z.B. Amazon)

ebenso braucht man:

  • 1 USB Tastatur
  • 1 USB Maus
  • 1 Monitor (mit HDMI Ausgang, ansonsten braucht man einen Adapter. Der Pi braucht als Eingang auf jeden Fall HDMI)

Diese drei Dinge werden eigentlich nur kurz benötigt. Für die Konfiguration des Raspberrys und die gesamte Konfiguration braucht man einem anderen Rechner oder Laptop mit SD Kartenleser. Dieses Gerät muss im gleichen Netzwerk/WLAN angemeldet sein! (Dann lassen sich auch alle Befehle aus diesem Tutorial einfach kopieren!)

Ein wichtiger Punkt der benötigen Hardware ist der Router. Der Router muss einen (kostenfreien) DynDNS Service unterstützen. Da muss man sich leider vorher etwas informieren, sonst funktioniert alles nur im eigenen Netzwerk zu Hause! (Eine kurze Erklärung zu DynDNS gibt es hier.) Ich benutze eine

  • FritzBox Phone & Surf WLAN 7112 und verwende www.selfhost.de als DynDNS Dienst.

Ich hatte vorher eine Vodafone EasyBox – mit der haben nur sehr wenige DynDNS Dienste funktioniert.

 

3. SD Karte formatieren und Betriebssystem laden

Der Raspberry ist bestellt, geliefert, mit Kühlkörpern versehen und im Gehäuse eingebaut. Bevor man ihn verwenden kann muss das Betriebssystem auf die SD Karte kopiert werden. Dafür muss die Karte erst mit Hilfe eines Tools entsprechend vorbereitet werden.

Also zuerst das

runterladen, installieren, SD Karte in den Rechner stecken und Programm öffnen. Innerhalb dieses Tools wählt man die Option „Overwrite Format“ und formatiert die SD Karte passend für das Betriebssystem. Als Name für die Karte kann irgendwas eingegeben werden.

SD Card

 

 

 

 

 

Gleichzeitig laden wir ein Softwarepaket welches das Betriebssystem für den Raspberry runter.

Wenn der Download von NOOBS („New out of the box software“) erledigt ist und die Karte entsprechend formatiert ist, wird muss die runtergeladene Datei auf die SD Karte entpackt werden. Achtung: Nicht einfach das entpackte Verzeichnis auf die SD Karte kopieren. Sonst funktioniert es nicht! Am besten den die gepackte Datei auf die Karte entpacken. (siehe Screenshot)

Noobs

 

 

 

 

 

4. Raspberry Pi in Betrieb nehmen

Nun wird der Raspberry Pi mit der SD Karte bestückt und mit Monitor, Maus und Tastatur verbunden. Als letztes dann mit dem Netzteil. Nach kurzem Bootvorgang erscheint ein Fenster bei dem der Installationstyp ausgewählt werden soll. Wir setzen hier einen Haken bei „Raspian RECOMMENDED“. Am unteren Rand des Fensters ändern wir das Tastaturlayout auf deutsch (de), die Systemsprache Englisch hat sich als vorteilhafter erwiesen. So lässt sich einfacher nach Fehlermeldungen o.ä. suchen. (Tip von @monoxyd). Wir klicken auf „install“ (Symbolleiste links), beantworten die Frage mit „yes“ und warten.

noobs1

 

 

 

 

 

 

Nachdem der Informationsvorgang abgeschlossen ist, erscheint der blaue Bildschirm des Raspberry Pi – Konfigurationsprogramms „raspi-config“. Hier müssen folgende Einstellungen vorgenommen werden:

  • Unter Punkt 2 „Change User Password“ sollte ein sicheres Passwort eingegeben werden. Das neue Passwort für den user „pi“ wird eingeben und anschließend einmal bestätigt.
    Für unser Beispiel wählen wir „raspberrypasswort“. Natürlich muss hier ein eigenes Passwort verwendet werden – aber zur besseren Nachvollziehbarkeit werden wir nachfolgend dieses Passwort verwenden.
  • Unter Punkt 3 „Enable Boot to Desktop/Scratch wählen wir die erste Option „Console Text console“. D.h. der Raspberry startet nicht mit einer grafischen Benutzeroberfläche, sondern mit der Eingabeaufforderung.
  • Unter Punkt 7 „Overclocking“ wählen wir, nachdem die Warnmeldung bestätigt wurde“ den Modus „High 950 MHz“. Diese Übertaktung fällt noch in den Garantiebereich des Raspberrys und führt zu etwas mehr Performance.
    Achtung: Wer keine Kühlrippen auf den die Platine angebracht hat, sollte diesen Schritt besser auslassen!
  • Unter Punkt 8 „Advanced Options“ müssen zwei Einstellungen vorgenommen werden. Unter „A2 Hostname“ vergeben wir einen Namen für unseren Raspberry im Netzwerk. Für diese Anleitung heißt er exemplarisch „ruhezustand“. Unter „A4 SSH“ wählen wir die Option „Enable“. So können wir uns nachher von einem anderen Rechner auf den Raspberry einloggen.

raspiconfig

 

 

Wir beenden Das Konfigurationsprogramm mit der Auswahl „Finish“ und beantworten die Frage nach dem Neustart mit „yes“.
Nach dem Neustart steht nun vor einem blinkenden Cursor „ruhezustand login“. Wir geben nun zunächst den Benutzernamen pi ein und anschließen das Passwort, dass wir gerade im Konfigurationsprogramm angelegt haben.

pi

raspberrypasswort

login2

 

 

 

Da der Raspberry nur zwei USB- Anschlüsse hat und ich mir ein USB-Hub gespart habe, müssen wir jetzt ein paar Mal Tastatur und Maus ein- und ausstecken. Ein wenig umständlich, geht aber trotzdem schnell. Wir entfernen zunächst die Maus vom USB- Anschluss und stecken an die frei gewordene Stelle den WLAN Adapter ein. Nicht erschrecken! Der Raspberry startet nun neu. Wir melden und wieder mit dem Benutzernamen pi und dem Passwort an. Dann starten wir die grafische Oberfläche des Betriebssystems mit dem Kommando:

startx

Screen Shot 2014-11-09 at 11.55.29 am

 

 

 

 

Wenn die Oberfläche gestartet ist, entfernen wir die Tastatur und stecken die Maus wieder ein. Anschließend starten wir das Programm „Wifi- Config“. Die Verknüpfung befindet sich auf dem Desktop.

Screen Shot 2014-11-09 at 12.22.07 pm

 

 

 

Mit dem Klick auf „scan“ wird nach verfügbaren WLAN Verbindungen gesucht. Ist das heimische Netzwerk in der Liste gefunden, genügt ein Doppelklick auf den entsprechenden Eintrag. Mit der Maus klicken wir in das „PSK“ Eingabefeld, tauschen die Maus wieder gegen die Tastatur am USB Port aus, geben das entsprechende WLAN Passwort des Routers ein und bestätigen mit Enter.

Screen Shot 2014-11-09 at 11.51.25 am

 

 

 

 

 

 

Anschließen tauschen wir wieder Tastatur gegen Maus. Wir schließen die Liste mit den gefundenen Netzwerken wieder. Nun sollte innerhalb des Wifi-Config“ Programms ganz unten die entsprechende IP-Adresse des Raspberry Pi stehen. In unserem Beispiel ist das 192.168.178.111.

Screen Shot 2014-11-09 at 11.51.39 am Kopie

 

 

 

 

 

 

Wir schließen das Config-Programm und beenden die Sitzung der Benutzeroberfläche mit einem klick auf das Rote Powersymbol auf der Taskleiste ganz rechts und wählen „Logout“.

Ab jetzt brauchen wir den Monitor, Tastatur und Maus nicht mehr.
Alles weitere passiert jetzt auf einem anderen Rechner (in unserem Fall ein MacBook) im gleichen WLAN.
Wir benötigen ab jetzt nur noch einen Webbrowser und ein Terminal auf dem MacBook. Damit das funktioniert müssen am Router (Fritzbox) noch ein paar Einstellungen vorgenommen werden.

Wir öffnen auf dem MacBook einen Browser und geben

fritz.box

ein, suchen im Menüpunkt WLAN den entsprechenden Eintrag mit der eben herausgefundenen IP-Adresse des Raspberry und bearbeitet diesen Eintrag durch einen Klick auf das Symbol neben dem roten Kreuz. Wir geben dem Gerät einen Namen, z.B. „ruhezustand“ und machen einen Haken bei „dem Gerät immer die gleiche IP-Adresse zuweisen. Dann noch die Änderungen übernehmen und die ersten Schritte zum eigenen Server sind getan.

fritz1

 

 

 

 

fritzbox2

 

 

 

 

5. Weitere Konfiguration und DynDNS verwenden.

Um uns nun mit dem Raspberry Pi von einem anderen Rechner zu verbinden, öffnen wir das Mac-Terminal (Am besten CMD und Leertaste gleichzeitig drücken und in das Suchfeld „Terminal“ eingeben).
Tipp: Windows-Nutzer laden sich am besten das Programm PuTTY runter.

Nun geben wir in das Terminal folgendes ein:

ssh pi@192.168.178.111

Die Frage ob wir wirklich verbinden wollen beantworten wir mit „yes“. Anschließen geben wir das vergebene Passwort des Raspberry Pi ein – und sind drin.

raspberrypasswort

Wir können jetzt sämtliche Raspberry Befehle über das Mac-Terminal erledigen. Das ganze nennt sich dann „SSH-Zugriff
Wie bereits gesagt, fangen wir mit der IP-Adresse außerhalb unseres heimischen Netzwerkes nicht viel an. Wir benötigen eine dynamische DNS Adresse. Dazu registrieren wir uns bei www.selfhost.de und wählen das selfhost-free Paket.
Zunächst werden wir nach dem Namen für eine Subdomain gefragt.
Zum Beispiel:

ruhezustand.selfhost.eu

Nach der Eingaben der div. Registrierungsdaten wird eine Bestätigungsmail mit einem Passwort verschickt. Mit diesen Daten loggen wir uns dann bei Selfhost ein und registrieren die die Domain ruhezustand.selfhost.eu. Es folgen zwei Bestätigungsmails. (Das kann ein paar Minuten dauern.) Anschließend und unter dem Menüpunkt „Account“ die „DynDNS Accounte“ auswählen und auf „neuen DynDNS Account anlegen“ klicken.

Wenn alles geklappt hat, ist hier nun die Domain aufgelistet. Hier klicken wir dann auf „Details“ und bekommen hier einen Benutzernamen und ein Passwort für den Updateclient angezeigt. (Achtung: Diese haben nichts mit dem Selfhost Account an sich zu tun. Diese Benutzerdaten sind für die Einstellungen der FritzBox relevant.)

DynDNS1

 

 

DynDNS2

 

 

Wir öffnen nun wieder im Browser die Verwaltung der Fritzbox mit

fritz.box

Hier müssen nun die Daten des DynDNS Accounts eingegeben werden. Unter dem Menüpunkt Internet -> Freigaben, den Register „Dynamic DNS“ auswählen und den entsprechenden Haken setzten. Anschließend als Anbieter „selfhost.de“ auswählen und die Zugangsdaten für den DynDNS Account eingeben.

dyndns3

 

 

 

 

Nun muss innerhalb der Fitzbox noch der entsprechende Port für das SSH Protokoll freigegeben werden.
(Dieser Schritt wird sich im weiteren Verlauf des Tutorials immer wieder wiederholen!)

Unter dem Menüpunkt Internet -> Freigaben, muss über den Button „neue Portfreigabe“ zunächst der Raspberry Pi im Netzwerk ausgewählt werden. Als Port wird die Nummer 22 freigegeben. Dies ist der Standartport für das SSH Protokoll.

port1

 

 

 

port2

 

 

 

Mit Hilfe unserer Selfhost Domain und den entsprechenden Portweiterleitungen ist der Raspberry Pi nun im Internet erreichbar und wir können uns per SSH von überall auf der Welt mit:

ssh pi@ruhezustand.selfhost.eu

und dem vergeben Passwort

raspberrypassword

einloggen. (Die Frage ob wir wirklich verbinden wollen mit „yes“ beantworten..

Anmerkung: Die DynDNS Domain von selfhost.de lässt sich kostenlos registrieren. Allerdings muss man sich bei Selfhost alle 30 Tage einmal einloggen und seine Adresse bestätigen. Ansonsten wird die Domain inaktiv geschaltet und auch irgendwann gelöscht. Dann funktioniert die Cloud nach dieser Anleitung nicht mehr! Selfhost verschickt aber auch entsprechende Erinnerungsmails.
Es ist auch möglich mit einer Einmalzahlung in Höhe von fünf Euro eine Brief-Identifikation zu beantragen – dann entfällt das monatliche Einloggen.

 

6. SSH-Zugriff absichern und Standart Benutzernamen „pi“ ändern. 

Der der Raspberry nun dauerhaft am und im Netz hängt, sollte diese Verbindung abgesichert werden. Hierzu soll nun der Standart Benutzername „pi“, sowie der entsprechende Port des SSH Protokolls geändert werden. Warum das wichtig ist, kann man im Blog von Jan Karres nachlesen – die folgenden Instruktionen basieren auf einem seiner Artikel.

Wir werden nun zunächst den Standart SSH Port 22 auf einen anderen Port legen. Prinzipiell kann man jeden anderen Port benutzen, ausser er wird von einer anderen Anwendung verwendet.
Wir haben uns per SSH mit unserem Raspberry verbunden und geben nun folgendes in die Befehlszeile ein:

sudo nano /etc/ssh/sshd_config

Es öffnet sich der Texteditor „Nano“ mit der entsprechenden Konfiguration des SSH Protokolls.
In den ersten Zeilen müsste in einer Zeile „Port 22“ stehen.
Dies ändern wir nun auf:

Port 1321

ab.

Desweiteren suchen wir die Zeile „PermitRootLogin yes“ und tauschen hier das „yes“ mit einem „no“.

PermitRootLogin no

ssh1

 

 

 

 

 

Die im Texteditor Nano gemachten Änderungen speichern wir mit ctrl + o gefolgt von Enter und verlassen Nano mit ctrl + x. (Diese Befehle sollte man sich merken, die brauchen wir noch ein paar mal!)

Anschließend starten wir den SSH-Dienst mit der folgenden Eingabe neu:

sudo /etc/init.d/ssh restart

Wichtig: Wir müssen nun innerhalb der Fritzbox den veränderten Port auch angeben. Also nochmal in die Fritzbox einloggen und den SSH Port auch dort von 22 auf 1321 ändern. (Man kann hier natürlich einen anderen Port verwenden, es muss natürlich einer sein, der von keiner anderen Anwendung standartmäßig belegt ist.)

Port3

 

 

 

 

 

Wir schließen das Mac Terminal jetzt und öffnen den Finder. Wir drücken die Tastenkombination „cmd+shift+g“ – es öffnet sich das „gehe zu Fenster“ und wir geben dort

~/.ssh

ein. Es öffnet sich ein Ordner, in dem sich die Datei „known hosts“ befindet. Diese Datei muss nun gelöscht werden – ansonsten können wir uns nicht mit dem geänderten SSH-Port 1321 einloggen. Wir schließen den Finder und öffnen das Terminal wieder und loggen uns mit diesen Befehlen ein. (Die übliche Sicherheitsfrage wieder mit „yes“ beantworten.)

ssh pi@ruhezustand.selfhost.eu -p 1321

raspberrypasswort

Wir schreiben also nun hinter den SSH Befehl den neuen Port mit „-p 1321“.

Wir installieren nun zusätzlich das Programm „fail2ban“ um die „Brute-Force-Methode“, also das zig-fache Ausprobieren von Passwörtern etwas einzuschränken. Fail2ban zählt wie oft sich eine bestimmte IP-Adresse über SSH anzumelden versucht und sperrt diese Adresse nach einer bestimmten Anzahl von versuchen. Wir geben also

sudo apt-get install fail2ban

ein und beantworten die Frage typische Installationsfrage „Do you want to continue?“ mit „y“.

Um die Sicherheit des SSH- Zugriffs noch weiter zu erhöhen, ändern wir als letztes noch den Benutzernamen „pi“ in einen anderen Namen, z.B. „nepomuk“. Die ausführlicher Version mit detaillierten Erklärungen gibt es bei bei Jan Karrres im Blog.
Wir geben folgendes Kommando in die Befehlszeile ein:

sudo adduser --no-create-home interim

Wir erstellen damit einen Behelfsnutzernamen „interim“. Wir werden nach einem Passwort gefragt welches wir mit „12345“ festlegen. (Der Benutzer wird gleich wieder gelöscht, daher dieses einfache Passwort!) Alle anderen Fragen beantworten wir nur mit Enter, außer der letzten Frage nach der Richtigkeit der Daten „y“.

Als nächsten Schritt geben wir

sudo visudo

ein und tragen in der letzen Zeile folgendes ein:

interim ALL=(ALL) NOPASSWD: ALL

Wir speichern den Eintrag mit ctrl + o, beantworten mit y und schließen den Editor mit ctrl + x.
Anschließend starten wir den Raspberry Pi einmal neu:

sudo reboot 

Hinweis: Der Raspberry braucht natürlcih auch eine kurze Zeit bis er wieder komplett hochgefahren ist. Wenn der SSH Zugriff nocht gleicht funktioniert, einfach kurz warten.

Auf dem Mac schließen wir das Terminal einmal komplett und starten es erneut. Wir loggen uns nun mit dem Nutzer „interim“ und der Passwort „12345“ ein.

ssh interim@ruhezustand.selfhost.eu -p 1321

12345

Nach dem Log-In folgt diese Eingabe:

sudo usermod --move-home --login nepomuk --home /home/nepomuk pi

gefolgt von:

sudo groupmod -n nepomuk pi

Anschließend wird erneut per

sudo visudo

die bereits vorhin bearbeitete Datei geöffnet und die von uns eingefügte letzte Zeile gelöscht. Desweiteren wird in der (jetzt) letzten Zeile das Wort „pi“ am Anfang der Zeile durch „nepomuk“ ersetzt.

Sudoersfile

 

 

 

Wir schließen das Terminal wieder und loggen uns erneut mit dem neuen Benutzernamen „nepomuk“ und dem entsprechenden Passwort (im Beispiel „raspberrypasswort“) ein.

ssh nepomuk@ruhezustand.selfhost.eu -p 1321

Das Passwort ist nun das Passwort das wir ganz zu Anfang für den Benutzer „pi“ vergeben haben („raspberrypasswort). Nun löschen wir den Hilfsnutzer interim wieder:

sudo deluser interim

Nun muss in einer bestimmten Datei noch der Benutzer „pi“ in den Benutzer „nepomuk“ umbenannt werden:

sudo nano /usr/bin/raspi-config

Wir suchen (mit Hilfe von ctrl + w) nach diesem Eintrag (die Eingabe von „if id“ reicht aus)

if id -u pi > /dev/null 2>&1; then

und ändern „pi“ in „nepomuk“ ab. Achtung: Diese Zeile gibt es zweimal innerhalb der Datei.

Danach suchen wir diese Zeile:

sed /etc/lightdm/lightdm.conf -i -e "s/^#autologin-user=.*/autologin-user=pi/"

und ändern „pi“ hier auch entsprechend in „nepomuk“ ab.

Das gleiche gilt auch für die folgende Zeile. Hier wird ebenso „pi“ durch „nepomuk“ ersetzt.

passwd pi

Die Datei wieder speichern und schließen (ctrl +o, ctrl + x, y)

Achtung: Bei Änderungen in derartigen Konfigurationsdateien sorgfältig arbeiten und besser zweimal kontrollieren ob nicht ein Zeichen zuviel gelöscht wurde!

Nun rufen wir

sudo raspi-config

auf und wählen dort unter dem Punkt Enable Boot to Desktop/Scratch die Option Desktop Log in as user ‘pi’ at the graphical desktop wählen. Wir beenden das Programm – die Frage nach dem Neustart beantworten wir mit „ja“.

 

7. Installation von Bittorent Sync

Nachdem nun alle notwendigen Vorbereitungen erledigt sind, geht es jetzt endlich mit den Cloud-Diensten los . Mit Bittorrent Sync können Dateien mit Hilfe des Bittorrent Protokolls zwischen verschiedenen Geräten synchronisiert werden. Das geht mit Dropbox bzw. mit unserer Lösung Seafile ja auch, allerdings hat Bittorrent Sync eine paar nette Features, die Seafile (noch) nicht unterstützt. Ich verwende BTsync hauptsächlich dazu, um schnell ein paar Dateien wie z.B. Bilder zwischen meinem Laptop und Smarthphone bzw. Tablet auszutauschen. Die Anleitung hierfür habe ich von @monoxyd. Er hat in seinem Blog ebenso ein kleines Tutorial für den Raspberry Pi als privaten Cloudserver. Bevor wir loslegen, gehen wir sicher, dass alle Softwarepakete auf unserem Raspberry Pi aktuell sind. Wir loggen uns wieder über SSH ein

ssh nepomuk@ruhezustand.selfhost.eu -p 1321
raspberrypasswort

und geben dann folgenden Befehl in die Konsole ein:

sudo apt-get update && sudo apt-get upgrade

Die Frage ob aktualisierte Pakete installiert werden sollen, beantworten wir mit „y“. Das dauert dann eventuell ein paar Minuten.
Ist dies erledigt, stecken wir unseren USB-Stick an, der uns als Cloud-Speicher für unseren Server dient.

Ist der USB-Stick angesteckt geben wir als erstes folgenden Befehl ein.

df -h

Mit diesem Befehl werden alle verfügbaren Laufwerke angezeigt. Vermutlich wird der USB Stick unter dem Pfad /dev/sda1 angezeigt. Man sollte ihn ansonsten auch an der Größe und an der Bezeichnung erkennen. Für dieses Beispiel heißt der Stick noch „untitled“ und ist 1,9 GB groß.

USBStick

 

 

 

Wir werden den Stick jetzt noch entsprechend formatieren und dafür sorgen, dass dieser immer automatisch im System eingebunden wird. Dazu sind folgende Befehle nötig:

sudo umount /dev/sda1

Achtung: Sollte der verwendete Stick nicht „sda1“ heißen, sonder evtl „sda2“,  muss die Bezeichnung entsprechend angepasst werden.
Anschliend folgt:

sudo mkfs.ext4 /dev/sda1 -L cloud

„Cloud“ ist nun die Volumenbezeichnung für den USB-Stick.
Am Anschluss den Pi einmal neustarten mit:

sudo reboot

Nachdem wir uns wieder über SSH entsprechend eingeloggt haben, überprüfen wir einmal ob der USB Stick erkannt wird.

df -h

Der USB Stick „Cloud“ sollte nun angezeigt werden.

Im Hintergrund startet der Raspberry Pi immer noch die graphische Benutzeroberfläche, die wir eigentlich nicht benötigen. Um Ressourcen zu sparen, werden wir diese nun Abschalten. Allerdings müssen wir dann noch dafür sorgen, dass der USB-Stick beim Systemstart automatisch eingebunden wird.
Wie in Schritt 6 öffnen wir die Systemkonfguration mit

sudo raspi-config

auf und wählen dort unter dem Punkt Enable Boot to Desktop/Scratch die Option und wählen wieder Console Text console, requiring login (Default).
Wir beenden das Programm und beantworten die Frage nach einem Reboot mit „no“.

Anschließen öffnen wir mit die Konfigurationsdatei für alle einzubindenden Dateisysteme mit

sudo nano /etc/fstab

und tragen auf der vorletzten Zeile folgendes ein:

/dev/sda1 /media/cloud auto auto,rw 0 0

fstab

 

 

und speichern die Datei mit ctrl + o, „enter“ und verlassen nano mit ctrl+x.
Danach starten wir den Raspberry Pi neu (sudo reboot) und loggen uns wieder per SSH ein.

Wir überprüfen nochmals mit

df -h

ob der Stick auftaucht. Passt alles legen wir auf dem Stick noch ein entsprechendes Verzeichnis für Bittorent Sync an.

sudo mkdir /media/cloud/btsync

Damit wir im weiteren Verlauf des Tutorials keine Probelme mit den weiteren Programmen bekommen, weißen wir dem USB Stick nun noch bestimmte Lese- und Schreibrechte zu.

sudo chmod 777 /media/cloud/

Anschließend machen wir bereiten wir das System mit folgenden Befehlen für BTSync vor.

mkdir ~/.btsync && cd ~/.btsync

und laden uns anschließend das entsprechende Paket aus dem Netz.

wget --content-disposition http://download-lb.utorrent.com/endpoint/btsync/os/linux-arm/track/stable

Die heruntergelassene Datei ist noch gepackt und wird mit

tar -xvf bittorrent_sync_arm.tar.gz

entpackt. Anschließend können wir die heruntergeladene Datei noch mit

rm bittorrent_sync_arm.tar.gz

löschen. Im letzten Schritt legen wir noch eine Konfigurationsdatei an, in der wir die Zugangsdaten für die Benutzeroberfläche von BittorentSync eingeben. Das geht mit:

./btsync --dump-sample-config > btsync.conf
nano btsync.conf

Wir tragen nun unter Punkt „WebUI“ in der jeweiligen Zeile  „login“ und „password“ einen entsprechenden Anmeldenamen und ein Passwort ein. Hier zum Beispiel „nepomukbtsync“ und „btsyncpasswort“.

BTSync

 

 

Wir speichern die Datei mit ctrl+o und verlassenen den Editor mit ctrl+x.
Um BTSync richtig verwenden zu können, muss innerhalb der FritzBox noch der entsprechende Port freigegeben werden. Das geht auf die gleiche Weise wie vorhin. Für BTSync muss der Port

Port 8888

freigegeben werden.Anschließend starten wir den Dienst mit folgendem Kommando:

sudo ./btsync --config btsync.conf

Jetzt kommt der magische Moment. In der Adresszeile des Browsers auf dem MacBook kann nun das Webinterface von BTSync aufgerufen werden.
Die Adresse dafür ist:

http://ruhezustand.selfhost.eu:8888

Es öffnet sich ein Anmeldefenster indem die gerade in die Datei eingetragenen Anmeldedaten eingegeben werden.

BtSync2

 

 

 

 

 

Eventuell öffnet sich kurz danach nochmal ein Fenster indem nochmals Benutzerdaten eingegeben werden müssen. In diesem Fall den Browser einmal ganz schließen und die Seite http://ruhezustand.selfhost.eu:8888 nochmal aufrufen.
Anschließend befinden wir uns in der Verwaltungsoberfläche von BTSync. Wir lassen das Fenster offen und kümmern uns zunächst um unseren Client auf dem Rechner und auf dem Smartphone. Wir laden und installieren folgende Software:

Andere Versionen finden sich hier.

Sind die Programme installiert gehen wir wieder in unser Webinterface von BTSync und wählen in der Symbolleiste oben rechts den Punkt „Add Folder“. Es öffnet sich der Verzeichnisbaum des Raspberrys und wir wählen folgenden Pfad.

/media/cloud/btsync

btsync3

 

 

 

 

 

Der Ordner „btsync“ wird nun im Fenster aufgelistet. Für diesen Ordner wählen wir nun die Option „share“ (erscheint wenn die Maus über den Ordner bewegt wird) und wählen in dem sich öffnenden Fenster die Option „read and write“ und bestätigen mit der Option „copy“. Es öffnet sich ein Fenster in dem ein langer, markierter Link, den wir mit cmd+c in die Zwischenablage kopieren.
Wir wechseln nun in den BTSync Client auf dem Mac und öffnen das Programm. Wir wählen hier auf der Symbollleiste „Options“ (kleines Zahnrad) und wählen „enter a key“.
In dieses Fenster fügen wir den Link aus der Zwischenablage mit cmd + v ein und bestätigen diesen.
Im Anschluss werden wir nach einem Ordner auf dem Mac gefragt, mit dem wir synchronisieren wollen. Es empfiehlt sich hier an der gewollten Stelle einen neuen anzulegen.
Wir wechseln wieder in die Weboberfläche von BTSync. Hier sehen wir nun eine kleine rote 1 auf dem Glockensymbol. Mit einem Klick auf dieses Symbol müssen wir den Zugriff auf den „Sync-Ordner“ von unserem MacBook aus akzeptieren.

BTSync4

 

 

Wenn der BTSync Client nun läuft  ist alles, was in diesen gerade erstellten zu synchronisierenden Ordner gelegt wurde, von anderen Geräten wie. z.B. Smartphone und Tablet abrufbar.
Das funktioniert dann ganz einfach mit der entsprechenden App. Wir öffnen also auf dem iPhone/iPad die installierte „Sync“-App und wählen die Option „Einen Ordner hinzufügen“. Es öffnet sich die Kamera, um den QR Code unseres Ordners abzuscannen. Wir gehen also in die Weboberbläche (oder auch in den Mac-Client) zurück, klicken für unseren Ornder erneut auf „share“ und wählen die Option „QR-Code“. Es erscheint nun ein Code, den wir mit dem iPhone/iPad abscannen können.

BTSync5

 

 

 

 

 

Das ganze kann nun mit beliebig vielen Geräten und Ordnern passieren. Jetzt kann man einfach irgendeine Datei in den angelegten Sync Ordner auf dem MacBook legen und kann so auch mit dem iPad oder auch mit einem anderen Rechner darauf zu greifen! Dazu muss der Client auf dem Mac natürlich immer im Hintergrund laufen. Damit der BTSync Dienst auf dem Raspberry Pi ebenso nach jedem Neustart automatisch gestartet wird, müssen wir folgendes Kommando ausführen.

crontab -e

Und als letzte Zeile folgendes in die Datei einfügen.

@reboot sudo /home/nepomuk/.btsync/btsync --config /home/nepomuk/.btsync/btsync.conf

Die Datei wie gewohnt speichern (ctrl+o, ctrl+x). Dann am besten den Raspberry einmal neustarten (sudo reboot) und im Anschluss schauen, ob sich das Webinterface noch problemlos aufrufen lässt.
Wenn alles fertig eingerichtet ist und auch funktioniert, empfiehlt es sich vielleicht aus Sichherheitsgründen das Webinterface von BTSync abzuschalten. Es wird eigentlich nicht mehr benötigt. Dazu können wir eine entsprechende Zeile in der Konfigurationsdatei einfach „auskommentieren“, so lässt sie sich auch ohne Umstände wieder aktivieren.
Wir loggen uns also wieder über das Terminal ein und wechseln mit

cd ~/.btsync

und rufen die nochmal die Konfigurationsdatei auf.

nano btsync.conf

Wir suchen die Sektion „WebUI“ und schreiben am Anfang der Zeile „/*“ und am Ende der Zeile „*/“.

BTSyncConf

 

 

Dann wie gewohnt speichern, schließen und neustarten. Das Webinterface sollte nun nicht mehr erreichbar sein, die Clients auf Mac und iPhone funktionieren trotzdem. Soll das Interface wieder aktiviert werden, einfach die entsprechenden Zeichen wieder löschen, speichern und neustarten.

 

8. Installation von Seafile

Der erste Teil der eigenen Cloud ist geschafft. Mit Hilfe von Bittorent Sync können wir nun einzelnen Dateien zwischen verschiedenen Rechnern, Laptops und Smartphones synchronisieren und bei Bilder der Smartphone Kamera automatisch auf unseren Rechner sichern lassen.
Um unsere Cloud nun noch funktionaler zu machen installieren wir als nächstes die Dropbox Alternative Seafile. Mit Seafile können wie bei Dropbox auch Ordner bzw. Links über die App und eine Weboberfläche freigegeben werden. Somit können auch Dateien mit Nutzern geshared werden, die eben keine BTSync verwenden. Die Anleitung für die Seafile Installation stammt auch von Jan Karres.

Zunächst müssen einige zusätzliche Pakete installiert werden.
Die folgenden Befehle sind also nacheinander auszuführen ,

sudo apt-get update

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

Im nächsten Schritt wird für Seafile ein extra Benutzer ohne Passwort angelegt.

sudo adduser seafile --disabled-password

Alle Fragen, nach Name, Telefonummer etc. beantworten wir nur mit der Entertaste. Die Frage ob alle Informationen korrekt sind, natürlich dann mit „y“.
Wir wechseln dann in den angelegten Benutzer mit

sudo su seafile
und wechseln mit

cd
in das entsprechende Heimat-Verzeichnis.

Wir erstellen mit

mkdir /media/cloud/seafile/

und

mkdir /media/cloud/seafile/seafile-data/

die benötigten Verzeichnisse.

Im nächsten Schritt laden wir Seafile aus dem Netz.

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.6_pi.tar.gz

Anschließend entpacken wir die runtergeladene Datei und löschen das nicht mehr benötigte Archiv.

tar -xvf seafile-server_3.1.6_pi.tar.gz

rm seafile-server_3.1.6_pi.tar.gz

Anschließen starten wir die Installtion von Seafile. Wir wechseln ins entsprechende Verzeichnis mit

cd seafile-server-3.1.6

und führen anschließend

./setup-seafile.sh
aus.

Wir bestätigen die erste Frage mit Enter, die Frage nach dem Servernamen beantworten wir (exemplarisch) mit „Ruhezustand“. Im nächsten Schritt werden wir nach der IP des Servers gefragt – hier verwenden wir unsere  DynDNS Domain (ruhezustand.selfhost.eu). Die Frage nach dem „Default Port“ beantworten wir mit enter. Als nächstes werden wir nach dem Speicheort für unsere Daten gefragt. Hier geben wir folgendendes ein:

/media/cloud/seafile/seafile-data

Alle weiteren Fragen beantworten wir mit Enter.

Wir starten mit den beiden Kommandos den Server und die Weboberfläche von Seafile

./seafile.sh start

./seahub.sh start 8000

An dieser Stelle geben wir eine Email Adresse und ein Passwort ein. Das sind nachher die Anmeldedaten für unsere Seafile Clients. Als Beispielnamen „mail2@ruezustand.net“ und als Passwort „seafilepasswort“.
Die Grundinstallation ist so schon abgeschlossen. Jeder wollen wir die Verbindung zu unserem Seafile Server mit SSL absichern. Daher sind noch ein paar weitere Schritte nötig.
Wir öffnen nun eine Konfigurationsdatei mit

nano /home/seafile/ccnet/ccnet.conf

und ersetzen die Zeile

SERVICE_URL = http://ruhezustand.selfhost.eu:8000

durch

SERVICE_URL = https://ruhezustand.selfhost.eu:8001

Anschließend die Datei wie gewohnt speichern und schließen (ctrl+o, ctrl+x). Nun muss noch eine weitere Datei angepasst werden.

nano /home/seafile/seahub_settings.py

Hier muss folgende Zeile eingefügt werden:

HTTP_SERVER_ROOT='https://ruhezustand.selfhost.eu:8001/seafhttp'

Anschließend die Datei wie gewohnt speichern und schließen (ctrl+o, ctrl+x)

Der nächste Schritt darf keinesfalls im Benutze „Seafile“ ausgeführt werden. Wir loggen uns aus dem Benutzer entsprechend aus und sind wieder in unserem Standartbenutzer „nepomuk“.

exit

Wir installieren nun den Webserver ngnx

sudo apt-get install nginx

Die Frage ob wir weitermachen wollen beantworten wir mit „y“.
Die Konfiguaration des Webservers wir mit den beiden folgenden Befehlen angepasst.

sudo sed -i "s/worker_processes 4;/worker_processes 1;/g" /etc/nginx/nginx.conf

und

sudo sed -i "s/worker_connections 768;/worker_connections 128;/g" /etc/nginx/nginx.conf

Anschließend wird der Webserver gestartet:

sudo /etc/init.d/nginx start

Da wir für unseren spätere Kalender und Kontakte Server Baikal ebenso Nginx verwenden und hierfür weitere Konfigurationen notwendig sind machen wir diese Einstellungen auch gleich.

Wir führen folgenden Befehl aus:

sudo apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd

Die Frage ob wir weitermachen wollen beantworten wir mit „y“.

Anschließend muss erneut eine Konfiguration von Ngnix geändert werden.
Achtung: Beim ändern diese Dateien sehr sorgfältig arbeiten und besser zweimal kontrollieren, was man genau löscht und einfügt. Ein fehlendes Zeichen oder eines zuviel kann dazu führen, dass nachher nicht funktioniert.

Tipp: In Nano lassen sich mit ctrl+k ganze Zeilen auf einmal löschen.

sudo nano /etc/nginx/sites-available/default

Hierzu muss die erste Codepassage durch die zweite ersetzt werden.


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}


# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}

ersetzen durch:


# pass the PHP scripts to PHP-FPM server listening on unix socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}


# deny access to .htaccess files
location ~ /\.ht {
deny all;
}

Ngnix1

 

 

 

 

 

 

Desweiteren muss in allen Zeilen in denen

index index.html index.htm
noch die Seite

index.php
hinzugefügt werden.

„index.php“ muss ingesamt in drei Zeilen eingefügt werden.

ngnx2

 

 

 

 

 

Anschließend die Datei wie gewohnt speichern und schließen. (ctrl+o, ctrl+x)

Im Anschluss daran beide Befehle ausführen:

sudo /etc/init.d/nginx restart

und
sudo /etc/init.d/php5-fpm restart

Nachdem der Webserver jetzt entsprechend konfiguriert ist, machen wir uns an die SSL Verschlüsselung von Seafile. Wir werden hierbei ein selbsterstelltes SSL Zertifikat erstellen.

Es sind folgende Befehle auszuführen:

sudo mkdir /etc/nginx/ssl

cd /etc/nginx/ssl

sudo openssl genrsa -out seahub.key 2048

sudo openssl req -new -key seahub.key -out seahub.csr

Die Frage nach dem Land beantwortet wir mit „DE“, den Common Name mit „ruhezustand.selfhost.eu“ alle anderen Abfragen überspringen wir mit Enter. Weiter geht´s mit:

sudo openssl x509 -req -days 3650 -in seahub.csr -signkey seahub.key -out seahub.crt

Wenn das erledigt ist legen wir für den Webserver Ngnx noch eine entsprechende Konfigurationsdatei an.

sudo nano /etc/nginx/sites-available/seahub

In diese Datei wird nun folgender Inhalt hineinkopiert:


server {
listen 8001;
ssl on;
ssl_certificate /etc/nginx/ssl/seahub.crt;
ssl_certificate_key /etc/nginx/ssl/seahub.key;
server_name ruhezustand.selfhost.eu;
error_page 497 https://$host:$server_port$request_uri;


client_max_body_size 10G; # set max upload size


location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;


fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;


access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
}


#location /media {
# root /home/seafile/seafile-server-latest/seahub;
#}
}

der Server Name in Zeile 6 muss natürlich entsprechend angepasst werden!

seafile

 

 

 

Die Datei wie gewohnt speichern und schließen.

Anschließend müssen noch folgende Befehle ausgeführt werden.

sudo ln -s /etc/nginx/sites-available/seahub /etc/nginx/sites-enabled/seahub

sudo /etc/init.d/nginx restart

Wir wechseln wieder in den Seafile user mit

sudo su seafile
und
cd

und führen dann folgendes aus:
crontab -e

und fügen auf der untersten Zeile folgendes ein:
@reboot sleep 20 && /home/seafile/seafile-server-latest/seafile.sh start && /home/seafile/seafile-server-latest/seahub.sh start-fastcgi

Damit werden die entsprechenden Seafile Dienste immer beim Neustart des Raspberrys gestartet. Die Datei wie gewohnt speichern und schließen.
Wie auch schon vorher müssen innerhalb der Fritzbox noch folgende Ports freigeschaltet werden.
443, 8001, 8082, 10001, 10002, 12001

Ist das erledigt, starten wir den RPi neu. Dazu den müssen wir den User „Seafile“ verlassen.
exit

und starten dann wie gewohnt neu (sudo reboot).
Wir öffnen nun einen Browser auf unserem Laptop oder Desktoprechner und geben in der Adresszeile folgendes ein:

https://ruhezustand.selfhost.eu:8001

Der Webbrowser wird sich zunächst beschweren, dass hier ein nicht sicheres Zertifikat vorliegt. Das liegt ganz einfach daran, dass wir das SSL Zertifikat selbst signiert haben.

Es öffnet sich die Anmeldemaske des Webinterfaces von Seafile. Wir melden uns mit den vorhin festgelegten Anmeldedaten für Seafile an. („mail2@ruezustand.net“,  „seafilepasswort“).
Anschließend befinden wir uns im Webinterface von Seafile, was praktisch genauso funktioniert wie bei Dropbox. Wir können gleich testweise eine Bibliothek anlegen und über das Webinterface eine Datei von unserem Rechner hochladen. Dazu gehen wir in die neu angelegte Bibliothek und klciken auf „Hochladen“.

Seafile2

 

 

 

Als letzten Schritt installieren wir die entsprechenden Clients für Mac und iPhone/iPad:

Ist Seafile für den Mac installiert, muss zunächst ein Ordner ausgewählt werden, indem ein Seafile- Unterordner erstellt werden soll. Anschließend geben wir die entsprechenden Zugangsdaten für den Client ein.

seafileclmac

 

 

 

 

 

Wir können die erstellten Bibliotheken nun in unserem Client sehen und mit entsprechenden Ordnern synchronisieren und herunterladen. Die geht mit einem Rechtsklick auf „Sync this library“.

Seafile Client

 

 

 

 

 

 

Jede Datei, die wir nun in den entsprechenden Library-Ordner legen wird nun mit dem Seafile-Server synchronisiert. Eben wie bei Dropbox!

Auf dem iPad/iPhone funktioniert das ganze genauso. Wir öffnen die App und wählen die Option „Konto hinzufügen“ und tippen auf „Privater Seafile Server“. Wir geben hier exakt die gleichen Daten ein, wie für den Mac Client. Auch hier wird es zunächst die Meldung geben, dass unser Server Zertifikat nicht Vertrauenswürdig ist.

 

9. Installation von Baikal

Als letztes Kapitel in dieser Tutorial installieren wir „Baikal“. Mit Baikal können wir unseren eigenen Kalender- und Kontakteserver auf dem Raspberry Pi einrichten und so sämtliche Kalendereinträge und Adressen über mehrere Geräte synchron halten. Quasi analog zu Apples iCloud. Die Anleitung stammt ebenso von Jan Karres.

Zuerst sind noch einige Softwarepakete nötig, die wir installieren müssen.
Wir befinden uns wieder in unserem normalen User „nepomuk“!

sudo apt-get install sqlite php5-sqlite

Die Frage ob wir weitermachen wollen beantworten wir wie gewohnt mit „yes“.

Wir müssen nun nochmals einige Änderungen am Webserver Nginx vornehmen.

sudo nano /etc/nginx/sites-available/default

Wir müssen die folgenden Zeilen suchen:


# pass the PHP scripts to PHP-FPM server listening on unix socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}


# deny access to .htaccess files
location ~ /\.ht {
deny all;
}

ersetzten mit


location ~ ^(.+\.php)(.*)$ {
try_files $fastcgi_script_name =404;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}
rewrite ^/.well-known/caldav /baikal/cal.php redirect;
rewrite ^/.well-known/carddav /baikal/card.php redirect;
charset utf-8;
location ~ /(\.ht|Core|Specific) {
deny all;
return 404;
}

Wir speichern und schließen die Datei (ctrl + x; ctrl + o) und starten den Webserver neu.

sudo /etc/init.d/nginx restart

Wir laden nun Baikal runter und passen die Installation entsprechend an, indem wir nacheinander folgende Befehle ausführen:

cd /usr/share/nginx/www

sudo wget http://baikal-server.com/get/baikal-flat-0.2.7.zip

sudo unzip baikal-flat-*.zip

sudo rm baikal-flat-*.zip

sudo mv baikal-flat/ baikal/

sudo chown -R www-data:www-data baikal/

sudo find baikal/ -type d -exec chmod 755 {} \;

cd baikal/

sudo touch Specific/ENABLE_INSTALL

sudo chmod 755 Specific/

sudo chmod 755 Specific/db/

sudo chmod 755 Specific/db/db.sqlite

Wie auch bei der Installation von Seafile wollen wir die Baikal Datenübertragung mit SSL absichern.
Dazu wieder der Reihe nach die folgenden Befehle abarbeiten.

cd /etc/nginx/ssl

sudo openssl genrsa -out baikal.key 2048

sudo openssl req -new -key baikal.key -out baikal.csr

Die Frage nach dem Land beantwortet wir mit „DE“, den Common Name mit „ruhezustand.selfhost.eu“ alle anderen Abfragen überspringen wir mit Enter. Weiter geht´s mit:

sudo openssl x509 -req -days 3650 -in baikal.csr -signkey baikal.key -out baikal.crt

Damit die SSL Verschlüsselung funktioniert, müssen wir erneut eine Einstellung am Webserserver Ngnix vornehmen.

sudo nano /etc/nginx/sites-available/default

Die folgenden Zeilen


server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6

müssen durch folgende Zeilen ersetzt werden:


server {
listen 80;
server_name ruhezustand.selfhost.eu;
rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}


server {
listen 443 ssl;
server_name ruhezustand.selfhost.eu;
ssl_certificate /etc/nginx/ssl/baikal.crt;
ssl_certificate_key /etc/nginx/ssl/baikal.key;

Achtung: In der Zeile „server_name“ muss die verwendete DynDNS natürlich angepasst werden.

baikalngnix

 

 

 

 

 

 

Wir speichern und schließen die Datei (ctrl + x; ctrl + o) und starten den Webserevr neu.

sudo /etc/init.d/nginx restart

Wie bei allen anderen Diensten müssen für Baikal noch der entsprechende Port freigeschaltet werden:

80

Wir rufen die Baikal Verwaltungsoberfläche nun in unserem Browser auf und erstellen zunächst einen Benutzerzugang für den Admin. (Die Fehlermeldung bezüglich des SSL Zertifikates wird wieder auftauchen)

http://ruhezustand.selfhost.eu/baikal/admin/install/

Wir stellen die korrekte Zeitzone ein und lassen alle anderen Einstellungen so wie sie sind und vergeben ein Passwort und klicken auf „save changes“.

baikalinstall

 

 

 

 

 

 

Auch auf der folgenden Seite lassen wir alle Einstellungen wie sie sind. Wir klicken wieder auf „save changes“ und kommen zu einer Seite auf der wir nochmal bestätigen müssen. Anschließend kommen wir zu einer Eingabemaske in die wir das gerade fesetgelegte Passwort eingeben.

Im oberen Menü legen wir unter „user and ressources“ einen neuen Nutzer an, z.b: ruhezustand.
Desweiteren vergeben wir noch eine E-Mail Adresse und ein Passwort. (z.B. „mail2@ruhezustand.net“, „baikalpasswort“)

Screen Shot 2014-11-07 at 5.17.37 pm

 

 

 

 

 

 

Mit einem Klick auf „save changes“ ist unser User nun angelegt und wir können nun auf den Button „Calendar“ klicken und kommen in die Übersicht aller angelegten Kalender.

Screen Shot 2014-11-07 at 5.19.00 pm

 

Mit einem Klick auf „delete“ und erneuter anschließender Bestätigung löschen wir den „Default“ Kalender  und erstellen mit „add Calendar“ einen neuen Kalender, den wir exemplarisch „privat“ nennen. Wir setzen hier auch die Häckchen für „to do´s“ und „notes“. So können wir später z.B. auf dem Mac und dem iPhone die entsprechenden Apps für Notitzen und Erinnerungen nutzen.

Mit einem Klick auf „save changes“ ist der Kalender erstellt und wir können den Schritt beliebig oft wiederholen um einen anderen Kalender z.B. „Arbeit“ oder ähnliches anlegen.

Wir gehen nun zurück zur „user list“ und legen auf die gleiche Art ein Adressbuch für den nutzer an.
Dies nennen wir auch „privat“. Für das Adressbuch sind keine weiteren Einstellungen nötig.

Als letzter Schritt muss der Kalender noch auf den gewünschten Geräten eingebunden werden.
Für die Einbindung auf iPhone/iPad muss folgendes gemacht werden:

In der Einstellungs-App die Option „Mail, Kontakte, Kalender“ aufrufen. Dann auf „Account hinzufügen“ tippen und „andere“ auswählen.
Für den Kalender wählen wir „CalDAV-Account hinzufügen“.
Die Server Adresse ist für unser Beispiel:


https://ruhezustand.selfhost.eu/baikal/cal.php/principals/ruhezustand/

Für andere eventuelle andere Nutzernamen die gerade eben bei der Baikal Einrichtung verwendet wurden und für andere DynDNS Adressen gilt folgendes (ohne die eckigen Klammern!):


https://[DynDNS]/baikal/cal.php/principals/[baikalusername]/

Als Benutzername und Passwort sind die selben, die bei der Baikal Installation für den Nutzer festgelegt wurden. (Also „ruhezustand“ und „baikalpasswort“)

caldav

 

 

 

 

 

 

Die Beschriebung kann nach Lust und Laune angepasst werden. Mit einem Tipp auf „weiter“ bestätigen, das auftauchende Fenster mit „Fortfahren“ bestätigen (Dies liegt wiederum an dem selbstsinierten SSL Zertifikat. Im nächsten Fenster mit „sichern“ bestätigen und Fertig!

Wenn wir beispielsweise auf dem iPad die Kalender-App öffnen und auf „Kalender“ tippen müsste der eben angelegte Kalender zu sehen sein.

kalenderipad

 

 

 

 

 

 

Um die Kontakte auf iPhone/iPad einzubinden geht man genauso vor, also: Einstellungen-App ->“Mail, Kontakte, Kalender“ -> „Account hinzufügen“ -> „andere“.
Hier wählen wir nun „CardDAV Account hinzufügen“.

Die Daten sind hier fast die selben wir für den Kalenderdienst.
Für unser Beispiel:


https://ruhezustand.selfhost.eu/baikal/card.php/principals/ruhezustand/

oder eben allgemein:

https://[DynDNS]/baikal/cal.php/principals/[baikalusername]/

iPad von Moritz 2014.11.03_4

 

 

 

 

 

 

Hinweis: Wenn bislang unter iOS bzw. OSX die Kalender und Konatktefunktion durch iCloud verwendet, müssen die Kontakte etc. natürlich entsprechend exportiert werden und dann auf dem neuen Baikal-Dienst importiert werden. Aus Gründen der Übersichtlichkeit empfiehlt es sich dann auch die entsprechenden iCloud Dienste zu deaktivieren.

iPad von Moritz 2014.11.03_3

 

 

 

 

 

 

Um alles nun am Mac einzubinden öffnet man auch die die Systemeinstellungen und anschließend die „Internet-Accounts“ und fügt auch hier einen „anderen Account“ hinzu und wählt hier auf je nach dem „CalDaV“ für den Kalender und „CardDAV“ für Kontakte. Als „Account-Typ“ sollte hier „manuell“ ausgewählt werden. Die Serveradresse und Benutzername/Passwort sind genau die selben wie für iPhone/iPad.

Update:

Scheinbar ist unter Mac OSX Yosemite die Serveradresse für den CalDav-Account anders, bzw. der Servieradresse die auf iOS verwendet wird funktioniert so nicht.
Hier muss die Adresse so aussehen:


https://ruhezustand.selfhost.eu/baikal/card.php/adressbooks/ruhezustand/privat

oder allgemein:


https://[DynDNS]/baikal/card.php/adressbooks/[baikalusername]/[adressbuchname]

 

Wenn alles hinhaut, können wir nun auf dem iPhone einen Kalendereintrag machen, der dann ganz ohne iCloud auch auf dem iPad auftaucht.

Für die nicht Mac bzw. iOS User:
Soweit ich weiß, wird das CalDAV bzw. CardDaV Protokoll bei Android nicht standartmäßig unterstützt. Mit Hilfe dieser App sollte es hinhauen. http://davdroid.bitfire.at/

Windows-Phone Nutzer finden vielleicht hier hilfe:
http://phasenkasper.de/baikal-unter-windows-phone-8-1-nutzen

Für Windows auf dem Desktop bzw. Notebook bietet sich der Mozilla Thunderbird und der em Client an. Da sollten sich auch beide Protokolle einbinden lassen.

 

10. Schluss

Das wars. Mit diesem Leitfaden sollte es eigentlich jedem möglich sein eine eigene Cloud zu Hause aufzusetzten. Wer Spaß an der Bastelei mit dem Raspberry Pi gefunden hat, sollte sich auf jeden Fall durch den Blog von Jan Karres klicken.
Da gerade Seafile sehr oft mit Updates und  neuen Funktionen versorgt wird, empfiehlt sich besonders dieser Artikel:

Jan Karres – Seafile Server Upgrade

Zusätzlich möchte ich noch eine Folge des Chaosradios zum Thema Selfhosting empfehlen.
Chaosradio Folge 199: Eigenhostig: Elend oder Erlösung.
http://chaosradio.ccc.de/cr199.html

 

Kommentare (22) Schreibe einen Kommentar

  1. Pingback: re:oyd (14): Baikal@Raspberry Pi an Speedport W 724V | SaGrLand

  2. Ich bin dieser Anleitung (einer ziemlich guten übrigens) genau gefolgt, obwohl ein paar Schritte mir komisch vorkamen, weil ich sie nirgendwo anders gesehen habe.

    Jedenfalls funktioniert das ganze im heimischen WLAN, wenn ich Seafile über die IP-Adresse (Port 8001) aufrufe. Nehme ich den Android Client und versuche mich im WLAN oder außerhalb des WLANs einzuloggen, komme ich nicht rein. Stattdessen kriege ich die Meldung „Network Error“ und eine „Anmerkung: Serveradresse sollte folgenden Port enthalten, z.B. http://www.example.com:8000„. Natürlich gebe ich auch hier die URL mit Port 8001 an, aber das ändert nichts.

    Was könnte ich falsch gemacht haben?

    Antworten

  3. Auch auffällig: Wenn ich einen weiteren Nutzer einladen möchte, gelingt mir das zwar, aber ich kriege die Meldung, dass keine E-Mail verschickt werden konnte, weil der E-Mail-Dienst falsch/fehlerhaft (?) konfiguriert sei.

    Antworten

  4. Noch ein letztes Kommentar, dann ist Schluß ;-): Wenn ich versuche im WLAN über die Domain (anstatt über die IP) auf Seafile zuzugreifen, kriege ich den Fehler „Error: The requested URL could not be retrieved. Connection to ‚IP–Adresse‘ failed.“

    Mir kommt das ganze Verhalten des Servers irgendwie willkürlich vor.

    Antworten

  5. Hallo Andreas,

    Wenn das ganze nur innerhalb des WLAN funktioniert, dann klappt scheinbar irgendwas mit deiner DynDNS nicht, sofern du eine benutzt. Das hängt jetzt natürlich von deinem Router und dem DynDNS-Dienst ab….Das würde auch den Fehler erklären, dass auch im heimischen Netzwerk die Domain nicht funktioniert.
    Eventuell checkst du an dieser Stelle nochmal deine Router- und DynDNS Einstellungen.
    Sollte also keine willkürliche Laune des Servers sein 🙂

    Die Einladung per eMail habe ich erst einmal testweise genutzt.
    Damit das funktioniert, muss man noch eine extra Konfiguration vornehmen.
    Habe da keine zuverlässigen Ergebnisse bekommen, daher ist es in dieser Anleitung (noch) nicht drin.
    Schau mal hier, vielleicht hilft das:
    http://manual.seafile.com/config/seahub_settings_py.html

    Viel Erfolg bei der Fehlersuche!

    Antworten

  6. Habe jetzt herausgefunden woran es lag: Habe nur die TCP-Ports freigeschaltet, nicht die UDP-Ports (kenne mich da ja nicht aus). Die braucht man aber auch. D’oh.

    Antworten

  7. Ich habe ein Problem bei crontab -e
    Kann ich nicht wie sonst bei nano bedienen.
    wie füge ich ein, bzw speichere und schliesse ich

    Antworten

  8. Hallo Ben,

    Wie rufst du denn den crontab auf? Über ein Mac Terminal oder benutzt du einen SSH Client?
    Wenn ich im Terminal „crontab -e“ eingebe, komme ich automatisch in Nano…
    Da kann ich dann auch ganz normal speichern…

    Antworten

  9. Ich nutze putty
    Gute Frage, warum ich das nicht so bedienen kann wie bei nano
    Muss ich da vielleicht noch etwas ändern damit das dann über nano läuft

    Antworten

  10. Sorry, bei Putty kann ich leider nicht helfen.
    Wenn du ein iOS Gerät hast, empfehle ich mal „Serverauditor“ – da geht’s bei mir auch über Nano.

    Antworten

  11. Problem gelöst.

    Die Umstellung „WebDAV authentication type“ in den Baikal Settings von Digest auf Basic, hat es gebracht.

    Ein gutes neues Jahr! 🙂

    Antworten

      • ..die Umstellung auf „Basic“ hat zur Folge, dass mit dem Desktop und Laptop (Ubuntu, Thunderbird, Lightning), nur per IP-Adresse auf die Kontakte und Kalender zugegriffen werden kann. Im Falle des Laptop nicht ganz optimal, für mich aber zu verschmerzen.

        Antworten

  12. Nachdem ich das Tutorial zum Thema Seafile durch habe, läuft der Server und Seafile. Allerdings kann ich nicht synchronisieren. Sprich über das Webfrontend kann ich Ordner anlegen Dateien hoch laden usw.
    Aber der Client auf Ubuntu und Android verbindet sich nicht mit dem Server um Dateien hoch oder runter zu laden bzw. zu synchronisieren. Die Dateien und Odner werden allerdings im Client angezeigt und ich kann sie öffnen und anzeigen lassen. Wo kann der Fehler liegen?

    Grüße
    Jens

    Antworten

  13. Das Totorial ist super, habe alles zum laufen bekommen ausser baical, wenn ich https://dyndns/baikal/admin/install/ aufrufe muss ich das ssl zertifikat annehmen doch dann kommt ein Error „404 not found“ und unten steht „nginx/1.6.2“. Ich gehe davon aus, dass ich irgendetwas in der Datei /etc/nginx/sites-available/default etwas falsch eingetragen habe. könnte jemand bitte die gesammte Datei, wie die am Ende aussehen soll einmal hier posten?

    Antworten

  14. Hallo Romka

    Das Stamm Verzeichnis für Nginx in der Version 1.6.2 hat sich geändert.
    ALT – /usr/share/nginx/www
    NEU – /usr/share/nginx/html

    Bin auch schier verzweifelt.

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.