de gb

Raspberry Pi - Debian 10 "Buster"

Vorwort

Diese Webseite soll den Neulingen und Unerfahrenen den Einstieg in die Welt des Raspberry Pi erleichtern. Vielleicht helfen die Tipps und Anleitungen dem einen oder anderen sein eigenes Raspberry Pi - Projekt voran zu bringen :)

 

Einleitung

Die heutigen Betriebssysteme und auch die meisten Programme sind auf die dreifache Leistung eines RasPis 3 ausgelegt und überfordern somit den Minirechner enorm! Deshalb wurden angepasste bzw. abgespeckte Betriebssysteme, Programme und (Hintergrund-) Dienste entwickelt. Aber auch da gibt es noch Unterschiede, es kommt vor allem auf die Konfiguration an, Beispiele: verwende Nginx statt Apache, verwende SQLite oder PostgreSQL statt MySQL, usw.

Das Verfassen einer Schritt-für-Schritt - Anleitung zur Server-Konfiguration, und den dazugehörigen Support bei Fragen zu führen, würde meine Zeit zu sehr beanspruchen. Der Raspberry Pi ist zu meinem Hobby geworden, jedoch möchte ich neben meiner Vollzeitarbeit noch meine Freizeit genießen :)

 

Raspberry Pi - Server konfigurieren

Um den eigenen privaten Server zu konfigurieren benötigt man Zeit - viel Zeit wenn man von der ganzen Linux-Welt noch keine Ahnung hat! Nehmt euch diese Zeit, führt nicht einfach Schritt-zu-Schritt Anleitungen stur aus! Selten entsprechen Anleitungen einen gut konfigurierten Server noch sind diese auf dem aktuellen Stand, denn bedenkt:
den RasPi gibt es seit 2012 und die meisten Anleitungen wurden 2013 / 2014 verfasst und nie auf die aktuellen Versionen von Hardware und Software adaptiert.

Wichtige Themen benötigen mehr Aufmerksamkeit und ggf. auch mehr Meinungen, deshalb besuche weitere Webseiten und lies nach wie andere es machen und dann beschäftige dich warum die es anders machen!

Erläuterung

Es werden die RasPi-Grundlagen und die Linux-Grundlagen vorrausgesetzt. Die wichtigsten Konsolenbefehle (pdf) solltest du ausgedruckt neben dir liegen haben.

Formatierungen dienen zur Darstellung von Code bzw. Befehlen: Tastatur-Eingabe und Bildschirm-Ausgabe
Die Tastatur-Eingabe kann man kopieren und direkt ins Konsolenfenster einfügen!

 

1. Grundkonfiguration (Erste Schritte)

Welcome to Raspberry Pi

Wir beginnen am Anfang: die aktuelle Raspbian Version wurde mittels "Win32 Disk Imager" auf die Speicherkarte übertragen und in den Kartenslot gesteckt; der Raspberry Pi muss nun an Bildschirm (HDMI), Tastatur, Router (Ethernet-Kabel) und am Strom angeschlossen werden.

Nach dem Bootvorgang gelangt man zum Desktop und das "Welcome to Raspberry Pi" Fenster öffnet sich. Dieses "Willkommen"-Fenster gibt es seit Debian Version 9 (Stretch) und ist im aktuellen Debian Version 10 (Buster) sehr verständlich aufgebaut. Deshalb gehe ich hier nicht darauf näher ein, geht es einfach Schritt für Schritt durch.

Einstellungen, Sicherheit und Konfiguration

Nun gehen wir ins Desktop Menü und wählen "Raspberry Pi Konfiguration" und nehmen folgende Änderungen vor:

  1. Boot → Zum CLI
  2. Automatische Anmeldung: -
  3. Schnittstelle → SSH → Aktiviert
  4. Hostname: euerWunschname

Danach starten wir den Raspi neu und loggen uns mit dem Benutzernamen "pi" und dem vorhin festgelegten Passwort in der Konsole ein.

 

Wir löschen mal den VLC-Player und den Chromium-Browser (Optional):

sudo apt remove vlc chromium-browser

sudo apt autoremove

 

Wenn man möchte kann man nun den SSH-Port ändern:

sudo nano /etc/ssh/sshd_config

#Port 22

ÄNDERN ZU

Port 1350

sudo service ssh restart

 

Wir installieren Fail2Ban und übernehmen unseren SSH Port:

sudo apt install fail2ban

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

bantime = 10m

ÄNDERN ZU

bantime = 1h

 

EINTRAG SUCHEN

[sshd]

port = ssh

logpath = %(sshd_log)s

backend = %(sshd_backend)s

 

1. ZEILE „port = ssh“ ÄNDERN ZU

port = 1350

2. FOLGENDE ZEILEN ERGÄNZEN

enabled = true

filter = sshd

maxretry = 3

banaction = iptables-multiport

Den Editor verlassen und die Änderungen übernehmen:

sudo fail2ban-client reload

sudo service fail2ban restart

Wir prüfen Fail2Ban mit:

sudo service fail2ban status

sudo fail2ban-client status

Status
|- Number of jail:    1
`- Jail list:    sshd

 

Jetzt ändern wir den Standard-Benutzername "pi" auf einen eigenen. Dieser Vorgang muss direkt am Pi erfolgen (nicht über SSH!):

sudo passwd root

hierfür genügt ein einfach Passwort, da wir dieses nur für kurz benötigen.

exit

und als "root" einloogen, danach ändern wir den Benutzernamen:

usermod -l neuerBenutzername -d /home/neuerBenutzername -m pi

groupmod -n neuerBenutzername pi

spätestens jetzt vergeben wir auch ein starkes Passwort:

passwd neuerBenutzername

noch schnell eine Datei löschen:

rm /etc/sudoers.d/010_pi-nopasswd

und jetzt testen wir den Benutzer indem wir über SSH uns mit den neuen Daten einloggen!

Wenn das funktioniert, deaktiviert wir wieder die Passworteingabe für root. Dies erfordert die Eingabe vom neuen Passwort vom neuerBenutzername

sudo passwd -l root

 

 

Ist das Erledigt kann man nun mit SSH PuTTY verbunden bleiben, die direkte Eingabe am Raspi ist nicht mehr erforderlich.

TOP - TIPP:
Erstell regelmäßig und vor Änderungen und Ergänzungen jeder Art ein komplettes Backup deiner SD-Karte mit Win32 Disk Imager. Damit bist du immer auf der sicheren Seite - ich mach es noch heute so!

 

top

2. Webinterface (NGINX und PHP)

Nginx ist ein Webserver-Dienst, um Webseiten und Interfaces von anderen Programmen oder Diensten darzustellen. PHP ist eine Webseiten-Programmiersprache.

Wichtig:
Achtet immer darauf das ihr unter keinen Umständen die Dienste Apache und MySQL installiert! Auch wenn euer RasPi damit klar kommt gehen wichtige Ressourcen verloren bzw. leidet die Gesamtleistung darunter!

 

NGINX installieren:

sudo apt install nginx

 

wir legen eine php-Datei als Test an:

sudo nano /var/www/html/index.php

 

NGINX konfigurieren:

sudo mv /etc/nginx/sites-enabled/default /etc/nginx/conf.d/website.conf

sudo nano /etc/nginx/conf.d/website.conf

nach der Zeile „root /var/www/html;“ folgendes hinzufügen

client_max_body_size 20M;

 

index index.html index.htm index.nginx-debian.html;

ÄNDERN ZU

index index.php index.html index.htm index.nginx-debian.html;

 

UND FOLGENDE ZEILEN AUSKOMMENTIEREN

location ~ \.php$ {

    include snippets/fastcgi-php.conf;

    # With php-fpm (or other unix sockets):

    fastcgi_pass unix:/run/php/php7.3-fpm.sock;

}

 

sudo service nginx restart

 

PHP7.3 installieren:

Anmerkung: viele der folgenden Pakete benötigen wir später für Baikal, Tiny Tiny-RSS und Seafile.

sudo apt install php7.3 php7.3-fpm php7.3-cli php7.3-curl php7.3-json php7.3-intl php7.3-gd php7.3-pgsql php7.3-xml php7.3-opcache php7.3-sqlite3 php7.3-mbstring php7.3-mysql

 

PHP7 konfigurieren:

sudo nano /etc/php/7.3/fpm/php.ini

;cgi.fix_pathinfo=1

ÄNDERN ZU

cgi.fix_pathinfo=0

 

upload_max_filesize = 2M

ÄNDERN ZU

upload_max_filesize = 8M

sudo service php7.3-fpm restart

 

Öffne nun im Browser die IP-Adresse deines Raspis, die index.php sollte automatisch aufgerufen werden!

ifconfig → [IP vom Pi] ..,z.B.: eth0: inet 192.168.0.5

im Browser: http://192.168.0.5 …zeigt die "phpinfo"-Seite an!

 

top

3. Kalender & Kontakte (Baikal)

Veröffentlichtungen-Versionen: https://github.com/sabre-io/Baikal/releases

Installationsanleitung-Quelle: http://sabre.io/baikal/install/

 

Anmerkung: Die erforderlichen php7.3-Pakete wurden bereits im Schritt Webinterface installiert.

Einrichtung

cd /var/www/html/

sudo wget https://github.com/sabre-io/Baikal/releases/download/0.6.0/baikal-0.6.0.zip

sudo unzip baikal-0.6.0.zip

sudo rm baikal-0.6.0.zip

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

cd baikal/

sudo chmod +r Specific/

 

Installation über Webinterface

http://[IP vom Rapsi]/baikal/html/

  1. Server Time zone → Europe/Vienna

  2. Email → baikal@example.at

  3. WebDAV → Digest

  4. Admin-PW festlegen

Auf der 2ten Seite belasssen wir alles. (Use MySQL möchten wir nicht. Wir benutzen SQLite)

 

Webzugriff Login "Admin" ändern

1. automatisches ausfüllen von „Benutzer“ entfernen, unter:

sudo nano /var/www/html/baikal/Core/Frameworks/BaikalAdmin/Controller/Login.php

if(trim($sLogin) === "") {

$sLogin = "admin";

}

ersetzen durch:

if(trim($sLogin) === "") {

$sLogin = "";

}

2. neuen Benutzernamen setzen (Zeile 98), unter:

sudo nano /var/www/html/baikal/Core/Frameworks/BaikalAdmin/Core/Auth.php

if($sUser === "admin" && $sPassHash === BAIKAL_ADMIN_PASSWORDHASH) {

versetzen durch

if($sUser === "Benutzer" && $sPassHash === BAIKAL_ADMIN_PASSWORDHASH) {

 

Die Datenbank von einer früheren Baikal-Version übernehmen (Optional, auf eigene Gefahr!)
Hinweis:
Die Einträge (Kalender, Kontakte) aus einer früheren Version übernehmen ist nichts für Anfänger und erfolgt auf eigene Gefahr. Besondere Vorsicht wird empfohlen und ein Backup der Speicherkarte ist ein muss!

Ein kopieren der ganzen DB führte zu Fehler, da sich die Struktur bei vielen tables veränderte.

Die Lösung ist: die Benutzer samt Adressbuch und Kalender übers Baikal-Admin anzulegen (fehlendes IDs mit leeren Einträgen „temp“ ergänzen) und nur die Einträge/Termine aus Adressbuch/Kalender zu transferieren. Somit beschränkt sich der phpLiteAdmin-Export auf folgendes:

table → calendarobjects

table → cards

und auch nur mit folgenden Optionen:

Export with structure → NEIN (inaktiv setzen)

Export with data → JA

Add DROP TABLE → NEIN

Add TRANSACTION → JA

Comments → JA

 

Zugriff auf die Datenbank

Um Zugriff auf die SQLite-Datenbank zu erhalten, benötigt man ein ähnliches Programm wie phpMyAdmin (MySQL). Für SQLite empfiehlt sich phpLiteAdmin.

In das Verzeichnis der Datenbank wechseln, Datei herunterladen (Version) und entpacken:

cd /var/www/html/baikal/Specific/db

sudo wget https://bitbucket.org/phpliteadmin/public/downloads/phpLiteAdmin_v1-9-8-2.zip

sudo unzip php*.zip

Das Standard-Passwort ist „admin“. Da wir phpLiteAdmin geich wieder löschen, belassen wir das Standard-Passwort. Die Datei im Browser aufrufen und gewünschte Änderungen durchführen:

http://[IP vom Raspi]/baikal/Specific/db/phpliteadmin.php

Die Dateien wieder löschen.

sudo rm php* readme.md

 

top

4. Nachrichten - Feeds (Tiny Tiny RSS)

Veröffentlichtungen-Versionen: https://git.tt-rss.org/fox/tt-rss.git

Installationsanleitung-Quellen:

https://git.tt-rss.org/fox/tt-rss/wiki/InstallationNotes,

https://git.tt-rss.org/fox/tt-rss/wiki/PhpCompatibilityNotes,

https://git.tt-rss.org/fox/tt-rss/wiki/UpdatingFeeds

 

Anmerkung: Die erforderlichen php7.3-Pakete wurden bereits im Schritt Webinterface installiert.

Datenbank installieren und konfigurieren

sudo apt install postgresql

sudo -u postgres psql

\password postgres

Enter new password: [Datenbank-Passwort]

Enter it again: [Datenbank-Passwort]

CREATE USER "www-data" WITH PASSWORD 'Datenbank-Passwort';

CREATE DATABASE ttrss WITH OWNER "www-data";

GRANT ALL PRIVILEGES ON DATABASE ttrss to "www-data";

\quit

Peer-Authentifizierungsfehler beheben:

sudo nano /etc/postgresql/11/main/pg_hba.conf

local all all peer

ersetzen durch

local all all trust

sudo service postgresql restart

 

Tiny Tiny RSS installieren und konfigurieren

sudo apt install git

cd /var/www/html


sudo git clone https://git.tt-rss.org/fox/tt-rss.git ttrss

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

Hat alles geklappt, so können wir die Installation von Tiny Tiny RSS nun im Browser unter http://[IP vom Raspi]/ttrss/install/ aufrufen.

Database type → PostgreSQL
Username → www-data
Password → Datenbank-Passwort
Database name → ttrss
Host name → (leer)
Port → 5432

→ [Test configuration]

Tiny Tiny RSS URL: https://ttrss.example.at

Haben wir die Daten richtig eingegeben, so erhalten wir die Ausgabe Database test succeeded und können anschließend auf Initialize database klicken. Daraufhin sollte ein Generated configuration file erscheinen mit einer Textbox darunter.
Den darinstehenden Text (Inhalt der Konfigurationsdatei) kopieren wir und fügen ihn in die config.php Datei ein.

sudo nano /var/www/html/ttrss/config.php

Konfiguration einfügen

und ÜBER DER ZEILE

define('SELF_URL_PATH', 'https://ttrss.example.at');

ERGÄNZEN WIR DIE FOLGENDE ZEILE

define('_SKIP_SELF_URL_PATH_CHECKS', true);

Wir vergeben noch Schreibrechte auf einige Ordner. Anschließend löschen wir das install-Verzeichnis:

cd /var/www/html/ttrss/

sudo chmod -R 777 cache/images/ cache/feeds/ cache/export/ cache/upload/ feed-icons/ lock/

sudo rm -r install

Anmerkung: den Administrator-Benutzernamen "Admin" kann man in der aktuellen Version leider nicht mehr ändern.

 

Nachrichten Feeds automatisch aktualisieren

Quelle: https://www.raspberrypi.org/documentation/linux/usage/systemd.md

Wir erstellen uns einen systemd Eintrag mit nachstehenden Inhalt:

sudo nano /etc/systemd/system/ttrss.service

[Unit]

Description=ttrss_backend

After=network.target postgresql.service

 

[Service]

User=www-data

ExecStart=/var/www/html/ttrss/update_daemon2.php

 

[Install]

WantedBy=multi-user.target

Testen:

sudo systemctl start ttrss.service

sudo systemctl stop ttrss.service

Fehler? … wenn nein, dann hinzufügen:

sudo systemctl enable ttrss.service

 

Newsplus-Plugin (Optional)

Durch dieses Plugin lässt sich das News+ Android App benutzen. Anleitung/Quelle: https://github.com/hrk/tt-rss-newsplus-plugin/

cd /var/www/html/ttrss/plugins

sudo git clone https://github.com/hrk/tt-rss-newsplus-plugin.git

sudo mv tt-rss-newsplus-plugin/api_newsplus ./

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

sudo rm -r tt-rss-newsplus-plugin/

Plugin aktivieren

sudo nano /var/www/html/ttrss/config.php

define('PLUGINS', 'auth_internal, note');

ersetzen durch

define('PLUGINS', 'auth_internal, note, api_newsplus');

Außerdem muss man noch im Webinterface unter Einstellungen das Kästchen bei "Aktiviere API-Zugang" aktivieren.

Ich verwende folgendes Android-App: https://play.google.com/store/apps/details?id=org.ttrssreader

 

Tiny Tiny RSS - Version aktualisieren (git update)

Früher oder Später solle man die Version von Tiny Tiny RSS aktualisieren.

Ein Backup der config.php – Datei wird empfohlen (falls diese aktualisiert werden sollte)! Nach dem Upgrade ggf. die Inhalte der config.php vervollständigen.

cd /var/www/html/ttrss/

sudo git pull origin master

ODER

sudo git --git-dir=/var/www/html/ttrss/.git pull origin master

 

top

5. Verschlüsselung (OpenSSL)

Kennst du noch den TOP-TIPP?
Backup durchgeführt?? - hoffentlich! :)

Das Thema Verschlüsselung hat seit dem NSA-Skandel immer mehr an Bedeutung gewonnen! Den Datenverkehr einer öffentlichen Webseite zu verschlüsseln macht nur wenig Sinn, jedoch möchten wir auch sensible Daten bzw. Dateien transferieren (Seafile, Baikal, usw.) welche es zu schützen gibt.

 

Eines gleich vorweg:
eine RICHTIGE VERSCHLÜSSELUNG (selbst signiertes Zertifikat) kann NICHT MIT 4 ZEILEN CODE zustande kommen! Auch wenn man auf den meisten Seiten so eine Anleitung findet ist es einfach Falsch!

Dann gibt es da noch:
die ganzen eingetragenen Zertifizierungsstellen bei denen man signierte Zertifakte erhält (egal ob kostenlos oder kostenpflichtig), wo man jedoch nie mit Sicherheit sagen kann ob die nicht den privaten Schlüssel an Behörden weitergeben (egal ob gewollt oder ungewollt) und somit die ganze Verschlüsselung unwirksam ist!

 

Wie gut das Zertifikat ist und welche Mängel es aufweist kann man kostenlos unter QUALYS SSL LABS testen. Da wir unser Zertifikat selbst signieren wird es als nicht vertrauenswürdig eingestuft und wir erhalten automatisch die Note T, jedoch mit der Fußzeile "Wenn Vertrauensprobleme ignoriert werden: Note A". Für uns entscheident ist ein Zertifikat ohne Mängel sowie folgende Bewertung:

SSL Server Test - anständige Verschlüsselung

Protocol Support: 100% Protokollunterstützung
Key Exchange: 90% Schlüsselaustausch
Cipher Strength: 90 % Verschlüsselungsstärke

 

Für dieses umfangreiche Thema habe ich eine Anleitung verfasst: Raspberry Pi - OpenSSL (pdf)

 

HTTPS-PORT (Port-Weiterleitung):
Der Port 443 ist der zuständige HTTPS-Port (SSL/TLS). Eine Port-Weiterleitung am Router ist erforderlich!

 

top

6. externe Festplatte (Optional - falls gewünscht)

Da Speicherkarten nur wenig Speicherplatz bieten, ist das Auslagern von großen Datenmengen auf eine externe Festplatte (2,5 oder 3,5 Zoll) sinnvoll. Eine 3,5 Zoll Festplatte benötigt eine eigene Stromversorgung (Kosten), deshalb rate ich zu einer 2,5 Zoll welche direkt vom Netzteil (2A) des RasPis versorgt werden kann.

persönliche Anmerkung:
ich selbst habe die PiDrive 314GB von Western Digital in Verwendung, wobei für unsere Zwecke jede ehemalige Laptop-Festplatte bestens geeignet sein dürfte.

 

Eine neu gekaufte Festplatte hat meistens keine Partitionen, somit schaut es aus als ob die Festplatte nicht erkannt wird. Bei Windows wird man automatisch darauf hinwiesen, in der Debian - Konsole muss man selbst aktiv werden! Es gibt eine echt gute Anleitung wie man eine Festplatte partitioniert, einbindet, usw. Deshalb hab ich nachträglich nur einen Verbesserungsvorschlag: ein "nofail" in fstab ergänzen

Schritt: Festplatte in fstab eintragen

UUID=efd48c69-3780-44f2-8262-1f54c1a4aae6 /media/usbdisk ext4 defaults,nofail 0 0

"nofail" verhindert das bei fehlender Festplatte der „emergency mode“ (=Auto-Login als Root) aktiviert wird!

 

top

7. private Cloud (Seafile)

Vorwort

Mit einer Cloud kann man persönliche Daten überall abrufen bzw. Dateien synchronisieren. Das ist sehr nützlich wenn man beispielsweise seine Musik am PC zu Hause, am Laptop für Unterwegs und in der Arbeit auf den gleichen Stand halten möchte, und / oder man seine persönlichen Dokumente übers Smartphone abrufen können möchte.
Eine private, also in der eigenen Wohnung befindlichen, Cloud schützt zusätzlich noch vor fremden Blicken.

Ein Backup dieser Daten ist in den meisten Fällen nicht erforderlich, da die Dateien am Server mit dem PC zu Hause (und / oder dem Laptop) synchronisiert werden und somit die Daten doppelt (bis dreifach) vorhanden sind - vorausgesetzt der Wohnung passiert nichts (Brand, Diebstahl, usw.). Wenn man 100%ig sicher gehen möchte, sollte man ein Backup bei einem Freund oder im Elternhaus unterbringen.

 

Veröffentlichtungen-Versionen: https://github.com/haiwen/seafile-rpi/releases

Installationsanleitung-Quellen:

https://download.seafile.com/published/seafile-manual/deploy/using_mysql.md

https://download.seafile.com/published/seafile-manual/deploy/deploy_with_nginx.md

https://download.seafile.com/published/seafile-manual/deploy/https_with_nginx.md

 

Anmerkung: Die erforderlichen php7.3-Pakete wurden bereits im Schritt Webinterface installiert.

Anmerkung:
Auf der Seafile-Seite als auch bei der Installation von Seafile wird die Verwendung von SQLite in Verbindung mit einer externen Festplatte (USB-Laufwerk) abgeraten. Deshalb wird als Datenbank MariaDB (MySQL) genommen.

 

Benutzer anlegen, MySQL installation und konfigurieren

sudo su

adduser seafile --disabled-login

apt install mariadb-server

cd /media/festplatte/Seafile

mkdir seafile-data

chown seafile:seafile seafile-data/

Pakete installieren:

apt install python-mysqldb python2.7 libpython2.7 python-setuptools python-ldap python-mysqldb python-memcache python-urllib3 python-requests

MYSQL-Server stoppen und im gesicherten Modus starten:


/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

use mysql;

UPDATE user SET authentication_string = password("MYSQL-ROOT-PASSWORT") where User='root';

FLUSH PRIVILEGES;

exit

Raspi neu starten:

shutdown -r 0

 

Seafile installieren und konfigurieren:

sudo su seafile

wget https://github.com/haiwen/seafile-rpi/releases/download/v7.0.5/seafile-server_7.0.5_stable_pi.tar.gz

tar -xvf seafile-server_7.0.5_pi.tar.gz

rm seafile-server_7.0.5_pi.tar.gz

cd seafile-server-7.0.5/

./setup-seafile-mysql.sh

Wir folgen den Anweisungen am Bildschirm und definieren Namen des Servers, Domain, Speicherplatz, usw. Das meiste ist dabei selbsterklärend. z.B.: "seafile data dir" → "/media/festplatte/Seafile/seafile-data"

Sollte man sich dabei unsicher fühlen: auf der Seafile-Seite ist alles genau beschrieben https://download.seafile.com/published/seafile-manual/deploy/using_mysql.md#user-content-Setup

Nun starten wir Seafile und Seahub:

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

 

Seafile automatisch starten (Autostart einrichten)

sudo nano /etc/systemd/system/seafile.service

[Unit]

Description=Seafile

After=network.target mysql.service

 

[Service]

Type=forking

ExecStart=/home/seafile/seafile-server-latest/seafile.sh start

ExecStop=/home/seafile/seafile-server-latest/seafile.sh stop

User=seafile

Group=seafile

 

[Install]

WantedBy=multi-user.target

sudo systemctl enable seafile seahub

 

sudo nano /etc/systemd/system/seahub.service


[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile

[Install]
WantedBy=multi-user.target

sudo systemctl enable seafile seahub

 

Raspi neustarten und Status überprüfen

sudo shutdown -r 0

sudo service seafile status

seafile.service - Seafile
   Loaded: loaded (/etc/systemd/system/seafile.service; enabled; vendor preset: enabled)
   Active: active (running) ......

sudo service seahub status

seahub.service - Seafile hub
   Loaded: loaded (/etc/systemd/system/seahub.service; enabled; vendor preset: enabled)
   Active: active (running) ......

 

Seafile zu Fail2Ban hinzufügen

Quelle: https://download.seafile.com/published/seafile-manual/security/fail2ban.md

wir öffnen die Datei und fügen am Ende nachstehendes hinzu:

sudo nano /etc/fail2ban/jail.local

[seafile]

enabled = true

port = http,https

filter = seafile-auth

logpath = /home/seafile/logs/seahub.log

maxretry = 3

Wir prüfen Fail2Ban mit:


sudo service fail2ban status

sudo fail2ban-client status

Status
|- Number of jail:    2
`- Jail list:    seafile, sshd

 

E-Mails vom Seafile-Server versenden (z.B.: Passwort zurücksetzen)

siehe https://download.seafile.com/published/seafile-manual/config/sending_email.md

 

Update / Upgrade der Seafile Version

siehe https://download.seafile.com/published/seafile-manual/deploy/upgrade.md

 

top

8. Seafile-Client am Raspi

Warum / Wozu?

Diese Frage werden sich vielleicht einige stellen, deshalb hier die Erklärung: meine Musik ist auf Seafile abgelegt und sämtliche Daten am Seafile-Server sind verschüsselt. Um meine Musik u.a. bequem am TV-Gerät, als Entertainment Center dient Kodi, abspielen zu können, muss die Musik unverschüsstelt sein. Die Daten stellen wir mit einem NFS-Server im lokalen Netzwerk bereit.

Anleitung

Quelle: https://help.seafile.com/en/syncing_client/linux-cli.html

sudo apt install seafile-cli

 

cd /media/festplatte

sudo mkdir NFS Seafile-to-NFS

sudo chown pi:pi Seafile-to-NFS/

 

cd Seafile-to-NFS/

mkdir seafile-client

 

cd /media/festplatte/NFS

sudo mkdir Musik

sudo chown pi:pi Musik/

 

Initialisierung und Daemon starten:

cd /media/festplatte/Seafile-to-NFS

seaf-cli init -d seafile-client/


seaf-cli start

 

Datenbank herunterladen:

Die "ID-der-Seafile-Bibliothek" sieht man wenn man in der URL im Seafile-Webinterface, nachdem man die Bibliothek angeklickt hat.

Beispiel für die ID: 0536c006-8a43-449e-8718-39f12111620d


seaf-cli download -l ID-der-Seafile-Bibliothek -s http://127.0.0.1:8000 \
-d /media/festplatte/NFS -u Seafile-Account-Benutzername -p Seafile-Account-Passwort

Status abfragen:
seaf-cli status

 

Autostart einrichten:

sudo nano /etc/systemd/system/seafcli.service


[Unit]
Description=seafcli
After=network.target seahub.service

[Service]
Type=forking
ExecStart=/usr/bin/seaf-cli start
ExecStop=/usr/bin/seaf-cli stop
User=cenzServer 
Group=cenzServer

[Install]
WantedBy=multi-user.target

sudo systemctl enable seafcli

 

top

9. Samba-Server

Was ist Samba / SMB? ⇒ https://de.wikipedia.org/wiki/Samba_(Software)

 

sudo apt install samba samba-common-bin

Bei der Installation wird man gefragt ob man ein zusätzliches dhcp-client Paket installieren möchte. Dies beantworten wir mit Nein / No.

 

Jetzt konfigurieren wir den Samba-Server in 3 Schritten:

sudo nano /etc/samba/smb.conf

1. Standard-Arbeitsgruppe ändern

workgroup = WORKGROUP
ÄNDERN ZU
workgroup = PiSamba

2. Standard-Inhalte nicht mehr teilen

WIR GEHEN ZU
#======================= Share Definitions =======================
ALLES WAS DARUNTER FOLGT KOMMENENTIEREN WIR MITTELS „;“ AUS
Das sieht dann so aus:

;[netlogon]
;[homes]
; comment = Home Directories
; browseable = no
; read only = yes
; create mask = 0700
; directory mask = 0700
; valid users = %S

;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; read only = yes

;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700

;[printers]
; comment = All Printers
; browseable = no
; path = /var/spool/samba
; printable = yes
; guest ok = no
; read only = yes
; create mask = 0700

;[print$]
; comment = Printer Drivers
; path = /var/lib/samba/printers
; browseable = yes
; read only = yes
; guest ok = no
; write list = root, @lpadmin

3. Unser Verzeichnis hinzufügen

FOLGENDE ZEILEN AM ENDE DER DATEI ERGÄNZEN

[profilname]

comment = shared directory

valid users = getshareddirectory

path = /media/festplatte/NFS/synchronisiertes-seafile-verzeichnis

guest ok = no

browseable = yes

read only = yes

Die ganzen Konfigurations-Parameter, für die smb.conf-Datei, findet man unter
https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

 

Testen der Konfigurationsdatei mit:

testparm

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[sharedmusic]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
    log file = /var/log/samba/log.%m
    logging = file
    map to guest = Bad User
    max log size = 1000
    obey pam restrictions = Yes
    pam password change = Yes
    panic action = /usr/share/samba/panic-action %d
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    passwd program = /usr/bin/passwd %u
    server role = standalone server
    unix password sync = Yes
    usershare allow guests = Yes
    workgroup = CENZ
    idmap config * : backend = tdb

[profilname]
    comment = shared music
    path = /media/festplatte/NFS/synchronisiertes-seafile-verzeichnis
    valid users = getshareddirectory

Entscheident ist vor allem die Ausgabe: Loaded services file OK.

 

Den Benutzer „getshareddirectory“ müssen wir zuerst in UNIX anlegen um ihm ein Passwort zuordnen zu können. Statt dem herkömmlichen adduser-Befehl, bei dem ein Homeverzeichnis, eine Gruppe, usw. angelegt werden, verwenden wir „useradd“:

sudo useradd getshareddirectory
sudo smbpasswd -a getshareddirectory

 

Danach starten wir den Dienst neu:

sudo systemctl restart smbd.service

 

Konfiguration Samba-Client:

Um unser Samba-Verzeichnis auf anderen Geräten hinzufügen zu können, sind einige Daten erforderlich. In der Regel sind das folgende:

Server: HOSTNAME-VOM-PI oder IP-ADRESSE-VOM-PI

Pfad: /profilname

Domäne/Workgroup: PiSamba

Benutzer: getshareddirectory

Passwort: [wie bei smbpasswd eingegeben]

 

Fail2Ban hinzufügen?

Man könnte Samba noch zu Fail2Ban hinzufügen. Dies habe ich jedoch nicht gemacht, da ich nur innerhalb vom lokalen Netzwerk den Dienst Passwortgeschützt und nur Leseberechtigt anbiete.

Sollte man das Bedürfnis verspüren dennoch Fail2Ban zu konfigurieren, muss man im Internet selbst recherchieren. z.B. auf https://www.heise.de/security/artikel/Erpressungs-Trojaner-wie-Locky-aussperren-3120956.html und / oder https://github.com/CanaryTek/ransomware-samba-tools/tree/master/fail2ban

 

 

top

 

10. NFS-Server (Alternative zu Samba)

Anmerkung:
"Samba" kann einiges mehr als ein NFS-Server, deshalb gibt zahlreiche Samba-Clients für wohl alle Systeme (u.a. als Android-App). Gute NFS-Clients sucht man vergeblich.

sudo apt install nfs-kernel-server

Ein einfaches Beispiel:

sudo nano /etc/exports

FOLGENDE ZEILE ERGÄNZEN

/media/festplatte/NFS/synchronisiertes-seafile-verzeichnis *(ro,all_squash,no_subtree_check)

Änderungen übernehmen:



sudo exportfs -ra

Die ganzen Kommandos, für die exports-Datei, findet man unter https://linux.die.net/man/5/exports

So kann man beispielsweise nur für eine bestimmte IP-Adresse das NFS-Laufwerk freigeben, was natürlich sicherer ist. Das "ro" steht für "read-only", Schreibrechte für das NFS-Laufwerk erhält man mit "rw" ("read-write").

 

NFS-Laufwerk mounten:

Das hinzufügen vom NFS-Laufwerk am NFS-Client (Notebook, PC, Kodi, usw.) funktioniert je nach Betriebssystem etwas anders. Dafür gibt es jedoch genügt Videos auf YouTube bzw. Anleitungen im Internet.

Beispiel, NFS-Laufwerk am Linux-PC hinzufügen:

sudo apt-get install nfs-common

showmount -e [IP vom Raspi]

Export list for [IP vom Raspi]:
/media/festplatte/NFS/synchronisiertes-seafile-verzeichnis *

 

sudo mount -t nfs \
[IP vom Raspi]:/media/festplatte/NFS/synchronisiertes-seafile-verzeichnis /mnt/nfsshare

/mnt/nfsshare sollte nun die Daten enthalten

Laufwerk entfernen und Pakete deinstallieren:

sudo umount /mnt/nfsshare

sudo apt-get remove nfs-common

sudo apt-get autoremove

 

 

top

 

Themen die dich interessieren könnten:

Diese Website nutzt Cookies, um bestmögliche Funktionalität bieten zu können.
weitere Informationen