Archiv der Kategorie: Raspberry Pi

Ich werde hier alle meine Erfahrungen, Tipps und Projekte mit und über den Raspberry festhalten.

Raspberry als Druckserver

Auf dem Raspberry CUPS installieren und für den Benutzer „pi“ freigeben:

sudo apt-get install cups
sudo usermod -a -G lpadmin pi
sudo cupsctl --remote-any
sudo /etc/init.d/cups restart

Benutzeroberfläche über den Browser aufrufen:

https://localhost:631

Drucker installieren am Beispiel eines HP-Laserjets 5L:

Verwaltung/Drucker hinzufügen
AppSocket/HP JetDirect
Verbindung: socket://192.168.178.100:9100
Treiber auswählen

Libre Elec auf RaspberryPi

Installation

LibreElec installieren und erstmalig starten

Download von LibreElec und Installation auf SD-Karte wie hier beschrieben: https://libreelec.tv/downloads_new/

Dann den RaspberryPi mit der SD-Karte booten und Grundkonfiguration über Konfiguraitonsassistenten durchführen. Dabei ssh aktivieren.

Über ssh einloggen („tuxtv“ durch den Rechnernamen ersetzen, der im Konfigurationsassistenten eingegeben wurde):

ssh root@tuxtv

Sofern kein eigenes ssh-Passwort vergeben wurde, ist das Standard-Passwort libreelec

Freischaltcodes für Hardwaredecoder

Sofern Freischaltcodes für die Hardwaredecoder vorhanden sind, können diese in die config-Datei eingetragen werden:

mount -o remount,rw /flash
vi /flash/config.txt

Im Bereich License keys die entsprechenden Keys eintragen:

###################################################################
# License keys to enable GPU hardware decoding for various codecs #
# to obtain keys visit the shop at http://www.raspberrypi.com     #
###################################################################
 
decode_MPG2=0x00000000
decode_WVC1=0x00000000

Infrarotempfänger am GPIO einrichten

Der GPIO-Pin, an dem der Infrarotempfänger angeschlossen ist, muss in der config.txt eingetragen werden:

mount -o remount,rw /flash
vi /flash/config.txt

Dort im Abschnitt "End of default configuration" folgendes eintragen (dabei die korrekte Pin-Nummer angeben):

################################
# End of default configuration #
################################

dtoverlay=gpio-ir,gpio_pin=17

System neu starten

mount -o remount,ro /flash
reboot

Fernbedienung einrichten

Prinzipieller Funktionstest

Testen, ob GPIO-Konfiguration für lirc erkannt wurde:

dmesg | grep 'lirc'
[    5.554017] rc rc0: lirc_dev: driver gpio_ir_recv registered at minor = 0, raw IR receiver, no transmitter

Testen, ob lirc-device vorhanden:

ls -l /dev/lirc*

Testen, ob Fernbedienung prinzipiell erkannt wird:

killall lircd
mode2 -d /dev/lirc0

Zunächst wird das verwendet device ausgegeben (sollte mit dem zuvor ausgegebenen übereinstimmen):

Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0

Wenn die Fernbedienung prinzipiell funktioniert, dann kommt beim Drücken von Tasten auf der Fernbedienung im Terminal Ausgaben ähnlich wie:

pulse 2670
 space 804
 pulse 505
 space 396
 pulse 482
 space 394
 pulse 454
 space 847
 pulse 451
 space 850

Test beenden mit Strg+C und LibreElec neu starten:

reboot

Fernbedienung konfigurieren

Dienste stoppen:

systemctl stop kodi
systemctl stop eventlircd

Mögliche Protokolle ermitteln:

ir-keytable 
Supported protocols: other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp 

Scancodes der Fernbedienungstasten ermitteln:

ir-keytable -p <PROTOCOL> -t

Dabei die unterstützten Protokolle jeweils als <PROTOCOL> eintragen. Jedes Protokoll muss separat getestet werden. Sofern das korrekte Protokoll eingegeben wurde, das die Fernbedienung benutzt, werden beim Drücken einer Taste auf der Fernbedienung Scancodes ausgegeben. Diese können dann in einer Codetabelle eingetragen werden.

Codetabelle erstellen:

vi /storage/.config/rc_keymaps/one-for-all

In der ersten Zeile wird der Name der Fernbedienung und das verwendete Protokoll eingetragen und in den Folgezeilen werden dann den jeweiligen Scancodes die entsprechenden Tasten zugeordnet, wie z. B.:

# table one-for-all, type: rc-6
0x800f0400 KEY_0
0x800f0401 KEY_1
0x800f0402 KEY_2
0x800f0403 KEY_3
0x800f0404 KEY_4
0x800f0405 KEY_5
0x800f0406 KEY_6
0x800f0407 KEY_7
0x800f0408 KEY_8
0x800f0409 KEY_9
0x800f040d KEY_MENU
0x800f0412 KEY_PAGEUP
0x800f0413 KEY_PAGEDOWN
0x800f041e KEY_UP
0x800f041f KEY_DOWN
0x800f0420 KEY_LEFT
0x800f0421 KEY_RIGHT
0x800f0422 KEY_OK
0x800f0423 KEY_BACK
0x800f0423 KEY_EXIT
0x800f0426 KEY_EPG
0x1010 KEY_VOLUMEUP
0x1011 KEY_VOLUMEDOWN
0x100d KEY_MUTE

Eine Datei mit allen möglichen Tastenbezeichnungen kann mit folgendem Befehl erstallt werden:

irrecord --list-namespace > namespace.txt

Die Codetabelle muss dann noch durch einen Eintag in der rc_maps.cfg aktiviert werden:

vi /storage/.config/rc_maps.cfg

Dort den in der oben erstellten Keymap angegebenen Konfigurationsnamen (z. B. one-for-all) eintragen:

* * one-for-all 

Konfiguration testen:

ir-keytable -c -w /storage/.config/rc_keymaps/one_for_all
ir-keytable -r

Mappingtabelle für KODI erstellen

Datei mit Mappingtabelle anlegen/bearbeiten:

vi /storage/.kodi/userdata/Lircmap.xml
<lircmap>
<remote device="one-for-all-sat0847">
   <up>KEY_UP</up>
   <Down>KEY_DOWN</Down> 
   <Left>KEY_LEFT</Left> 
   <Right>KEY_RIGHT</Right> 
   <Select>KEY_OK</Select> 
   <Back>KEY_BACK</Back> 
   <Menu>KEY_MENU</Menu> 
   <pageplus>KEY_PAGEUP</pageplus>  
   <pageminus>KEY_PAGEDOWN</pageminus> 
   <zero>KEY_0</zero> 
   <one>KEY_1</one> 
   <two>KEY_2</two> 
   <three>KEY_3</three> 
   <four>KEY_4</four> 
   <five>KEY_5</five> 
   <six>KEY_6</six> 
   <seven>KEY_7</seven> 
   <eight>KEY_8</eight> 
   <nine>KEY_9</nine> 
   <guide>KEY_GUIDE</guide> 
   <stop>KEY_EXIT</stop>
</remote>
</lircmap>

System neu starten:

reboot

Fernbedienung testen

Erneut per ssh einloggen:

ssh root@tuxtv

Test der Fernbedienung starten:

irw

Bei einem Tastendruck auf der Fernbedienung sollte bei korrekter Konfiguration im Terminal eine entsprechende Meldung erscheinen, wie z. B.:

67 0 KEY_UP devinput

PiHole auf einem „RaspberryPi Zero W“ installieren

Raspbian Lite herunterladen und auf SD-Karte installieren

Prinzipiell kann als Basis jedes Linuxsystem verwendet werden. Sehr klein und schlank ist Raspbian lite, das hier heruntergeladen werden kann:

https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit

Dann das System entsprechend der Anleitung auf oben genannter Seite (z. B. mit Balena Etcher) installieren.

Karte auswerfen und neu mounten.

SSH und WLAN einrichten

SSH

Auf der Bootpartition der SD-Karte vor dem ersten Start die Datei ssh erzeugen:

touch ssh

Die Datei ssh kann leer bleiben. Diese aktiviert permanent den automatischen Start von SSH (und wird vom System nach dem ersten Start automatisch wieder gelöscht).

WLAN

Auf der Bootpartition der SD-Karte vor dem ersten Start die Datei wpa_supplicant.conf erzeugen:

vim wpa_supplicant.conf

mit folgendem Inhalt:

country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=1
network={
scan_ssid=1
ssid="wlanname"
psk="unserpasswort"
key_mgmt=WPA-PSK
}

Dabei wlanname und unserpasswort entsprechend der WLAN-Zugangsdaten anpassen.

Bei ersten Systemstart wird die Datei automatisch nach /etc/wpa_supplicant verschoben und kann dort bei Bedarf nachträglich jeder Zeit noch angepasst/korrigiert werden.

Hostname

Der Name kann von rasperrypi z.B. auf pihole abgeändert werden:

  • hostname pihole
  • In /etc/hosts anpassen
  • In /etc/hostname anpassen

Router einrichten

Hier am Beispiel der FitzBox 7490 Version 7.29

  • In den Netzwerkeinstellungen dem RaspberryPi einen eindeutigen Namen (z.B. PiHole) geben und insbesondere eine IP fest zuordnen.

Möglichkeit 1

Der Pi-Hole erfasst so jedes einzelne Gerät, das Gastnetz ist aber nicht betroffen.

  • Heimnetz - Netzwerk - Netzwerkeinstellungen
  • ganz unten: weitere Einstellungen
  • IPv4-Einstellungen
  • Bei Lokaler DNS-Server die IP das Pi-Hole eintragen
  • IPv6-Einstellungen
  • DNSv6-Server im Heimnetz abschalten oder die IPv6-Adresse des Pi-Hole eintragen

Möglichkeit 2

Die FritzBox leitet alle DNS-Abfragen über den Pi-Hole.

  • Diese IP dann unter Internet/Zugangsdaten/DNS-Server als Bevorzugter DNSv4-Server eintragen. Dort zusätzlich einen Alternativen DNSv4-Server (z.B. 8.8.8.8) eintragen, damit das Internet auch noch funktioniert, wenn der PiHole mal hängt oder nicht online ist.

Erste Start des RaspberryPi Zero

Die SD-Karte in den Raspberry einlegen, booten und per SSH einloggen:

ssh pi@pihole

Anstatt pihole muss ggf. der im Router eingestellte Namen bzw. IP-Adresse eingegeben werden.

Standard-Passwort bei Verwendung von Raspbian: raspberry

Neus passwort setzen:

passwd

SSH Root-Login

Sofern ein Root-Login möglich sein soll, muss zunächst ein Root-Passwort gesetzt werden:

sudo passwd

Sofern sich root über ein Passwort einloggen soll, muss in der Datei /etc/ssh/sshd_config folgender Eintrag gesetzt werden:

PermitRootLogin yes

… oder anstatt Passwort die sicherere Variante über Public-Key (siehe auch SSH):

PermitRootLogin prohibit-password

Danach den ssh-Server neu starten:

service ssh restart

Pi-Hole installieren und einrichten

PiHole kann durch ein Skript entsprechend der Anleitung unter https://github.com/pi-hole/pi-hole/#one-step-automated-install installiert werden:

wget -O ph.sh https://install.pi-hole.net 
bash ph.sh

oder:

curl -sSL https://install.pi-hole.net | bash

Alle notwendigen Konfigurationen werden während der Installation abgefragt. In der Regel sind die vorausgewählten Konfigurationen auch die Sinnvollsten.

Bei Bedarf kann das am Ende des Installationsprozesses angezeigte Passwort auch geändert werden:

pihole -a -p

Webinterface aufrufen

Den RaspberryPi neu booten und dann auf einem anderen Computer im Netz im Browser eingeben:

http://<IP des RaspberryPi>/admin

Dabei anstatt <IP des RaspberryPi> die zuvor fest vergebene IP eingeben.

Update

Sobald Updates für PiHole vorhanden sind, wird dies am unteren Rand des Webinterfaces angezeigt. Um ein Update für PiHole durchzuführen, muss folgender Befehl über die Konsole (Login z. B. über ssh) eingegeben werden:

pihole -up

Brother Drucker am Raspberry Pi

Raspberry Pi konfigurieren

Cups installieren

Als erstes muss cups installiert werden:

Cups konfigurieren

sudo apt-get install cups

Danach muss cups konfiguriert werden.

sudo vim /etc/cups/cupsd.conf


Die Zeile Listen localhost 631 müsst ihr auskommentieren #Listen localhost 631.

# Only listen for connections from the local machine           
# Listen localhost:631           
Port 631


Darunter müsst ihr folgende Zeile einfügen: Port 631

Ebenso muss der Zugriff auf cups von anderen Geräten erlaubt werden. Dies geschieht durch Abändern des folgenden Abschnittes:

<Location />            
# Allow remote access...          
Order allow,deny             
Allow all           
</Location>

Anschließend muss cups neu gestartet werden:

sudo /etc/init.d/cups restart 

Drucker hinzufügen

Danach kann der Drucker hinzugefügt werden. Hierfür muss der Drucker mit dem Raspberry Pi per USB verbunden werden.

  • Anschließend wird das Cups-Admin-Panel geöffnet ip-des-raspi:631/admin
  • Unter Printer > auf Add Printer
  • Unter local printers sollte der angeschlossene Drucker erscheinen. Diesen wählen wir aus und klicken auf continue
  • Der Name und die Beschreibung kann angepasst werden. Den Namen bitte merken, da er später noch benötigt wird. Anschließend auf continue klicken.
  • Danach wählen wir den Treibertyp: Select Another Make/Manufacturer. Und wählen dann Raw aus und klicken auf continue.
  • Danach wieder Raw Queue (en) auswählen und auf Add Printer klicken

xinetd installieren

Danach müssen wir nur noch xinetd installieren.

sudo apt-get install xinetd

xinetd konfigurieren

In der Datei /etc/service fügen wir folgende Zeile ganz unten ein:

jetdirect 9100/tcp

Danach erstellen wir noch die Datei /etc/xinetd.d/jetdirect mit folgendem Inhalt und ersetzen den Namen des Druckers NAME_DES_DRUCKERS_VON_OBEN :

service jetdirect
{ socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/lp server_args = -d NAME_DES_DRUCKERS_VON_OBEN -o raw groups = yes disable = no }

Zum Schluss müssen wir nur noch xinetd einmal neustarten:

sudo /etc/init.d/xinetd restart

Drucker am Computer/Laptop einrichten

  • Öffnen sie die Drucker-Einstellungen ihres Computers
  • Danach auf [+] Add klicken
  • Network Printer > Find Network Printer und die IP-Adresse des Raspberry Pi eingeben > Find klicken
  • Protocol: HP JetDirect
  • Anschließend noch den richtigen Treiber auswählen.
  • Falls der Treiber nicht in der Liste erscheint kann aus der deb-Datei(CUPSwrapper printer driver (deb package))von Brother die ppd-Datei extrahiert werden. Hierfür muss das deb-Paket entpackt werden. In folgendem Order (Druckername kann anders sein) dcpl2500dcupswrapper-3.2.0-1.i386/opt/brother/Printers/DCPL2500D/cupswrapper lässt sich die ppd-Datei finden.

USB-Festplatte am Raspberry anschließen

Um eine USB-Festplatte am Raspberry nutzen zu können, muss man eine kleine Änderung in der config.txt vornehmen, da standardmäßig zu wenig Strom aus der USB-Buchse kommt. Man muss hierfür einen Parameter in der Datei eintragen. Hierfür steckt man die SD-Karte des Raspberry in einen Computer und ändert hier den Parameter ab.

Der Parameter wird in die Datei /boot/config.txt eingetragen
Fügt ans Ende der Datei folgende Zeile ein
max_usb_current=1

Beachtet werden muss aber, dass das Netzteil genug Strom liefert. Ich habe an einem Raspberry Pi B2 ein Netzteil mit 2A dran, welches auch benötigt wird.

TV auf dem Kodi

  • Einstellungen -> TV -> Allgemein -> Aktivieren
  • Einstellungen -> AddONs -> PVR-Clients – „PVR IPTV Simple Client“-AddOn aktivieren
  • Ort = Entfernter Pfad (Internetadresse)
  • M3U:  http://iptv.gettoweb.de/free.m3u
  • EPG:
  • Logos:
  • Neustart

Amazon Video mit Kodi auf dem Raspberry Pi2/Pi3

Amazon Prime Video läuft nicht ganz so einfach auf dem Raspberry Pi mit Kodi. Im Folgenden wird gezeigt, wie man trotzdem auf seinem Raspberry mit Kodi auf sein Amazon Video Angebot zugreifen kann.

Als System benutzten wir LibreELEC. Man kann die aktuelle Version von LibreELEC unter https://libreelec.tv/download-temp/ herunterladen.
Wir öffnen ein Terminal und wechseln in das Download-Verzeichnis: cd Downloads
Danach entpacken wir das heruntergeladene Paket: gzip -d LibreELEC-RPi2.arm-VERSION.img.gz
Nun wird das Image auf die Micro-SD-Karte kopiert. Mit sudo fdisk -l findet man raus, wo die SD-Karte eingebunden wurde. Wenn man herausgefunden hat, wo die SD-Karte eingebunden ist, dann kann man mit folgendem Befehl das Image überspielen: sudo dd bs=4M if=LibreELEC-RPi2.arm-VERSION.img of=MOUNT-PUNKT

Nun brauchen wir noch das Update-Paket von Milhouse (ich habe #0605 und #0902 getestet). Der erste Beitrag listet immer die „Recent builds“ auf, sodass wir eigentlich recht schnell zum richtigen Download finden.
Für die Installation öffnet ihr die Netzwerkfreigabe smb://libreelec in einem netzwerkfähigen Dateimanager und schiebt die komplett TAR-Datei in das Verzeichnis „update“ auf dem LibreELEC-RasPi. Danach müsst ihr einfach den Raspberry neustarten.

Wenn der Raspberry neu gestartet ist, dann loggen wir uns per SSH auf dem Raspberry ein: ssh root@libreelec (Passwort: libreelec). Nun müssen wir noch chromium-widevine installieren: curl -Ls http://nmacleod.com/public/libreelec/getwidevine.sh -o /tmp/getwidevine.sh && sh /tmp/getwidevine.sh
Als nächstes laden wir das notwendige Repository herunter: https://github.com/Sandmann79/xbmc/releases/download/v1.0.1/repository.sandmann79.plugins.zip

Auf unser Raspberry gehen wir nun in „Addons“ und dann links unten auf das „Download-Symbol“. Dort wählen wir „Aus ZIP-Datei installieren“ -> „Home-Ordner“ und wählen das „repository.sandman79.plugins.zip“ aus.
Danach wählen wir im Menü „Addons“ -> „Aus Repository installieren“ -> „Sandmann79s Repository“ -> „Video-Addons“ -> „Amazon VOD“ installieren.
Wir müssen in den Konfigurationenen von „Amazon VOD“ noch eine Änderung vornehmen. Unter „Allgemein“ die Wiedergabemethoe auf „Input Stream“ setzten.

Danach sollte alles laufen.

Um Kodi von einem Android-Smartphone zu steuern empfiehlt sich Yatse.

Bildschirmeinstellungen

In der Datei /boot/config.txt stehen alle wichtigen Einstellungen für die Bildschirmansteuerung.

Die Ränder werden über die Einträge

#overscan_left=24
#overscan_right=24
#overscan_top=16
#overscan_bottom=16
disable_overscan=1

eingestellt.

OwnCloud – Externer Speicher

Die OwnCloud lässt sich über externe Webspeicher erweitern. Dazu muss man als Administrator in den Apps den „external storage support“ aktivieren. Danach kann man unter „Admninistrator“ aktivieren, welche Protokolle unterstützt werden sollen.

Nun kann jeder Benutzer in „Persönlich“ externe Speicher einbinden.

Speicher, die über WebDAV eingebunden werden können einfach über Benutzername und Passwort eingebunden werden.

Um die Dropbox einzubinden muss man sich die Zugangsdaten der Entwicklerumgebung von Dropbox besorgen:

  1. Auf der Seite https://www.dropbox.com/developers mit den eigenen Dropboxdaten anmelden.
  2. Create your App anklicken
  3. Choose an API: Dropbox API
  4. Choose the type of access you need: Full Dropbox
  5. Name your app: Irgendein Name, es darf aber nicht „drop“ enthalten sein
  6. Create App
  7. Bei App Key steht der App-Schlüssel
  8. mit einem Klick bei App Secret auf „Show“ sieht man die geheime Zeichenkette

Beide Daten können nun in der Owncloud eingegeben werden und schon ist die Dropbox in die OwnCloud mit eingebunden.

Die Einbindung von GoogleDrive ist ohne eigene Domain (keine Subdomain) nur sehr kompliziert möglich).

Netzwerkeinstellungen beim Raspberry PI

Ab Raspian Jessie sind die notwendigen Netzwerkeinstellungen beim Raspberry nicht mehr in /etc/network/interfaces sondern in /etc/dhcpcd.conf.

An diese Datei hängt man folgendes an:

interface eth0
static ip_address=192.168.178.10/24static routers=192.168.178.1
static domain_name_servers=192.168.178.1

Neustart dann mit sudo reboot oder nur sudo service networking restart

Proxy-Konfiguration

Einstellungen in: /etc/environment

#HTTP:
http_proxy=http://<Benutzername>:<Passwort>@<Proxy>:<Port>

#HTTPS:
https_proxy=https://<Benutzername>:<Passwort>@<Proxy>:<Port>

#FTP:
ftp_proxy=ftp://<Benutzername>:<Passwort>@<Proxy>:<Port>

no_proxy=localhost,<auszuschließende Domains>
soap_use_proxy=on

Die Eingabe von Benutzername und Passwort ist optional. Danach aus- und einloggen.

Durch Eingabe von env kann die Einstellung geprüft werden.

Für apt-get muss der Proxy /etc/apt/apt.conf.d/70debconf (oder ähnlich) eingetragen werden:

Acquire::http
{
Proxy "http://<Benutzername>:<Passwort>@<Proxy>:<Port>";
}

Je nach System kann für eine Proxykonfiguration für alle Benutzer das Vorgehen aus dem Kapitel Proxyserver notwendig sein.

Autostart beim Raspberry Pi

Wenn man möchte, dass beim Start der LXDE Oberfläche beim Raspberry Pi ein Programm oder ein Befehl ausgeführt wird, dann muss man dies in folgender Datei eintragen:

/etc/xdg/lxsession/LXDE-pi/autostart

Beispieleintrag zum starten von midori im Fullscreenmodus:

@midori -e Fullscreen -a www.google.de

Seafile

SeaFile und OwnCloud

Cloud-Fileserver, der (insbesondere bei vielen kleinen Dateien) sehr viel schneller arbeitet als OwnCloud. Daher lohnt sich auch die Kombination, OwnCloud für die Synchronisation von Kalender, Aufgaben sowie Kontakte zu verwenden und Seafile für die Dateisynchronisation.

Eine sehr ausführliche Anleitung gibt es auch unter http://manual.seafile.com/deploy/using_mysql.html

SeaFile installieren

Die aktuelle Version kann unter http://seafile.com/en/download/ heruntergeladen werden. Für den Banana Pi mit Bananian als System kann das Server-Paket für den Raspberry Pi verwendet werden.

Die Installation erfolgt durch Entpacken in ein eigenes Verzeichnis z. B. unter /root

cd /root
mkdir seafile
# Die zuvor heruntergeladene Installationsdatei hier her kopieren
tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed

Beim Entpacken wird der Symbolische Link seafile-server-latest erstellt, der auf das aktuelle Verzeichnis verweist. Bei einem Update muss dann das neue Archiv nur wie oben beschrieben entpackt werden und schon ist die neue Version installiert ohne dass die alte Version überschrieben wird. Auch die Einstellungen bleiben erhalten.

Abhängigkeiten installieren

Folgende Pakete werden für Seafile benötigt:

  • python 2.7
  • python-setuptools
  • python-imaging
  • python-mysqldb
apt-get update
apt-get install python2.7 python-setuptools python-imaging python-mysqldb

MySQL-Datenbanken erstellen

Zuvor muss MySQL vollständig eingerichtet sein. Dies wird im Kapitel zur Owncloud-Installation im Detail beschrieben.

Folgende SeaFile-Komponenten benötigen jeweils eine eigene Datenbank:

  • ccnet server
  • seafile server
  • seahub

Die einfachste Möglichkeit ist, das Konfigurationsscript setup-seafile-mysql.sh im aktuellen Seafile-Ordner zu verwenden:

/root/seafile/seafile-server-latest/setup-seafile-mysql.sh

Das Skript führt detailliert durch die gesamte Konfiguration. Hier ein Beispiel für eine lokale Installation:

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at
        https://github.com/haiwen/seafile/wiki
Press ENTER to continue
-----------------------------------------------------------------

What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] tuxcloud

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] 192.168.1.9

Which port do you want to use for the ccnet server?
[ default "10001" ] 10001

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/root/seafile/seafile-data" ] /mnt/hdd/seafile

Which port do you want to use for the seafile server?
[ default "12001" ] 12001

Which port do you want to use for the seafile fileserver?
[ default "8082" ] 8082

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

What is the host of mysql server?
[ default "localhost" ] localhost

What is the port of mysql server?
[ default "3306" ] 3306

What is the password of the mysql root user?
[ root password ] 

verifying password of user root ...  done

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "root" ] 

Enter the database name for ccnet-server:
[ default "ccnet-db" ] 

Enter the database name for seafile-server:
[ default "seafile-db" ] 

Enter the database name for seahub:
[ default "seahub-db" ] 

---------------------------------
This is your configuration
---------------------------------

    server name:            tuxcloud
    server ip/domain:       192.168.1.9
    ccnet port:             10001

    seafile data dir:       /mnt/hdd/seafile
    seafile port:           12001
    fileserver port:        8082

    database:               create new
    ccnet database:         ccnet-db
    seafile database:       seafile-db
    seahub database:        seahub-db
    database user:          root

Sollen viele Clients auf Seafile zugreifen, sollte zuvor ulimit erhöht werden:

ulimit -n 30000

Server starten

./seafile.sh start 
./seahub.sh start

Beim ersten Start von Seahub wird ein Admin-Account erstellt. Der User-Name bei Seafile ist immer eine E-Mail-Adresse.

Danach kann der erste Zugriff über einen Browser erfolgen:

http://192.168.1.9:8000/

 Beim Systemstart automatisch starten

Hierzu wird als root ein Init-Script erstellt (/etc/init.d/seafile-server):

#!/bin/bash
### BEGIN INIT INFO
# Provides: Seafile Server
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Seafile-Daemon at boot time
# Description: Enable service provided by Seafile.
### END INIT INFO

export LC_ALL='de_DE.UTF-8'
 
# Change the value of "seafile_dir" to your path of seafile installation
seafile_dir=/root/seafile
script_path=${seafile_dir}/seafile-server-latest
seafile_init_log=${seafile_dir}/logs/seafile.init.log
seahub_init_log=${seafile_dir}/logs/seahub.init.log
 
# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=false
# Set the port of fastcgi, default is 8000. Change it if you need different.
fastcgi_port=8000
 
case "$1" in
 start)
 ${script_path}/seafile.sh start >> ${seafile_init_log}
 if [ $fastcgi = true ];
 then
 ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log}
 else
 ${script_path}/seahub.sh start >> ${seahub_init_log}
 fi
 ;;
 restart)
 ${script_path}/seafile.sh restart >> ${seafile_init_log}
 if [ $fastcgi = true ];
 then
 ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log}
 else
 ${script_path}/seahub.sh restart >> ${seahub_init_log}
 fi
 ;;
 stop)
 ${script_path}/seafile.sh $1 >> ${seafile_init_log}
 ${script_path}/seahub.sh $1 >> ${seahub_init_log}
 ;;
 *)
 echo "Usage: /etc/init.d/seafile {start|stop|restart}"
 exit 1
 ;;
esac

Dann das Script ausführbar machen und rc.d aktualisieren:

chmod 755 /etc/init.d/seafile-server
update-rc.d seafile-server defaults

Manche Systeme starten den Server nach einen Reboot nicht, da Apache noch nicht läuft. Daher kann der Start über einen Cron-Job nachgeholt werden (Eintrag in /etc/crontab):

@reboot sleep 60 && service seafile-server start

Mitgelieferte Skripte

seaf-gc.sh

Seafile verwaltet die Dateien in Datenblöcken. Alte Datenblöcke von gelöschten Dateien und Bibliotheken werden jedoch nicht automatisch gelöscht, wodurch der von Seafile benötigte Speicher immer mehr anwächst. Somit empfiehlt es sich, unnötige Datenblöcke löschen zu lassen. Hierzu muss nur das Skript seaf-gc.sh im Seafile-Ordner gestartet werden:

/root/seafile/seafile-server-latest/seaf-gc.sh

Das entfernen unnötiger Datenblöcke ist z. B. vor dem Erstellen eines Backups zu empfehlen (siehe Kapitel Backup).

seaf-fsck.sh

Nach einem Systemabsturz kann die Dateistruktur von Seafile defekt sein. hierzu gibt es ein eigenes Script, das fehlerhafte Strukturen reparieren kann:

/root/seafile/seafile-server-latest/seaf-fsck.sh

reset-admin.sh

Wenn man das Admin-Passwort vergessen hat oder der Admin-Account nicht mehr richtig funktioniert, kann mit dem Tool reset-admin.sh der Admin-Account zurückgesetzt werden.

/root/seafile/seafile-server-latest/reset-admin.sh

seaf-fuse.sh

Stellt die Dateistruktur aller User und Bibliotheken in einem Verzeichnis dar, das mit dem Script seaf-fuse.sh gemountet wird. Allerdings besteht auf dieses Verzeichnis nur lesender Zugriff.

mkdir /mnt/seafile-fuse
/root/seafile/seafile-server-latest/seaf-fuse.sh start /mnt/seafile-fuse

Unmounten geht wie folgt:

/root/seafile/seafile-server-latest/seaf-fuse.sh stop

Backup

Anbei ein Skript für ein Backup mit MySQL und storeBackup. Zunächst wird der Seafile-Server gestoppt, damit im Backup ein definierter Zustand gespeichert wird. Dann werden unnötige Datenblöcke gelöscht (seaf-gc.sh) und die Datenbanken gesichert.
Als Backup-Programm wird storeBackup verwendet. Die verwendete Konfigurationsdatei wird im Skript unter /root/bin/storeBackup/seafile.cfg gesucht. Da die Datenbanken zuvor in den Daten-Ordner von Seafile gesichert wurden, sind diese ebenfalls im Backup enthalten.
Am Ende wird der Seafile-Server wieder gestartet.

seafile=/mnt/hdd/seafile
[ -f "$seafile/database-backup" ] || mkdir -p "$seafile/database-backup"
service seafile-server stop
/root/seafile/seafile-server-latest/seaf-gc.sh
mysqldump --lock-tables -h localhost -u root -p<PASSWORT> ccnet-db   > "$seafile/database-backup/ccnet-db.bak"
mysqldump --lock-tables -h localhost -u root -p<PASSWORT> seafile-db > "$seafile/database-backup/seafile-db.bak"
mysqldump --lock-tables -h localhost -u root -p<PASSWORT> seahub-db  > "$seafile/database-backup/seahub-db.bak"
storeBackup -f /root/bin/storeBackup/seafile.cfg
service seafile-server start

Backup zurückspielen:

mysql -h localhost -u root -p<PASSWORT> ccnet-db   < ccnet-db.bak
mysql -h localhost -u root -p<PASSWORT> seafile-db < seafile-db.bak
mysql -h localhost -u root -p<PASSWORT> seahub-db  < seahub-db.bak

Update

Mit folgendem Script kann eine neue Version von Seafile automatisch eingespielt werden. Es muss lediglich die neue Versionsnummer eingegeben werden. Das Script ist für den Raspberry-Pi bzw. Banana-Pi geschrieben und muss für andere Systeme ggf. angepasst werden.

#! /bin/bash

# Variablen definieren
[ "$1" == "" ] && read -p "Bitte Version eingeben (z.B. 4.2.3): " ver || ver=$1
download_path=/root/Software
seafile_path=/root/seafile

# Seafile herunterladen
cd $download_path
wget https://github.com/haiwen/seafile-rpi/releases/download/v$ver/seafile-server_${ver}_pi.tar.gz 

# Seafile-Server entpacken ...
echo "seafile-server_${ver}_pi.tar.gz wird entpackt ..."
cd $seafile_path
tar -xzvf $download_path/seafile-server_${ver}_pi.tar.gz

# Seafile Server anhalten
echo "Seafile-Server wird angehalten ..."
service seafile-server stop

# Symbolischen Link aktualisieren ...
echo "Link seafile-server-latest neu setzen ..."
rm seafile-server-latest
ln -s $seafile_path/seafile-server-$ver seafile-server-latest

# Seafile neu starten
echo "Seafile-Server wird gestartet ..."
service seafile-server start
exit

NextCloud / ownCloud auf einem RaspberryPi / BananaPi

Download von NextCloudPi unter: https://ownyourbits.com/nextcloudpi/

oder händisch nach folgender Anleitung:

bananapiBetriebssystem auf SD-Karte installieren

Im Folgenden wird die Einrichtung mit Bananian, einer Debian-Variante für den BananaPi, gezeigt.

Download

wget http://dl.bananian.org/releases/bananian-latest.zip
unzip bananian-latest.zip

auf SD-Karte kopieren

Die SD-Karte muss min. 2 GB groß und Class 10 sein.

# SD-Karte einlegen, das Device der SD-Karte ermitteln
dmesg | tail          
# Gegebenenfalls die Karte unmounten
sudo umount /dev/<sd-card>
# Image kopieren (<sd-card> steht für z.B. sdd)
sudo dd if=bananian-<xxxx>.img of=/dev/<sd-card> bs=1M && sync

Erster Start von Bananian

SD Karte in den BananaPi einlegen und den BananaPi booten (einfach Stromversorgung einstecken).

Der Standard-Login ist „root“, das Standard-Passwort ist „Pi“. Dann die Grundkonfiguration durchführen:

bananian-config
bananian-update

Externe Festplatte einbinden (optional)

Device ermitteln:

fdisk -l

Im Folgenden wird davon ausgegangen, dass die Festplatte als Device /dev/sda eingebunden ist.

Festplatte partitionieren (mit parted):

select /dev/sda
mktable msdos
mkpart primary ext4 0% 100%
q

Dateisystem erstellen:

mkfs -t ext4 /dev/sda1 -V

In die fstab eintragen:

mkdir /mnt/hdd
echo "/dev/sda1 /mnt/hdd ext4 defaults 0 0" >> /etc/fstab
mount -a

Owncloud installieren

Repository einfügen und OwnCloud installieren

wget -O - http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_8.0/Release.key | apt-key add -
echo "deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_8.0/ /" > /etc/apt/sources.list.d/owncloud.list
apt-get update
apt-get install owncloud php-pear php-apc

Apache konfigurieren

Apache auf die .htaccess-Datei der Owncloud einstellen

In die Datei /etc/apache2/sites-enabled/000-default folgendes am Ende anfügen:

<Directory /var/www/owncloud>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 Allow from all
</Directory>

Apache neu starten:

service apache2 reload

Maximale Dateigröße auf 2 GB anheben

In der Datei /var/www/owncloud/.htaccess folgende Zeilen anpassen:

php_value upload_max_filesize 2G
php_value post_max_size 2G

In der Datei /etc/php5/apache2/php.ini folgende Zeilen anpassen:

upload_max_filesize = 2G
max_file_uploads = 200
post_max_size = 2G

Cache aktivieren:

In der Datei /www/owncloud/config/config.php folgendes eintragen:

'memcache.local' => '\OC\Memcache\APC',

Apache neu starten:

a2enmod rewrite
a2enmod headers
service apache2 reload

SSL aktivieren

Zertifikate erstellen

Am besten in ein Verzeichnis wechseln, welches nur vom Root erreichbar ist, z. B. mit

cd /root
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -reqexts v3_req -extensions v3_ca

Dateneingabe während der Zertifikaterstellung:

    • Country Name (Ländercode): = DE
    • State or Province Name (Bundesland): = <Bundesland>
    • Locality Name, eg. City (Stadt): = <Ort>
    • Organization Name (Firmenname): = Privat
    • Organizational Unit Name (Abteilung) = <Enter>
    • Common Name, eg. YOUR Name: = <domain> „Hier muss die Domain angegeben werden, über die der Server erreichbar ist (bei Nutzung eines DynDNS-Dienstes, die dort zugeteilte Adresse)“
    • Email Adress: = <E-Mail>
    • A challenge password: = <Enter>
  • An optional company name: = <Enter>
Apache anpassen

In der Datei /etc/apache2/sites-enabled/000-default folgende Zeichen am Ende der Datei hinzufügen:

<VirtualHost *:443>
        DocumentRoot /var/www
        ServerName tuxcloud
        SSLEngine on
        SSLCertificateFile /root/server.crt
        SSLCertificateKeyFile /root/server.key
</VirtualHost>

In der Datei /etc/apache2/sites-available/default folgende Zeichen am Ende der Datei hinzufügen:

<VirtualHost *:443>
        DocumentRoot /var/www
        ServerName tuxcloud
        SSLEngine on
        SSLCertificateFile /root/server.crt
        SSLCertificateKeyFile /root/server.key
</VirtualHost>

In der Datei /etc/apache2/sites-available/default-ssl folgende Einträge anpassen:

SSLCertificateKeyFile /root/server.key
SSLCertificateFile /root/server.crt

Apache-Konfiguration anpassen und testen:

a2enmod ssl
apache2ctl configtest

Hier sollte ein „Syntax OK“ herauskommen.

Apache neu starten:

service apache2 reload

MySQL installieren

MySQL ist deutlich schneller als SQLite und empfiehlt sich bei größeren Datenmengen.

Installation MySQL

apt-get install mysql-server

Während der Installation öffnet sich ein Fenster, für das root-Passwort, das an dieser Stelle definiert werden muss.

Installation PHPmyAdmin und Datenbank einrichten

apt-get install phpmyadmin

Während der Installation fragt phpMyAdmin, welchen Webserver verwendet werden soll. In unserem Fall ist das apache2. Weiterhin Passwort für den administrativen Benutzer von MySQL eingeben.

Dann die Datenbank für Owncloud einrichten:

http://<IP des Servers>/phpmyadmin

unter Datenbank neuen Namen „owncloud“ eingeben und Datenbank speichern.

Zugriff von außen (über das Internet)

Um über das Internet auf den Server zugreifen zu können braucht man eine feste Adresse. Diese kann man z.B. über spdns.de bekommen. Im Router wird dieser Dienst bei DynDNS eingetragen und eine Portweiterleitung von Port 443 (HTTPS) zum Server gemacht.

Owncloud einrichten

Erster Start

http://<IP des Servers>/owncloud/

Benutzer: root
Passwort: *****

Datenbank auf MySQL umstellen

cd /var/www/owncloud
su www-data
php occ db:convert-type --password="passwort" --all-apps mysql root localhost owncloud

Umstellung auf Cron

Aufräumen nicht nach jedem Seitenaufruf sondern über Cron (beschleunigt Seitenaufrufe):

EDITOR=vim.tiny && crontab -u www-data -e
*/15 * * * * php -f /var/www/owncloud/cron.php

Als Administrator im Web-Frontend unter „Administration“ von Ajax auf Cron umstellen.

Einbindung externer Speicher

Samba-Client installieren:

apt-get install smbclient

Als root in Owncloud die App „External storage support“ aktivieren und unter „Administration“ dann die benötigten Speicher einbinden.

E-Mail-Versand einrichten

Hier am Beispiel eines GMX-Accounts:

Als root unter „Administration“ die Mail-Daten eingeben

  • Sende-Modus: smtp
  • Verschlüsselung: TLS
  • Absender-Adresse: <Login> | gmx.de
  • Authentifizierung: „Anmelden“ und „Authentifizierung benötigt“
  • Adresse des Servers: mail.gmx.net:587
  • Zugangsdaten: <Login> | <Passwort>

In der Datei /var/www/owncloud/config/config.php sehen die Einträge so aus:

'mail_smtpmode' => 'smtp',
'mail_smtpsecure' => 'tls',
'mail_smtpauth' => 1,
'mail_smtphost' => 'mail.gmx.net',
'mail_smtpname' => '<Login>@gmx.de',
'mail_smtppassword' => '<Passwort>',
'mail_smtpport' => '587',
'mail_smtpauthtype' => 'LOGIN',
'mail_from_address' => '<Login>',
'loglevel' => '0',
'mail_domain' => 'gmx.de',

<Login> ist der Teil der Mailadresse vor dem @.

Kalender und Kontakte aktivieren

Im Administrationsmenü unter Apps/PIM Calendar und Contacts aktivieren.

Synchronisierung einrichten

Kontakte

Android

CADroid installieren und Zertifikate importieren
CardDAV-Sync free installieren
CardDAV-Konto hinzufügen
Server: https://<Server>/owncloud/remote.php/carddav

CardDAV-Kontakte können mit der APP „Contact Editor free“ (oder Pro-Version) bearbeitet werden.

Thunderbird/Icedove

Das Plugin „SOGo Connector“ installieren (unter Debian für Icedove über die Paketverwaltung „xul-ext-sogo-connector“ installieren).
Dann im Adressbuch über „File > New > Remote Addressbook“ hinzufügen. Die benötigte URL bekommt man über das OwnCloud-Frontend im Browser: APP Kontakte > Einstellungssymbol links unten > CardDAV-Link“.

Das AddOn CategoryManager erlaubt es die in ownCloud erstellen Gruppen zu synchronisieren

Kalender

Android

„CalDAV Sync Free Beta“ installieren
CalDAV-Konto in der Kalender-APP hinzufügen
Server: https://<Server>/owncloud/remote.php/caldav

Thunderbird/Icedove

neuer Kalender -> im Netzwerk -> CalDAV
https://<Server>/owncloud/remote.php/caldav/calendars/<user>/<kalender>
Offline-Unterstützung

Aufgaben

Hierzu muss in der Owncloud zusätzliche die APP „Tasks“ installiert werden:
Download unter https://apps.owncloud.com/content/show.php/Tasks?content=164356
entpacken und auf den Server hochladen in: /var/www/owncloud/apps
danach im Web-Frontend als root die App „Tasks“ aktivieren

Android

Synchronisation über CalDAV-Sync und Tasks von Marten Gajda.

Notizen

Mit qownnotes lassen sich auch Notizen wie in evernote oder onenote speichern und synchronisieren. Das passende git-repository ist: https://github.com/pbek/QOwnNotes

Zunächst muss im owncloud/apps-Verzeichnis die App qownnotesapi installiert werden.
https://github.com/pbek/qownnotesapi
Für den Desktop gibt es einen Client: http://www.qownnotes.org/

Android

Über F-Droid kann man sich unter https://f-droid.org/app/org.aykit.MyOwnNotes die passende App herunterladen.

Backup anlegen

Sicherung der Daten auf einen USB-Datenträger:

Mit blkid die UUID des USB-Datenträgers herausfinden. (Hier z.B. 7963a8a2-92e8-4050-9c8a-a84a06415824)
Ein Verzeichnis anlegen: mkdir /media/backup

Die Datei /etc/fstab erweitern:

 UUID=7963a8a2-92e8-4050-9c8a-a84a06415824 /media/backup ext4 defaults 0 2

in /root/ die Datei backup.sh anlegen. Inhalt:

#Backup-ownCloud
 tar -czvf "/media/backup/owncloud_$(date +"%Y%m%d").tar.gz" /var/www/owncloud
#Datenbank-Backup
 mysqldump --lock-tables -h localhost -u root -passwort owncloud > "/media/backup/owncloud-db_$(date +"%Y%m%d").bak"
#alte Dateien löschen
 find "/media/backup/" -type f -name "*-db_*.bak" -mtime +6 -exec rm -f {} \;
 find "/media/backup/" -type f -name "*.tar.gz" -mtime +6 -exec rm -f {} \;

ausführbar machen chmod +x backup.sh

In cron eintragen (alle Daten, die älter als 4 Tage sind, werden Nachts um 2:00 Uhr gelöscht):

crontab -e
 0 2 * * * /root/backup.sh

reboot

Einbindung per WebDAV

https://www.meinedomain.de/remote.php/webdav

Pfad zum Datenspeicher ändern

Der Pfad zum Datenspeicher (data) steht in /var/www/owncloud/config/config.php

Nach der Anpassung der Webserver neustarten: service apache2 restart

Update auf owncloud 9

Wenn nach dem Update weiterhin der Wartungsmodus angezeigt wird:
In der Datei /var/www/owncloud/config/config.php
maintenancemode => false auf true setzen

Evtl. müssen die in /var/www/owncloud die Dateien
phpinfo.inf und apache.pem gelöscht werden.

Damit die Aufgabenplanung wieder funktioniert muss die aktuelle Version von tasks von Hand heruntergeladen und ins Verzeichnis apps/tasks entpackt werden.
Download: https://github.com/owncloud/tasks/archive/DAVclient.zip

Backup

Mit calcardbackup lassen sich Adressbücher und Kontakte einfach sichern.

Android

ownCloud Client Zugriff auf den Cloudspeicher (F-Droid)
DAVdroid – Kalendersynchronisation (F-Droid)
o
wnCloud Client Zugriff auf den Cloudspeicher (GooglePlaystore)
CalDAV Sync Free
– zur Kalendersynchronisation (GooglePlaystore)

RC-Car mit dem Smartphone steuern

Wir tauschen die herkömmliche Fernbedingung eines ferngesteuerten Autos durch einen Raspberry Pi und ein Android Smartphone aus.
Auf dem Auto wird der Raspberry befestigt. Mit ein paar Kabeln, werden die Servos bzw. Fahrtenreglern an den GPIOs des Raspberry angeschlossen. Über WLAN verbinden wir ein Handy mit den Raspberry und benutzten dies somit als Fernsteuerung. Weiterlesen