Eine Dokumentation über Einrichtung des Einplatinenkomputer „Banana Pro“ für die Rolle des Netzspeichers (NAS).
Mein Ziel war einen Linux-Server für Heimnetzwerk einzurichten, und als Backupspace, Media Server, Druck-, Freigaben- und Webserver zu nutzen. Der Zugriff auf diese Dienste sollte von mehreren Windows- oder Android-Clients erfolgen. Ich habe einige HowTos dazu gelesen, die Quellen sind weiter unten aufgeführt.
Zunächst musste ich zwischen Raspberry Pi 3, Banana Pi und Banana Pro wählen. Ich wollte ja einen NAS bauen. Das macht den Anschluss einer externen Festplatte notwendig und setzt ein schnelles Datentempo voraus. Banana hat einen SATA-Anschluß onboard, Raspberry hat keinen. Banana hat einen 1000 MBit/s LAN-Adapter, Raspberry nur 100 MBit/s. Die Entscheidung war für Banana Board gefallen. Ein WiFi Modul onboard hatte die Pro-Variante aus beiden Bananas herauskristallisiert.
Also ich habe bestellt:
1. lemaker Banana Pro Board – A20
2. Netzteil DC Adapter 5V 3A 3000mAh Micro USB Stecker (2 Amper muss mindestens sein)
3. Acrylgehäuse für Banana Pi Pro Board
4. Speicherkarte microSDHC 16GB bis zu 80 MB/Sek, Class 10
5. SATA-Kabel
6. Netzteil DC Adapter 5V 12V (z.B. Switching Power Adapter, Model GFP252-0512)
Will man eine 2,5 HDD anschließen, so werden die Punkte 5 + 6 nicht benötigt. Stattdessen muss ein spezielles SATA-Kabel für Banana Pro Board besorgt werden. Ich habe eine 3,5 HDD verwendet, sie benötigt eine externe 12V Stromversorgung, weil der Banana Board nur 5V liefert.
Installation von Bananian auf SD-Karte
Die Installation von Bananian (für Banana Board angepasste Debian) verläuft ohne Problem wie hier beschrieben:
https://www.bananian.org/download.
Danach HDMI-Bildschirm anschliessen und Banana Pro starten. Default Login ist root mit dem Passwort pi.
Grundkonfiguration
Folgende Werte sind geplant:
– Hostname: bananapi
– NetBIOS-Name: BANANA
– Feste IP: 192.168.178.2
– Netzfreigaben: shareA, shareB, shareC, public, archiv, mcenter
– Samba-Benutzer: userA, userB, userC
– Rechte:
userA kann lesen und schreiben in shareA, public, archiv, mcenter
userB kann lesen und schreiben in shareB
userC kann lesen und schreiben in shareC
userB und userC können nur lesen in public, archiv, mcenter
– Druckserver um auf Brother HL-2030 zentral zuzugreifen
Grundkonfiguration starten, das Betriebssystem aktualisieren:
bananian-config
apt-get update && apt-get dist-upgrade
Anpassen die Datei /etc/hosts wie folgt:
127.0.0.1 localhost bananapi
192.168.178.2 bananapi
Systembenutzer und Systemgruppe erstellen:
adduser --no-create-home --disabled-login --shell /bin/false smbuser
addgroup smbusers
Benutzer und Gruppen erstellen:
adduser --no-create-home --disabled-login --shell /bin/false userA
adduser --no-create-home --disabled-login --shell /bin/false userB
adduser --no-create-home --disabled-login --shell /bin/false userC
adduser userA smbusers
adduser userB smbusers
adduser userC smbusers
Benutzer-Passwort eingeben. Dieses soll mit dem Login-Passwort auf dem Windows-Clients übereinstimmen!
passwd userA
passwd userB
passwd userC
Externe Festplatte mounten
Meine externe 3,5″ Festplatte (mit ext4 formatiert) sollte in den Ordner /media/nas gemountet werden:
mkdir /media/nas
mount /dev/sda1 /media/nas
Damit die Platte auch beim Serverstart automatisch gemountet wird, sollte ein Eintrag in die Datei /etc/fstab erfolgen:
/dev/sda1 /media/nas ext4 rw,relatime,data=ordered,auto,defaults 0 0
Freigaben erstellen, Rechte vergeben
mkdir /media/nas/shareA
mkdir /media/nas/shareB
mkdir /media/nas/shareC
mkdir /media/nas/mcenter
mkdir /media/nas/archiv
mkdir /media/nas/public
chmod 775 /media/nas
chown -R smbuser:smbusers /media/nas
chmod -R 770 /media/nas/*
Samba
Installieren:
apt-get install samba samba-common smbclient lrzip winbind cifs-utils libnss-winbind libpam-winbind
service smbd stop
service nmbd stop
Originale Config-Datei sichern und eine neue erstellen:
mv /etc/samba/smb.conf /etc/samba/smb.conf.vorher
touch /etc/samba/smb.conf
Inhalt der neuen smb.conf:
[global]
workgroup = WORKGROUP
security = user
encrypt passwords = yes
netbios name = BANANA
server string = Samba %v
guest ok = no
dns proxy = no
time server = yes
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
server max protocol = NT1
interfaces = eth0 lo
bind interfaces only = yes
wins support = yes
invalid users = root
unix charset = UTF8
log file = /var/log/samba/log.%m
max log size = 2048
loglevel = 2
syslog = 2
panic action = /usr/share/samba/panic-action %d
socket options = TCP_NODELAY IPTOS_LOWDELAY
hide dot files = yes
veto files = /lost+found/
load printers = yes
printing = cups
printcap = cups
[shareA]
comment = UserA Backup
path = /media/nas/shareA
guest ok = no
writeable = yes
browseable = yes
create mask = 0660
directory mask = 0770
force group = smbusers
force user = userA
valid users = userA
[shareB]
comment = UserB Backup
path = /media/nas/shareB
guest ok = no
writeable = yes
browseable = yes
create mask = 0660
directory mask = 0770
force group = smbusers
force user = userB
valid users = userB
[shareC]
comment = UserC Backup
path = /media/nas/shareC
guest ok = no
writeable = yes
browseable = yes
create mask = 0660
directory mask = 0770
force group = smbusers
force user = userC
valid users = userC
[archiv]
comment = Archiv
path = /media/nas/archiv
guest ok = no
browseable = yes
writeable = yes
create mask = 0660
directory mask = 0770
force group = smbusers
force user = userA
valid users = userA
[public]
comment = Public
path = /media/nas/public
guest ok = no
browseable = yes
writeable = no
write list = vlad
create mask = 0660
directory mask = 0770
force group = smbusers
force user = userA
valid users = @smbusers
[mcenter]
comment = Media Center Banana
path = /media/nas/mcenter
guest ok = no
browseable = no
writeable = no
write list = userA
create mask = 0664
directory mask = 0775
force group = minidlna
force user = minidlna
valid users = userA, minidlna
Root-Passwort in Samba Datenbank eintragen:
smbpasswd -a
Samba-User erstellen (Passwörter wie bei den UNIX-User!):
smbpasswd -a userA
smbpasswd -a userB
smbpasswd -a userC
Konfiguration checken mit:
testparm
danach Samba neustarten:
service smbd restart
service nmbd restart
Ab jetzt sollten alle Freigaben in der Netzwerkumgebung sichtbar werden. Einfach im Windows-Explorer \\BANANA eingeben.
Die Daten sichere ich auf dem NAS mit Cobian Backup. Um Zugrifffehler beim Schreiben auf die Netzwerkfreigabe zu vermeiden, sollte der Cobian Dienst mit Rechten des angemeldeteten Windows-Benutzers laufen.
Apache mit SSL/TLS, PHP5, MySQL und phpmyadmin
Apache2 und OpenSSl installieren:
apt-get install apache2 apache2-doc apache2-utils openssl ssl-cert
Zertifikate erstellen:
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Oben erstellten private und öffentliche Schlüssel in die dafür vorgesehenen Ordner kopieren. Beide Ziel-Ordner sollen dem root gehören.
cp server.key /etc/ssl/private/server.key
cp server.crt /etc/ssl/certs/server.crt
SSL/TLS Module und Sites für Apache aktivieren:
a2enmod ssl
a2ensite default-ssl
Abschnitt <VirtualHost _default_:443> in der SSL-Konfiguration /etc/apache2/sites-available/default-ssl.conf
mit dem Text erweitern:
# SSL aktivieren
SSLEngine on
# Dort liegen die Zertifikate
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
# Verschlüsselungen
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:ECDH+AESGCM:ECDH+AES:ECDH:HIGH:MEDIUM:!RC4:!3DES:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP
Danach: /etc/init.d/apache2 restart
Installieren PHP5:
apt-get install php5 libapache2-mod-php5
/etc/init.d/apache2 restart
Installieren MYSQL, Passwort für MySQL-Admin vergeben:
apt-get install mysql-server mysql-client
PHP mit MySQL verbinden:
apt-get install php5-mysql php5-curl php-pear php5-imagick php5-mcrypt
/etc/init.d/apache2 restart
MySQL-Installation sicher machen: mysql_secure_installation
Installieren phpmyadmin: apt-get install phpmyadmin
Erreichbar unter http://ip-adresse-des-servers/phpmyadmin
Nun können unsere Webanwendungen zentral auf dem Server laufen. Der DocumentRoot befindet sich in /var/www/html und sollte entsprechende Rechte besitzen:
chown -R userA:www-data /var/www/html/*
chmod -R 755 /var/www/html/*
Sollten die Webanwendungen mit .htaccess geschutzt werden, so bitte die Konfiguration des Web-Servers /etc/apache2/apache2.conf
wie folgt anpassen:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Media Server miniDLNA
apt-get install minidlna
Koonfiguration in /etc/minidlna.conf
ändern:
media_dir=V,/media/nas/mcenter/video/ordner1
media_dir=V,/media/nas/mcenter/video/ordner2
media_dir=V,/media/nas/mcenter/video/ordner3
media_dir=P,/media/nas/mcenter/fotos/ordner1
media_dir=P,/media/nas/mcenter/fotos/ordner2
Ordner für Media erstellen und Zugriffsrechte vergeben:
mkdir /media/nas/mcenter/video/ordner1
mkdir /media/nas/mcenter/video/ordner2
mkdir /media/nas/mcenter/video/ordner3
mkdir /media/nas/mcenter/fotos/ordner1
mkdir /media/nas/mcenter/fotos/ordner2
chown -R minidlna:minidlna /media/nas/mcenter/
/etc/init.d/minidlna restart
Drucken mit CUPS
apt-get install lpr
apt-get install cups
Editieren /etc/cups/cupsd.conf
wie folgt:
Listen *:631
# Restrict access to the server...
<Location />
Order allow,deny
Allow 192.168.178.0/255.255.255.0
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow 192.168.178.0/255.255.255.0
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow 192.168.178.0/255.255.255.0
</Location>
CUPS neu starten: /etc/init.d/cups restart
Unter https://192.168.178.2:631/admin „Verfügbare Drucker auflisten“ und mit zuvor heruntergeladene Datei „Brother-HL-2030-hl1250.ppd“ einrichten.
Danach auf Windows-Clients als Freigegebenen Drucker mit der Adresse http://192.168.178.10:631/printers/Brother_HL-2030_series installieren.
WLAN auf BANANA PRO aktivieren
WiFi auf dem Banana Board muss zunächst mit bananian-hardware
aktiviert werden. Im Dialog-Fenster BananaPro wählen.
Danach:
echo ap6210 >> /etc/modules
ifconfig wlan0 up
Erweitern /etc/network/interfaces
mit:
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.178.21
netmask 255.255.255.0
gateway 192.168.178.1
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "SSID eintragen!"
wpa-psk "KEY eintragen!"
Banana Pro rebooten: shutdown -r now
Mit Power Button herunterfahren
Nach dieser Anleitung wird es möglich sein, den Banana Pro mit einem Tastendruck auf Power Button auszuschalten.
aptitude install acpid
Einfügen
event=button/power
action=/etc/acpi/shutdown.sh
in /etc/acpi/events/button_power
Editieren (evtl. zuerst erstellen) /etc/acpi/shutdown.sh
mit
#!/bin/bash
shutdown -h now
Execute-Rechte vergeben, danach den Daemon neu starten:
chmod +x /etc/acpi/shutdown.sh
/etc/init.d/acpid restart
HDD in Standby senden
Banana Pro Board benötigt sehr wenig Strom (ca. 5W bei 100% CPU-Auslastung), die externe Festplatte dagegen viel mehr. Wir senden sie schlafen, falls sie nicht gerade benötigt wird.
apt-get install hdparm powermgmt-base
Danach brauchen wir UUID:
blkid
/dev/sda1: UUID="c8d1a08d-109b-4901-8d96-0296f9bce84b" TYPE="ext4" PARTUUID="9337a92b-01"
Editieren /etc/hdparm.conf
und am Ende einfügen:
/dev/disk/by-uuid/c8d1a08d-109b-4901-8d96-0296f9bce84b {
spindown_time = 240
}
Dabei bedeuten die Zahlen:
0 = Ruhezustand deaktiviert
60 = 5Min (60*5Sek=300Sek=5Min)
240 = 20Min (240*5Sek=1200Sek=20Min)
Ab 240 ändert sich die Berechnung!
241 = 30Min (1*30Min)
242 = 60Min (2*30Min)
Banana neu starten: shutdown -r now
Was macht gerade die HDD (status) kann man prüfen mit:
hdparm -C /dev/sda
Grüne LED abschalten, weil nervt
vim /etc/rc.local
vor exit 0 einfügen:
echo none > /sys/class/leds/green\:ph24\:led1/trigger
Banana Pro rebooten: shutdown -r now
Viel Erfolg!
Quellen
Herzlichen Dank an alle, die ihre Erfahrungen ins Netz stellen!
http://znil.net/index.php?title=NTFS_Festplatte_am_Raspberry_Pi_mounten
https://frank-mankel.de/kategorien/10-bananapi/62-bananapibananapro-powerbutton
https://maker-tutorials.com/raspberry-pi-festplatte-automatisch-standby-hdparm/
Unter Debian eine Webserver-Umgebung installieren – Apache, PHP, MySQL, phpMyAdmin und ProFTP