1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Der Heimische Medienserver

Was die multimedial aufgerüsteten NAS-Boxen für Endverbraucher können, erreicht man auch mit freier Software. Dieses Kapitel zeigt, wie man einen Server für Fotos, Musik und Filme einrichtet. Bei mir zu Hause läuft Debian auf einem Qnap HS-251+ mit HDMI-Ausgang. Man kann aber auch einen Microserver, einen ausrangierten PC, oder einen Raspberry Pi verwenden. Ein Pulse-Eight Adapter koset rund 40 Euro und speist die CEC-Signale als USB-Tastatur ein.

Dienste im Heimnetz

Debian installieren

Auf dem Heimserver installieren wir Debian per Startmedium. Beim Anlegen der Partitionen verwenden wir die gesamte erste Festplatte. Der Auslagerungsspeicher entspricht der Größe des eingebauten Arbeitsspeichers.

Partition Größe Name Benutzen als Einbindungspunkt
/dev/sda1 536 MB esp EFI-System-Partition /boot/efi
/dev/sda2 max root Btrfs-Journaling-Dateisystem /
/dev/sda3 2 GB swap Auslagerungsspeicher (swap)

Bei der Softwareauswahl wählen wir nur den SSH-Server aus und bringen die Installation zu Ende.

Dateisysteme ordnen

Sobald das frisch installierte System läuft, melden wir uns per ssh als normaler Benutzer an und schwingen uns zum Administrator auf.

su - root

Zuerst erzeugen wir eine Momentaufnahme des Wurzeldateisystems und Subvolumen für verschiedene Arten von Nutzdaten.

btrfs subvolume snapshot / /@root
btrfs subvolume create /@home
btrfs subvolume create /@photo
btrfs subvolume create /@music
btrfs subvolume create /@video
btrfs subvolume create /@public

Falls weitere Festplatten installiert sind, bilden wir einen RAID-Verbund. Die Metadaten werden gespiegelt und Nutzdaten gleichmäßig verteilt.

btrfs device add /dev/sdb /
btrfs balance start -mconvert=raid1 -dconvert=raid0 /
Done, had to relocate 4 out of 4 chunks

Nun wechseln wir per Changeroot das Wurzeldateisystem, welches wir wir im Folgenden anpassen werden.

mount -o subvol=@root /dev/sda2 /mnt
mount -o bind /dev  /mnt/dev
mount -o bind /sys  /mnt/sys
mount -o bind /proc /mnt/proc
chroot /mnt

Dort installieren wir erst einmal diverse Hilfsprogramme.

apt install joe less tree wget psmisc iotop fail2ban nullmailer syncthing

Dann legen wir Einhängepunkte für die Subvolumen an.

mkdir /srv/{photo,music,video,public}

Schließlich binden wir diese in der Dateisystemtabelle ein.

/etc/fstab
# What Where Type Options Dump Pass /dev/sda1 /boot/efi vfat umask=0077 0 0 /dev/sda2 / btrfs noatime,subvol=@root 0 0 /dev/sda2 /home btrfs noatime,subvol=@home 0 0 /dev/sda2 /srv/photo btrfs noatime,subvol=@photo 0 0 /dev/sda2 /srv/music btrfs noatime,subvol=@music 0 0 /dev/sda2 /srv/video btrfs noatime,subvol=@video 0 0 /dev/sda2 /srv/public btrfs noatime,subvol=@public 0 0 /dev/sda3 none swap sw 0 0

Netzwerk konfigurieren

Zur Konfiguration der Schnittstellen ersetzen wir Debians ifupdown-Mechanismus durch systemd-networkd. Die externe Schnittstelle bekommt eine statische Adresse und verwendet den Router als Default-Gateway ins Internet. Außerdem soll sie Pakete aus dem internen Subnetz weiterleiten.

/etc/systemd/network/eno1.network
[Match] Name=eno1 [Network] Address=192.168.23.2/24 Gateway=192.168.23.1 IPForward=yes

Die Uhrzeit wird mit dem NTP-Server des Routers synchronisiert.

/etc/systemd/timesyncd.conf
[Time] NTP=192.168.23.1

Nun aktivieren wir die neuen Nertzwerkdienste.

systemctl enable systemd-{networkd,resolved,timesyncd}

Schlüssel hinterlegen

Als Administrator möchte man einen passwortfreien Zugang von seinem Arbeitsplatz aus. Dazu hinterlegen wir die öffentlichen Schlüssel aller Zugangsberechtigten Personen aus ~/.ssh/id_rsa.pub auf allen Servern.

/root/.ssh/authorized_keys
ssh-rsa AAAAM5bH8j0U4k5kiY9GdK5lKI61/PgyqJrsoUD………ImwPxgfks49VI== phrank

Sobald die Anmeldung mit dem Schlüssel funktioniert, deaktivieren wir die Authentifizierung per Passwort, so daß ausschließlich der Schlüssel den Zugang gewährt.

/etc/ssh/sshd_config
PasswordAuthentication no ChallengeResponseAuthentication no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server

Wenn man mehrere Server betreut, hilft ein schönes Motto of the Day dabei, den Überblick zu behalten, wo man gerade angemeldet ist.

/etc/motd
▐ ▄ ▄▄▄· .▄▄ · QNAP HS-251+ • •█▌▐█▐█ ▀█ ▐█ ▀. ▪ ▐█▐▐▌▄█▀▀█ ▄▀▀▀█▄ 2 GHz Intel Celeron J9100 ██▐█▌▐█ ▪▐▌▐█▄▪▐█ 2 GB DDR3 1333 . ▀▀ █▪ ▀ ▀ ▀▀▀▀ 2 x 3 TB WD30EFRX Red .

Bootloader ersetzen

GRUB durch Bootctl ersetzen

wget  -O /etc/kernel/postinst.d/zz-update-bootctl https://illusioni.de/~phrank/debian/zz-update-bootctl
chmod +x /etc/kernel/postinst.d/zz-update-bootctl
/etc/kernel/postinst.d/zz-update-bootctl
bootctl install

Zum Schluß entfernen wir die nicht mehr benötigten Pakete, verlassen die Changeroot-Umgebung und starten den Server neu.

apt remove grub-common ifupdown isc-dhcp-{client,common} rsyslog logrotate anacron cron aspell ispell emacsen-common nano vim-{common,tiny} xauth
apt autoremove
exit
reboot

Literatur

  1. Patrick Gillespie: Text-to-ASCII-Generator