Christian's Ecke im Web

raspberry

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 würden den Minirechner überfordern! 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.

 

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 [HTML-Tag]:

Code in einer Datei [code]

Tastatur-Eingabe [kbd]

Bildschirm-Ausgabe [samp]

Wähle selbst einen Namen/Begriff/Nummer [span class="choose-for-yourself"]

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 "Raspberry Pi OS" - Version (früher "Raspbian") wurde mittels "Win32 Disk Imager" (Windows) oder "Etcher" (Windows/Linux) 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. Der gewünschte Port sollte jedoch noch frei sein, siehe auch Liste der standardisierten Ports:

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 = 6
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" einloggen, 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 noch 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 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

 

zum Testen legen wir uns eine php-Datei an:

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

Anmerkung: mein Editor schafft es leider nicht diesen Code als Text wiederzugeben. Deshalb ein Screenshot, bitte abtippen.

 

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:
Die Einträge (Kalender, Kontakte) aus einer früheren Version übernehmen ist nichts für Anfänger.
Sollte daran interesse bestehen, dann melde dich bitte über Github bei mir.

 

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/

Nun können wir die Installation von Tiny Tiny RSS im Browser unter http://[IP vom Raspi]/ttrss/install/ aufrufen.

  1. Database type → PostgreSQL
  2. Username → www-data
  3. Password → Datenbank-Passwort
  4. Database name → ttrss
  5. Host name → (leer)
  6. Port → 5432
     
  7. → [Test configuration]
     
  8. 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');

Wichtig: 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

 

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

ACHTUNG: (Anmerkung vom 25.06.2020)

Ab Seafile Version 7.1.x wird Python3 vorausgesetzt! Im Zuge der Aktualisierung meines Systems benötigte ich folgendes:

apt install python3 python3-setuptools python3-pip libmemcached-dev

pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy django-pylibmc django-simple-captcha python3-ldap

Nähere Informationen findet man unter:
https://download.seafile.com/published/seafile-manual/upgrade/upgrade_notes_for_7.1.x.md

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 SAMBA-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 SMB Seafile-to-SMB

sudo chown pi:pi Seafile-to-SMB/

 

cd Seafile-to-SMB/

mkdir seafile-client

 

cd /media/festplatte/SMB

sudo mkdir Musik

sudo chown pi:pi Musik/

 

Initialisierung und Daemon starten:

cd /media/festplatte/Seafile-to-SMB

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/SMB -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/SMB/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 = PiSamba
    idmap config * : backend = tdb

[profilname]
    comment = shared directory
    path = /media/festplatte/SMB/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. Tor + Proxy

Den Datenverkehr einzelner Programme (z.B.: Browser) oder vom ganzen Gerät (z.B.: Tablet) kann man über das Tor-Netzwerk schicken. Als Schnittstelle braucht man am privaten Server einen Proxy-Dienst und den Dienst vom Tor-Netzwerk. Dabei erhält man automatisch alle 10 Minuten eine neue IP-Adresse.

Anmerkungen:
Das Tor-Netzwerk steht zum anonymisierten Surfen kostenlos zur Verfügung. Es ist nicht zur Übertragung großer Datenmengen, die beispielsweise beim Streamen von Serien & Filmen anfallen, konzipiert und daher nicht bzw. kaum einsetzbar.
Außerdem bleibt die Anoymisierung nur erhalten, solange man sich nicht auf Webseiten, Apps (YouTube, Facebook, usw.), Google-Account, usw. einloggt.
Also nutzt es nur für Programme und auf Geräte wo es wirklich Sinn macht!

Pakete installieren:

sudo apt install tor privoxy

Privoxy konfigurieren:

sudo nano /etc/privoxy/config

unter „# 4.1. listen-address“ gibt es den folgenden Eintrag:

listen-address 127.0.0.1:8118
listen-address [::1]:8118

ÄNDERN ZU

listen-address 192.168.0.08:8118
#listen-address [::1]:8118

 

unter „# 5.2. forward-socks4, forward-socks4a, forward-socks5...“ gibt es folgenden Eintrag:

# forward-socks5t / 127.0.0.1:9050 .

ÄNDERN ZU

forward-socks5t / 127.0.0.1:9050 .

Somit ist unser Proxy mit folgenden Einstellungen erreichbar:

Proxy-Host: 192.168.0.08 (hier ist die IP eures Pis einzutragen!)

Proxy-Port: 8118

 

Änderungen übernehmen:

sudo service tor restart

sudo service privoxy restart

Autostart: Tor befindet sich bereits im Autostart. Den Proxy fügen wir hinzu:

sudo update-rc.d privoxy defaults

 

Das war schon! ggf. kann man nach einem Neustart noch prüfen ob beide Dienste aktiv sind:

sudo service tor status

sudo service privoxy status

 

Konfiguration der Geräte als Kurzfassung: (es gibt auch einige YouTube dazu und unzählige Anleitungen im Internet)

nur Browser: in den Einstellungen ("Verbindungs-Einstellungen" oder ähnliches) kann man den Proxy festlegen.

gesamtes Gerät: bei Android geht man unter Einstellungen / WLAN und mit langen Fingerdruck auf das eigene Netzwerk gelangt man zu "Netzwerk ändern". Etwas weiter unten gibt es dann "Erweiterte Optionen" wo man den Proxy manuell festlegen kann. Bei Bedarf kann man hier auch für einige Domains eine Umgehung des Proxys einstellen.

 

 

top

 

Themen die dich interessieren könnten: