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 :)
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.
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!
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!
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.
Nun gehen wir ins Desktop Menü und wählen "Raspberry Pi Konfiguration" und nehmen folgende Änderungen vor:
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.
Nginx ist ein Webserver-Dienst, um Webseiten und Interfaces von anderen Programmen oder Diensten darzustellen. PHP ist eine Webseiten-Programmiersprache.
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!
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/
Server Time zone → Europe/Vienna
Email → baikal@example.at
WebDAV → Digest
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) {
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.
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.
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
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
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:
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)
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.
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!
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.
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
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
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
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
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) ......
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
siehe https://download.seafile.com/published/seafile-manual/config/sending_email.md
siehe https://download.seafile.com/published/seafile-manual/deploy/upgrade.md
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.
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
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, @lpadmin3. 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_STANDALONEPress 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
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.
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.
Mein persönliches Interesse führt mich immer wieder zu verschiedenen Fachgebieten. Die meisten sind nicht schwer zu erlernen, aber die Recherche kann zeitaufwendig sein. Auf meiner privaten Website möchte ich meine Erfahrungen und mein Wissen weitergeben, um den Einstieg in die Welt des Bastelns zu erleichtern!