BANANA PRO als NAS mit Samba, Apache, PHP5, MySQL, phpmyadmin, CUPS, MiniDLNA, Datenbackup

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/

Festplatten automatisch im Betrieb in den Standby schalten

Installation des Apache mit SSL/TLS

Unter Debian eine Webserver-Umgebung installieren – Apache, PHP, MySQL, phpMyAdmin und ProFTP

Banana Pro: WLAN einrichten

Banana Pi: Grüne LED abschalten