Raspberry Pi 2 - Anwendungen
Thema: Raspberry Pi 2 - Anwendung 'Seafile' Inhalt An diesem Workshop installieren und betreiben wir eine eigene Cloud, die Version Seafile mit umfangreichen Funktionen Prinzipschema Seafile Komponenten Seafile Installation Ich empfehle, die stabile Version Raspian Wheezy als Operating System zu verwenden. Server für den Raspberry Pi Adresse des Links kopieren (rechte Maustaste) Beispiel: Add user und su seafile Set-up Prozedur (teilweise) Schritt 6 Start Seafile und Seahub Abschluss der Konfiguration Nach einem Neustart oder nach einem Stromausfall soll das Programm automatisch starten: Crontab Eingabe Konfigurations-File mit WinSCP _______________________________________________________ In unserem Fall für ext4 Wer bereits einen Dropbox-Account hat, möchte einen Client auf dem Raspberry Pi einrichtem. App Key Dropbox auf dem Raspberry Pi installiert Seafile von aussen zugänglich machen Damit unser Seafile-Server von ausserhalb unseres Heimnetzwerkes erreicht werden kann sind folgende Voraussetzungen notwendig: Zugriff auf Pi von extern Die (externe) IP-Adresse unseres Seafile-Servers muss bekannt sein 2. Router-Konfiguration Eine Portweiterleitung (port forwarding) ist die Weiterleitung einer Verbindung (hier z.B. vom Client) auf einen bestimmten Port zu einem anderen Computer (hier unser Pi als Server) Beispiel Portweiterleitung auf dem Router Unterlagen: http://www.penguintutor.com/linux/tightvnc SSH-Verbindung Download and start PuTTY: SSH mit Windows - Eingabe vor Add SSH mit Windows - Eingabe VNC Passwort VNC/SSH mit Windows Inbetriebnahme von Seafile Seafile Anmeldefenster Beispiel Anmeldung mit Android Seafile Client Arbeiten mit Seafile Eine ausführliche Anleitung in deutscher Sprache befindet sich hier Seahub: Bibliotheken Seahub: Angeschlossene Geräte Mitteilungen Freigaben: Hier geladen vom Smartphone Excel Import/Export von Adressen Dienstag, 8. März 2016
Der crontab bei Seafile funktioniert nicht richtig, obschon er scheinbar richtig eingegeben ist. Dienstag, 8. März 2016 Mittwoch, 10. Februar 2016 Zugriffe heute: 1 - gesamt: 6649.
Termin: 13. Februar 2016
Referent: Werner Büchli, HB9CZV
Installation von Seafile
auf dem Raspberry Pi als Server
Option: Installation von Dropbox
Netzwerk-Konfiguration
Zugriff von aussen (weltweit)
Inbetriebnahme
Einloggen via Browser und mobile Geräte
Arbeiten mit Seafile
Manipulation von Bibliotheken, Ordnern und Dateien als Admin und als Client
Organisation, Speicherzuordnung, Freigaben, Mitteilungen, ... als Admin
Komponenten
Seafile Server besteht aus folgenden Komponenten:
Seahub - Webinterface (hier mit FastCGI als Applikation von Apache Webserver*)
Seafile server - Daten Upload/Download/Synchronisation
Ccnet server - erlaubt die Kommunikation zwischen den Modulen
* Prinzip CGI siehe auch Workshop 2015 (TX-Steuerung). In diesem Workshop installieren wir die direkte, einfachere Variante
Einige Tipps vorneweg:
- Das Arbeiten als Admin im Browser geht am schnellsten mittels PC/Laptop (tightvncserver auf Pi und VNC Viewer auf dem Client, bzw. mit einem Browser auf dem PC/Laptop). Es geht natürlich auch mit Maus und Tastatur direkt am Raspberry Pi, dauert jedoch bedeutend länger.
- Man kann beliebige Ordnern auf dem Client PC synchronisieren. Zudem kann man den ganzen Desktop synchronisieren und hat damit ein 'live' Back-up der aktuellen Arbeiten.
- Wer bereits mit Dropbox arbeitet, kann einzelne wichtige Ordner der Dropbox mit Seafile synchronisieren. Doppelt genäht, hält besser !
- Die Bibliotheken können im Seafile Client (zusätzlich) verschlüsselt werden und sind so absolut sicher gegen Hackerangriffe, umso mehr als der Server auf dem Raspberry Pi privat zuhause installiert ist (Voraussetzung sind natürlich gute Passwörter für den Server-Zugriff und die Verschlüsselung der Bibliothek).
- Sehr praktisch ist der direkte Upload von der Smartphone-Kamera (wie auch in Dropbox realisiert).
Schritt 1
Zuerst sollte man (wie vor jeder Installation) ein Update durchführen- Dazu öffnen wir ein Terminal und geben folgende Befehle (mit copy/past) ein:
pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade
(bei Raspbian Jessie via Desktop - Preferencies - Add/Remove Software - Option)
Seafile benötigt noch einige Pakete:
pi@raspberrypi ~ $ sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging sqlite3
Mit 'y' bestätigen. Die Pakete werden installiert.
Schritt 2
Da Seafile als Service im Hintergrund ausgeführt wird, ist es vorteilhaft einen neuen Benutzer 'Seafile' zu erzeugen, unter welchem dann das Programm 'Seafile' konfiguriert und gestartet werden kann.
pi@raspberrypi ~ $ sudo adduser seafile
Anschliessend wechseln wir zu diesem Benutzer und mit cd ins Basisverzeichnis 'Seafile':
pi@raspberrypi ~ $ sudo su seafile (su = switch user)
seafile@raspberrypi /home/pi $ cd
seafile@raspberrypi ~ $
Anmerkung: Mit dem File Manager (grafische Oberfläche) kann der Inhalt des Verzeichnisses 'Seafile' verfolgt werden.
Schritt 3
Wir erstellen nun einen neuen Ordner 'Seafile', in welchem das zu ladende Seafile-Programm (zipp) gespeichert werden kann
seafile@raspberrypi ~ $ mkdir seafile (make directory)
Die aktuelle Version von Seafile findet man unter:
https://www.seafile.com/en/download/
Anmerkung: Zurzeit steht dort nur 'Latest Version'.
'Latest Version' anklicken und bei 'Downloads' mit der rechten Maustasze die Adresse des Links 'seafile@raspberrypi /home/pi $' kopieren z.B. in der aktuellen Version wir folgender Link in der Zwischenablage gespeichert:
zur Zeit: https://github.com/haiwen/seafile-rpi/releases/download/v5.0.4/seafile-server_stable_5.0.4_pi.tar.gz
Bei einer neueren Version, müssen alle Befehle auch dahingehend verändert werden z.B anstatt 5.0.4 muss z.B. 5.0.5 eingesetzt werden.
Schritt 4
Wir laden nun das gezippte Seafile Programm in den eben neu erstellten Ordner 'Seafile' (wget plus den kopierten Link)
seafile@raspberrypi ~ $ wget https://github.com/haiwen/seafile-rpi/releases/download/v5.0.4/seafile-server_stable_5.0.4_pi.tar.gz
und entzippen es in ein weiteres neue Verzeichnis 'seafile-server-5.0.4' mit dem Befehl:
seafile@raspberrypi ~ $ tar -xvf seafile-server_stable_5.0.4_pi.tar.gz
tar (entzippen)
'- ' (Bestätigung notwendig)
xfv (x = extract, f = file, v = verbose/vollständig)
Optional kann das gezippte File wieder gelöscht werden:
seafile@raspberrypi ~ $ rm seafile-server_stable_5.0.4_pi.tar.gz
Schritt 5
Wir springen nun in das eben erstellte Verzeichnis 'seafile-server-5.0.4' wo sich das entzippte Programm Seafile befindet ...
seafile@raspberrypi ~ $ cd seafile-server-5.0.4
.. und starten die Konfiguration-Prozedur:
seafile@raspberrypi ~/seafile-server-5.0.4 $ ./setup-seafile.sh
Hier führt uns ein Assistent durch die verschiedenen Abfragen:
Name: z.B MeineCloud oder Seafile
Am besten lässt man alle Ports auf 'default' ausser man benötigt eines dieser Ports für andere Programme.
Pfad des Speicherorts: 'default', falls wir keinen externen Speicher wie z.B einen USB-Stick oder eine Festplatte verwenden wollen
Danach muss man noch eine Mailadresse und ein Passwort für den späteren Login im Webclient wählen.
Bestätigung der Konfiguration
Start von Seafile
Nun starten wir Seafile (File synchronization service) und Seahub (Web Interface):
seafile@raspberrypi ~/seafile-server-5.0.4 $ ./seafile.sh start
seafile@raspberrypi ~/seafile-server-5.0.4 $ ./seahub.sh start
Automatischer Start bei Reboot
_________________________ ev. weglassen __________________________
Eingabe: seafile@raspberrypi ~ $ sudo crontab -e
Dies startet den Cron-Daemon. Er dient der zeitbasierten Ausführung von Prozessen (griechisch chronos = Zeit). Die 2 auszuführenden Jobs werden in eine Tabelle ganz unten eingefügt:
@reboot /home/seafile/seafile-server-5.0.4/seafile.sh start
@reboot /home/seafile/seafile-server-5.0.4/seahub.sh start
(Achtung: Die Version 5.0.4 kann ändern ! )
_________________________ ev. weglassen __________________________
Wir melden uns nun als 'root' an und geben crontab -e ein und setzen die folgende Zeile ganz unten ein:
@reboot /home/seafile/seafile-server-5.0.4/seahub.sh start
@reboot /home/seafile/seafile-server-5.0.4/seahub.sh start
Achtung: Die Version 5.0.4 kann ändern !
Das Konfigurations-File kann auch mittels eines FTP-Programms modifiziert werden:
Option (falls der Pi nicht automatisch mounten sollte):
USB-Stick und USB-Festplatte einbinden
Das primäre Speichermedium des Raspberry Pis ist eine SD- bzw. microSD-Karte beim Pi 2. Manchmal reicht die Kapazität dieser SD-Karte nicht aus und man möchte einen USB-Stick oder eine externe Festplatte mittels USB einbinden. Dies kann der Fall sein wenn man Pi als Cloudserver für OwnCloud oder wie in unserem Fall für Seafile nutzen möchte. Ein USB-Stick ist geräuschlos ist und kommt ohne externe Stromversorgung aus.
Wir installieren Treiber, damit NTFS und HFS+ Speichermedien eingebunden werden können.
sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse
Wir legen nun einen Ordner im Verzeichnis /media an, in den das USB-Speichermedium später eingebunden wird (Mountpoint genannt). Der Ordner kann z.B. 'usbstick' benannt werden.
sudo mkdir /media/usbstick
Nun führen wir folgenden Befehl in der Konsole aus und stecken anschließend das USB-Medium an (Stick). Daraufhin sollte in der Konsole eine Ausgabe aller angeschlossenen Speichermedien erscheinen. USB-Sticks heißen meist (hier sda1) sda und externe Festplatten hd, ggf. mit anhängender Nummer. Uns interessiert die erste und letzte Spalte des richtigen Gerätes mit dessen device Pfad und UUID (Universally Unique Identifier).
sudo blkid -o list -w /dev/null
Nachdem wir nun den device Pfad des USB-Speichermediums kennen und einen Mountpoint erstellt haben, können wir den USB-Stick (oder die USB-Festplatte) mit folgendem Kommando einbinden. Dabei muss man je nach Dateisystem ein anderes Kommando verwenden, sda1 durch den Namen des USB-Speichermediums und /media/usbstick/ durch den Mountpoint ersetzt werden. Die zwei pi Angaben müssen, sofern ein anderer Benutzer als pi auf das USB-Speichermedium zugreifen soll, durch dessen Namen ersetzt werden.
sudo mount -t ext4 -o defaults /dev/sda1 /media/usbstick
______________________ optional _________________________
Um das Speichermedium wieder zu dismounten/auszuwerfen, wenden wir folgenden Befehl an, wobei wir wieder den Mountpoint anpassen müssen.
sudo umount /media/usbstick
_______________________________________________________
Dropbox (in Arbeit)
(Anmerkung: Dropbox kann auch mit einem Browser bedient werden)
1. Wir benötigen erst mal einen 'Dropbox Uploader'
Wir öffnen ein Terminal und geben cd ein, damit wir sicher im Pfad /home/pi sind.
Dann geben wir folgenden Befehl ein:
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
(Falls dies nicht funktioniert, muss man git installieren:
sudo apt-get install git-core)
Nun listen wir die Files mit: ls
Wir sehen nun eine 'Dropbox-Uploader' Directory und wechseln in diese mit:
cd Dropbox-Uploader
nun wieder :
ls
Jetzt sollten wir drei Files sehen,wovon eines mit 'dropbox_loader.sh' bezeichnet ist
2. Jetzt noch etwas 'Sicherheit' mit dem API key
(Application programming interface key)
Nun führen wir folgendes Script aus:
./dropbox_uploader.sh
und sollten das folgende sehe:
Nun müssen wir die Website https://www.dropbox.com/developers/apps besuchen und in die Dropbox einloggen. Weiter müssen wir eine App generieren durch Drücken des Buttons 'create app'
Dann wählen wir “Dropbox API app”, “Files and Datastores” und beantworten die letzte Frage “Can your app be limited to its own, private folder?” mit OK, entsprechend den Bedürfnissen.
Schliesslich müssen wir unserer App noch einen eindeutigen Namen geben.
Nachdem wir unseren Schlüssel eingegeben haben, beantworten wir noch die Frage “app” or “full”. Der Pi fordert einen 'authorisation token' an und gibt eine URL zur Aktivierung
Falls alles richtig durchgefühtt wurde, folgendes Bild wird im Browser präsenziert:
1. Die (externe) IP-Adresse unseres Seafile-Servers muss bekannt sein
2. Der Firewall unseres Routers muss überwunden werden
3. Eine sichere Verbindung vom Client zu unserem Server muss aufgebaut werden
4. Option: Innerhalb des Tunnels Aufbau einer VNC-Verbindung (VNC=Virtual Network Computing)
1. IP-Adresse des Seafile-Servers
1a) Durch eine fixe IP-Adresse
Diese kann bei der Swisscom gegen eine monatliche Gebühr von zurzeit Fr. 10.-- gemietet werden.
1b) Durch die Verwendung eines Dynamischen DNS-Servers (Domain Name System)
Dieser Service ist gratis. Man muss allerdings meist die aktive Benutzung monatlich per Email bestätigen.
Die Konfiguration erfolgt im Router unter Angabe von:
- DDNS Anbieter (www.DynDNS.org, no-ip, ...)
- Hostname (z.B. hb9czv.does-it.net)
- Benutzername
- Passwort
SSH/VNC-Verbindung mit Linux (z.B. Mint)
_____________________________________________________________
Ungesicherte SSH/VNC Verbindung mit Linux
Login mit:
pi@raspberrypi ~ $ xtightvncviewer 192.168.1.30:1
(Einsetzen der entsprechenden eigenen IP Adresse)
Eingabe des Passwortes für den xtightvncserver
(Das Passwort muss nicht unbedingt sicher sein, da eine lokale Verbindung besteht)
_____________________________________________________________
Gesicherte SSH/VNC Verbindung mit Linux
Arbeitet man von extern, ist eine sichere Verbindung durch einen 'SSH Tunnel' (secure shell) unbedingt zu empfehlen.
Der Aufbau der gesicherten Verbindung erfolgt in 2 Schritten. Zuerst bauen wir einen Tunnel auf. Man kann sich das z.B. so vorstellen wie wenn wir durch einen Sumpf (Internet) eine von mehreren möglichen Röhren (SSH-Tunnels) für Trinkwasser verlegen.
_______________ einmalige Vorbereitung _________________
In einem ersten Schritt beschränken wir TightVNC auf den lokalen PC beschränken. Dies geschieht einmalig, indem wir die
Option -localhost beim Start des tightvncservers aktivieren:
Pfad: /etc/systemd/system/tightvncserver.service file
Editiere Linie 7: ExecStart=/usr/bin/tightvncserver -localhost :1
Jetzt den Server neu starten mit: tightvncserver
_______________ einmalige Vorbereitung _________________
Login des Client-PC zum Aufbau eines SSH-Tunnels (unsere 'Wasserröhre' Nr. 1):
pi@raspberrypi ~ $ ssh pi@hb9czv.does-it.net -L 5901:localhost:5901
(hb9czv.does-it.net oder 192.168.1.30 muss entsprechend angepasst werden;
lokal auch: pi@raspberrypi ~ $ ssh pi@192.168.1.30 -L 5901:localhost:5901)
Die Option -L kreiert den SSH-Tunnel vom vom Client (port 5901) zum Host-Computer (Server Pi als localhost). Port 5901 ist das Default-Port für Display 1; Port 5902 dasjenige für Display 2, etc.
Eingabe des Passwortes für den Pi (sicheres Passwort !)
Nun können wir bereits mit dem entfernten Pi (Server) auf Basis von Befehlszeilen arbeiten,
Um eine grafischen Oberfläche des entfernten PC's (Server) zu erhalten, müssen wir den tightvncviewer in einem zweiten Terminal starten, mit dem Befehl:
xtightvncviewer 127.0.0.1:1
Eingabe des Passwortes für den xtightvncserver
(Dieses Passwort muss nicht unbedingt sicher sein, da ja eine geschützte SSH-Verbindung besteht)
SSH/VNC-Verbindung mit Windows
Nach Aufbau der Verbindung starten wir auf dem Windows-Client den TightvncViewer
.. und wir bekommen die grafische Oberfläche des Seafile.Servers
Direkt im Browser eines PC's (als Admin oder Client)
Nun kann man sich über das Webinterface einloggen. Dieses finden wir unter unserer IP und unserem bei der Installation angegebenen Port
z.B. 192.168.x.x:8000 in die Adresszeile des Browsers eingeben. Port: 8000 (default)
Es erscheint nun ein Anmeldungsfenster:
Wir können nun direkt im Seahub des Servers (Raspberry Pi) Bibliotheken, Files und Ordner erstellen/ändern und löschen.
Anmeldung mit Windows Client
Dazu laden wir mit Windows, Android oder Mac den entsprechenden Seafile Client.
Dateien mit dem Seafile Client synchronisieren
Nachdem wir den Seafile Client installiert haben, schauen wir uns jetzt an, wie wir Bibliotheken damit synchronisieren können. Es gibt zwei verschiedene Arten, wie das möglich ist. Wir können Bibliotheken vom Seafile Server zum PC synchronisieren oder lokale Dateien in den Seafile Server hoch sychnronisieren.
Vollständige Bedienungsanleitung
Mobile Seafile Client
In Seahub werden alle Dateien und Ordnern in Bibliotheken organisiert. Jede Bibliothek kann verschiedene Ordner, Unterordner und Dateien enthalten. Sie können Ihre Dateien direkt im Seafile Webinterface (Seahub) organisieren. Dort können Sie auch gleich neue Bibliotheken anlegen.
Sie können in Ihren Bibliotheken Dateien und Ordner erstellen, umbenennen und löschen oder in andere Bibliotheken verschieben. Jede Bibliothek kann auf beliebig viele, unterschiedliche Geräte synchronisiert werden.
Dateien können innerhalb jeder Bibliothek hochgeladen, runtergeladen, gelöscht oder umbenannt werden.
Gruppen helfen Ihnen dabei, Benutzer innerhalb eines Seafile Servers besser zu organisieren. Sie können Benutzer z.B. in Abteilungen, Projektgruppen oder Teams aufteilen. In jeder Gruppe können die Benutzer dann „unter sich“ Dateien teilen, Gruppenbibliotheken führen und vieles mehr.
Seafile hat eine integrierte Kontakteverwaltung – quasi ein internes Adressbuch. Damit können Sie Benutzer innerhalb des gleichen Seafile Servers zu Ihren Kontakten hinzufügen. Kontakte können darüber hinzugefügt, bearbeitet und auch wieder gelöscht werden. Sobald ein anderer Seafile Benutzer zu Ihren Kontakten hinzugefügt ist, können Sie ihm eine private Freigabe schicken, ohne immer seine Emailadresse eingeben zu müssen. Das funktioniert auch mit privaten Nachrichten so.
Jedes Mal wenn Sie eine Benachrichtigung erhalten, ein anderer Benutzer eine Datei für Sie freigibt oder wenn es einen neuen Eintrag bei einer Gruppendiskussion gibt, wird Seafile Ihnen darüber einen Benachrichtigung schicken.
Alles weitere befindet sich in der Anleitung.
Uebungen
crontab (Ergaenzung)
Abfrage unter User 'Seafile': crontab -l (List/klein L)
Aenderung mit: crontab -e (Edit)
Dann erscheint der Editor 'nano'. Ganz unten den 'crontab' eintragen und mit Ctrl/o schreiben und mit Return abschliessen.
Ctrl/x beendet den Editor
Notizen