Couchblog

Bloggen von der Couch ➔ Gedanken, Notizen und Kommentare zu Online-Marketing, Webentwicklung und allgemeinen IT-Themen. Schau rein und mach es Dir gemütlich.

Card image cap

Homeserver mit Lubuntu einrichten


Dieser Artikel hilft Dir, wenn Du dir ebenfalls ein Raid1 unter einem Ubuntu-Derivat einrichten möchtest und ein paar wenige Grundlagen in Linux (Verzeichniswechsel, Umgang mit Editor im Terminal usw.) beherrscht.

Zur Vorgeschichte:

Seit ca 10 Jahren läuft bei mir eine Synology DS210j. Vor ein paar Jahren habe ich nur die verbaute Standard-HDD gegen eine WD-Red-(NAS)-Platte getauscht. Bis heute läuft das System stabil, aber über die Jahre ist mir die aktuell verfügbare Performance des NAS zu wenig und das DSM läuft doch mittlerweile etwas träge. Daher kam mir die Idee, einen eigenen Homeserver aufzusetzen. Aber dieses Mal möchte ich, wenn möglich keine Abhängigkeiten zu einem Hersteller schaffen. Daher soll es nun ein Homeserver im Eigenbau werden.

In meinem Keller lagern noch einige Rechner, die zwar allesamt schon betagt sind, aber daraus lässt sich ein ganz brauchbarer Rechner basteln. Die Wahl viel nun auf einen Pentium(R) Dual-Core CPU E5200 @ 2.50GHz mit 4GB RAM mit einer 64GB Sandisk SSD für das System und einer GeForce 9300 GE. Die Grafikkarte wäre eigentlich nicht notwendig, aber die CPU bietet leider noch keine Onboard-Grafik. Im Betrieb verbraucht der Rechner übrigens keine 55W. Neu gekauft wurden lediglich 2 x 4TB IronWolf.

Um eine fundierte Entscheidung zu treffen, habe ich auch 2 weitere Möglichkeiten (OpenMediaVault, FreeNAS) getestet. 100%ig zufrieden war ich mit beiden aber nicht, weshalb ich mich nun endgültig für eine eigene Konfiguration mit Lubuntu entschieden habe.

Geeignet wären sicherlich viele Linux-Distros, für ein betagtes System wie meines, habe ich mich aber schon vorab und ohne weitere Tests für das ressourcenschonende Lubuntu entschieden. Auch weil ich bereits Ubuntu (Budgie) seit einer ca. einem Jahr auf meinem DELL-Notebook nutze. Die Konfiguration des Rechners reicht übringens völlig aus, damit Lubuntu flüssig und schnell läuft.

Vorbereitungen

Als erstes müssen wir natürlich das OS downloaden, in meinem Fall Lubuntu. Um einen Bootfähigen USB-Stick zu erstellen, nutze ich das tolle Tool Etcher. Einfach den USB-Stick wählen, Distri wählen und los gehts.

Im BIOS einmal checken, ob alles korrekt eingestellt ist und wo ich schon mal im BIOS bin, wurde auch das Wake-on-LAN aktiviert, was für einen Homeserver ganz praktisch ist.

Nachdem Lubuntu sauber installiert ist und auch alle Hardware out-of-the-box läuft, folgt erstmal ein:

sudo apt-get update

SSH installieren

Zukünftig sollen am Server nur 2 Kabel hängen. Strom- und Netzwerkkabel. Damit ich von meinem Notebook auf den Homeserver zugreifen kann, wird im nächsten Schritt SSH installiert.

sudo apt-get install openssh-server

Netzwerk-Manager installieren

Von Haus aus funktioniert der Netzwerkanschluss tadellos, jedoch fehlt mir bei der Netzwerkkonfiguration etwas der Komfort. Daher folgt die Installation eines Managers in dem ich die Netzwerk-Konfig einfach verwalten kann.

sudo apt-get install network-manager network-manager-gnome 

Um zukünftigen Netzwerkproblemen aus dem Weg zu gehen, habe ich dem Server eine feste IP zugewiesen.

# Beispiel
NETMASK=255.255.255.0
IPADDR=192.168.2.100
GATEWAY=192.168.2.1

Login per SSH

Der Login auf dem Homeserver funktioniert nun über ssh username@ip-adresse also z.B. ssh christian@192.168.2.100. Nach der Passworteingabe steht die Verbindung zum Homserver. Nun alles Weitere per SSH…

MDADM und parted

Für die Konfiguration der Festplatten und des Raid benötigen wir MDADM und Parted.

sudo apt-get install mdadm parted 

Raid 1 einrichten

Mit sudo fdisk -l können wir alle Festplatten anzeigen um mehr Details zu erfahren. Weil beide Festplatten bereits testweise zu Testzwecken in einem Raid1 konfiguriert wurden, muss auf sdb und sdc die komplette Datenstruktur gelöscht werden. Die SSD mit dem Lubuntu-System läuft untersda, daher sollten wir diese natürlich nicht anfassen.

dd if=/dev/zero of=/dev/sdb bs=512 count=1  

Aufgrund der 4TB Größe verwende ich die GPT-Partitionstabelle. Bevor diese angelegt werden können, ist (zumindest in meinem Fall) ein Reboot notwendig. Und immer daran denken, alle Aktionen für sdb und sdcdurchführen oder wie die Bezeichnung eben bei Dir ist… siehe sudo fdisk -l

sudo parted /dev/sdb mklabel gpt

Nun können wir mit dem Erstellen der Partitionen beginnen:

sudo fdisk /dev/sdb 
  1. mit n neue Partition erstellen
  2. Partitionsnummer festlegen (1)
  3. bei First sector Enter
  4. bei Last Sector Enter
  5. Erkennung der (alten) Signatur - Löschen bestätigen
  6. Typ der Partition festlegen mit t.
  7. In meinem Fall benötige ich Linux RAID und habe die 29 gewählt (eine komplette Liste wird unter L angezeigt)
  8. Alle bisherigen Einstellungen überprüfen mit p
  9. Wenn alles passt, können wir mit w alle Einstellungen übernehmen.

Anschließend noch das logische Laufwerk im Raid 1 erstellen:

mdadm --create /dev/md0 --bitmap=internal --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdc

Nun können wir uns erstmal eine Pause gönnen, da die HDDs nun syncronisiert werden. wie weit der Fortschritt ist erfährst Du mit watch cat /proc/mdstat. Bei 2x 4TB im Raid1 werden bei mir ca 330 Minuten angegeben. Ich habe diesen Vorgang einfach über Nacht laufen lassen.

Den Status und weitere Details des Laufwerks erfährt man durch:

sudo mdadm --detail /dev/md0

Nachdem wir nun das Raidd1 eingerichtet und syncronisiert haben, müssen wir die Partition noch im EXT4 formatieren.

sudo mkfs.ext4 /dev/md0

Um einfach auf unser Raid zugreifen zu können, müssen wir einen Mountpoint erstellen und das Raid1 darin mounten:

sudo mkdir /mnt/raid1

sudo mount /dev/md0 /mnt/raid1

Die verfügbare Kapazitäten kannst Du überprüfen mit:

df -h /mnt/raid1

WICHTIG: Nun muss die Konfiguration unbedingt noch gespeichert werden.

sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf

Nun noch das initramfs updaten. Wird das initramfs nicht geupdated, kann es sein, dass dies Bootprobleme zur Folge hat. In dem Fall kann es helfen, während des GRUB-Bootloaders die SHIFT-Taste gedrückt zu halten und anschließend das zu bootende System manuell zu wählen.

sudo update-initramfs -u

Um das Raid1 beim Boot automatisch zu mounten muss noch die /etc/fstab mit sudo nano /etc/fstab aktualisiert werden:

# Standard
/dev/md0   /mnt/raid1   ext4   defaults   0   0

# mit Anzeige in Sidebar
/dev/md0  /mnt/raid1   ext4    defaults,x-gvfs-show   0   0

Ruhemodus der Festplatten nach x-Minuten aktivieren

Man könnte die HDD-Konfiguration auch schnell über die Konsole regeln, aber für diverse Einstellungen ist ein grafisches Tool schon nicht verkehrt. Ich habe nun nachträglich eine Laufwerksverwaltung installiert:

sudo apt-get install gnome-disk-utility

Samba Fileshare einrichten

Zuerst muss der Samba-Server installiert werden.

# Server und Pakete updaten 
apt-get update && apt-get upgrade

# Samba installieren
apt-get install samba samba-common

Nachdem die Installation abgeschlossen ist, müssen wir nun die Konfiguration vornehmen. Um im Zweifelsfall die originale Konfig-Datei wiederherstellen zu können, legen wir zuerst ein Backup an.

# Kopie erstellen
cp /etc/samba/smb.conf /etc/samba/smb.conf-old

Nachdem wir nun die smb.conf mit nano /etc/samba/smb.conf geöffnet und den gesamten Inhalt mit STRG + K gelöscht haben, können wir den Samba-Server konfigurieren.

[global]
        workgroup = arbeitsgruppe
        server string = %h server (Samba %v)
        log file = /var/log/samba/log.%m
        max log size = 1000
        encrypt passwords = true
        invalid users = root
        socket options = TCP_NODELAY
        security = user
        unix extensions = yes

[share]
        comment = HomeServer Media
        path = /mnt/raid1/media
  		writeable = yes
  		guest ok = no

Mit service smbd start den Samba-Server starten und einen Samba-User anlegen. Anschließend muss nur noch ein Passwort vergeben werden:

# Neuen User anlegen
adduser --disabled-login --shell /bin/false --home /mnt/raid1/media family

# Den neuen User in die Samba Datenbank hinzufügen
smbpasswd -a family

miniDLNA konfigurieren

Um Bilder, Videos und Musik auch über das Netzwerk auf dem TV anzeigen zu können, nutzen wir den DLNA-Standard. Unter Linux benötigen wir das Paket:

sudo apt install minidlna

Sicherheitskopie anlegen und die Konfiguration anpassen:

cp /etc/minidlna.conf /etc/minidlna-old.conf
sudo nano /etc/minidlna.conf

Konfiguration

#   * "A" for audio    (eg. media_dir=A,/var/lib/minidlna/music)
#   * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
#   * "V" for video    (eg. media_dir=V,/var/lib/minidlna/videos)
media_dir=V,/mnt/raid1/media/videos
media_dir=A,/mnt/raid1/media/musik
media_dir=P,/mnt/raid1/media/fotos

# Name that the DLNA server presents to clients.
# Defaults to "hostname: username".
friendly_name= MiniDLNA-Server

# Automatic discovery of new files in the media_dir directory.
inotify=yes

Neustart des MiniDLNA-Server

sudo service minidlna restart

Nun sind wir fertig. ;) Diese Anleitung bietet natürlich keine Garantie, dass die beschriebenen Schritte bei Dir ebenfalls funktionieren. Im Zweifelsfall hilft das Forum von ubuntuusers. Dort sind nicht nur viele sehr versierte Linuxer zu finden, sie sind auch noch äußerst hilfsbereit.