Sie sind hier

Installation CentOS 7 Homeserver (NAS)

DruckversionPDF versionEPUB version

Diese Anleitung beschreibt die Einrichtung von CentOS als lokalen Datenserver für den privaten Haushalt.

Sie baut teilweise auf die Webserveranleitung auf, so dass diese zuerst durchgegangen werden wollte:

http://linux.t-tietz.de/CentOS_7_Installation_Webserver

Wir sind als User "root" per SSH auf dem Server angemeldet.

Wir richten einen Benutzer ein, unter dessen Namen wir die öffentlichen Daten teilen wollen.

adduser media

centos-7-mediaserver.png

Dem User teilen wir ein Passwort zu:

passwd media

centos-7-mediaserver-2.png

Wir legen eine grundlegende Dateistruktur an:

mkdir -p /home/media/Musik /home/media/Bilder /home/media/Videos

centos-7-mediaserver-3.png

Wir setzen den Benutzer:

chown -R media /home/media

centos-7-mediaserver-4.png

Bei Bedarf richten wir weitere Benutzer ein, die ihre Daten nicht öffentlich teilen:

adduser benutzer

passwd benutzer

centos-7-mediaserver-5_0.png

Und richten die Struktur ein:

mkdir -p /home/benutzer/Musik /home/benutzer/Bilder /home/benutzer/Videos /home/benutzer/Dokumente

centos-7-mediaserver-6_0.png

Wir setzen die Rechte :

chown -R benutzer /home/benutzer

centos-7-mediaserver-7.png

Die Sicherheitstechnik Selinux und der Firewall machen für den Heimgebrauch eher Probleme als dass sie nutzen, daher schalten wir sie ab.

nano /etc/selinux/config

 

centos-7-mediaserver-8_0.png

Wir machen aus "SELINUX=enforcing "  "SELINUX=disabled"

centos-7-mediaserver-9.png

centos-7-mediaserver-10.png

Für den Firewall geben wir ein:

systemctl disable firewalld

Danach starten wir mit

reboot

neu.

centos-7-mediaserver-11.png

Nun sorgen wir dafür , dass die öfftenlichen Medien per HTTP geteilt werden können.

Dafür legen wir eine weitere Konfigurationsdatei an:

nano /etc/httpd/conf.d/media.conf

centos-7-mediaserver-12.png

<Directory /home/media >
Require all granted
Options +Indexes
</Directory>

Alias /Musik /home/media/Musik
Alias /Bilder /home/media/Bilder
Alias /Videos /home/media/Videos

 

centos-7-mediaserver-13.png

Danach starten wir den httpd neu:

systemctl restart httpd

 

centos-7-mediaserver-14.png

 

Unter IP/Musik IP/Videos und IP/Bilder können wir im Browser nun auf die Daten zugreifen.

centos-7-mediaserver-15.png

 

Bis jetzt können die Daten über HTTP nur gelesen werden.

Zum Schreiben gibt es die Erweiterung "Webdav".

Normalerweise läuft der Webserver unter einen eigenen Benutzeraccount,der Daten des Benutzers "media" zwar lesen aber nicht schreiben kann.

Da unser Sever nicht aus dem Internet erreichbar ist und im Heimnetz hoffentlich nur vertrauliche Leute sind, machen wir den Server etwas unsicherer und lassen den httpd unter den Account "media" laufen.

Dazu editieren wir die Konfiguration:

nano /etc/httpd/conf/httpd.conf

centos-7-mediaserver-54.png

Wir suchen die Stelle wo "User" Und "Group" stehen und tragen dahinter  "media" ein.

centos-7-mediaserver-55.png

In der Datei "/etc/httpd/conf.d/media.conf

centos-7-mediaserver-56.png

Tragen wir im "Directory" Bereich

Dav on

ein.

Dann editieren wir die Dav-Konfiguration:

nano /etc/httpd/conf.modules.d/00-dav.conf

centos-7-mediaserver-59.png

Hier fügen wir folgende Zeile ein:

DavLockDB /var/lock/httpd/dav_lock

centos-7-mediaserver-60.png

 

Diese Verzeichnis erstellen wir und ordnen es dem Nutzer "media" zu, damit der Server da reinschreiben kann.

mkdir /var/lock/httpd

chown media /var/lock/httpd

Danach starten wir den httpd neu:

systemctl restart httpd

Nun optimieren wir die Openssh Konfiguration:

nano /etc/ssh/sshd_config

 

centos-7-mediaserver-16.png

wir ändern

#Subsystem      sftp    /usr/libexec/openssh/sftp-server

in

 Subsystem       sftp    internal-sftp

 

 

centos-7-mediaserver-17.png

Am Ende tragen wir ein:

Match User media
   ChrootDirectory %h
   ForceCommand internal-sftp
   AllowTcpForwarding no
   PermitTunnel no
   X11Forwarding no

Dies kann man für weitere Benutzer wiederholen, oder diese in einer Unix Group zusammenfassen und "Match Group" hier verwenden.

 

centos-7-mediaserver-18.png

Damit ssh-chrooting auch funktioniert muss das Homeverzeichnis des Nutzers "root" gehören:

chown root:root  /home/media

centos-7-mediaserver-19.png

Danach starten wir den ssh-Server neu.

systemctl restart sshd

centos-7-mediaserver-20.png

Viele Linuxclienten sowie Apple Systeme können SFTP-Freigaben mithilfe der Zeroconftechnik finden.

Dazu muss avahi konfiguriert werden. Nomalerweise ist er schon installiert. (Der Paketname lautet avahi).

Wir starten ihn und sorgen dafür dass er beim Booten startet.

systemctl enable avahi-daemon

systemctl start avahi-daemon

centos-7-mediaserver-21.png

Wir kopieren die Configurationsdateien ins Avahi Service Verzeichnis:

cp /usr/share/doc/avahi-0.6.31/sftp-ssh.service  /usr/share/doc/avahi-0.6.31/ssh.service /etc/avahi/services/

 

centos-7-mediaserver-22.png

Und starten avahi neu:

systemctl restart avahi-daemon

centos-7-mediaserver-23.png

Wir installieren den FTP-Server vsftpd.

yum install vsftpd

centos-7-mediaserver-24.png

Wir aktivieren und starten ihn:

systemctl enable vsftpd

systemctl start vsftpd

centos-7-mediaserver-25_0.png

Wir editieren die Konfigurationsdatei.

nano /etc/vsftpd/vsftpd.conf

centos-7-mediaserver-26.png

hier muss es heißen:

chroot_local_user=YES

Wichtig: Diw Home Verzeichnise der User müssen "root" gehören (siehe ssh).

centos-7-mediaserver-27.png

Und

anonymous_enable=NO

centos-7-mediaserver-27a.png

Wir starten den FTP-Dienst neu:

systemctl restart vsftpd

centos-7-mediaserver-28.png

Wir konfigurieren den FTP-Dienst für Zeroconf (siehe ssh).

nano /etc/avahi/services/ftp.service

centos-7-mediaserver-29.png

Wir tragen ein:

<service-group>

  <name replace-wildcards="yes">%h</name>

  <service>
    <type>_ftp._tcp</type>
    <port>21</port>
  </service>

</service-group>

 

centos-7-mediaserver-30.png

Dananach starten wir avahi neu:

systemctl restart avahi-daemon

Als nächstes installieren wir den Samba Server. Dessen Protokoll wurde für Windowsfreigaben geschaffen. Heute nutzen aber alle Betriebsysteme dises Art von Freigaben.

yum install samba

centos-7-mediaserver-31.png

Auch hier sorgen wir dafür, dass die Dienste beim booten und jetzt starten:

systemctl enable smd

systemctl enable nmd

systemctl start smd

systemctl start nmd

centos-7-mediaserver-32.png

Wir editieren die Konfiguration:

nano /etc/samba/smb.conf

centos-7-mediaserver-33.png

Mei mir im Netz verwenden alle Geräte (u.a. die Fritz.box) die Arbeitsgruppe "Workgroup").

Daher trage ich hier "Workgroup = WORKGROUP" ein.

centos-7-mediaserver-34.png

Außerdem fügen wir ein:

        guest account = media

Dies ist nötig um unsere Medien ohne Passwort beschreibbar freigeben zu können.

 

Die Freigaben sehen folgendermaßen aus:

[Bilder]
       comment = öffentliche Bilder
       path = /home/media/Bilder
       public = yes

      writable = yes
       printable = no

 [Videos]
       comment = öffentliche Videos
       path = /home/media/Videos
       public = yes
       writable = yes
       printable = no

[Musik]
       comment = öffentliche Musik
       path = /home/media/Musik
       public = yes
       writable = yes
       printable = no

centos-7-mediaserver-35.png

Danach starten wir den Sambaserver neu:

systemctl restart smb

centos-7-mediaserver-36.png

Wenn wir einen USB-Drucker (Drucker für den Parallelport gehen auch falls noch wer so einen besitzt) im Netzwerk teilen wollen, installieren wir den Druckerserver CUPS.

yum install cups

centos-7-mediaserver-37.png

Wie bei allen Servern:

systemctl enable cups

systemctl start cups

centos-7-mediaserver-38.png

Wir editieren die Konfigurationsdatei:

nano /etc/cups/cupsd.conf

centos-7-mediaserver-39.png

Hinter Listen muss *:631 stehen:

Listen *:631
Listen /var/run/cups/cups.sock

 

 

centos-7-mediaserver-40.png

Wir geben unseren IP-Bereich frei: (in meinem Netzwerk bekommen alle Geräte eine 192.168.178.xxx IP-Adresse vom Router, dies kann abweichen).

# Restrict access to the server...
<Location />
  Order allow,deny
 Allow 192.168.178.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
 Allow 192.168.178.*
</Location>

 

 

centos-7-mediaserver-41.png

Wir starten den Druckserver neu:

systemctl restart cups

centos-7-mediaserver-42.png

 

Der Drucker kann jetzt unter IP:631 konfiguriert werden

pcentos-7-mediaserver-43.png

Hier muss "share  printers connected to this system" aktiviert sein.

centos-7-mediaserver-44.png

Die SSL-Warnung mein Einloggen erscheint weil CUPS ein selbstsigniertes Zertifikat verwendet.

Hier kann man Ausnahmen hinzufügen.

centos-7-mediaserver-45.png

centos-7-mediaserver-46.png

Als nächstes installieren wir einen nfs-Server.

yum install nfs-utils

centos-7-mediaserver-47.png

Wir aktivieren und starten die nötigen Dienste:

systemctl enable rpcbind

systemctl enable nfs-server

systemctl enable nfs-lock

systemctl enable nfs-idmap

systemctl start rpcbind

systemctl start nfs-server

systemctl start nfs-lock

systemctl start nfs-idmap

centos-7-mediaserver-48.png

Wir editieren die Freigabekonfiguration

centos-7-mediaserver-49.png

/home/media/Musik 192.168.178.0/24 (ro,sync)

/home/media/Videos 192.168.178.0/24 (ro,sync)

/home/media/Bilder 192.168.178.0/24 (ro,sync)

/home/ 192.168.178.0/24 (rw,sync,no_root_squash,no_all_squash)

centos-7-mediaserver-51.png

Die Freigabe der Medien ist auf nur lesbar und nicht beschreibbar eingestellt, da nfs verlangt, dass die Benuternummern auf Client und Server indentisch sind was in unseren Fall nicht ist. Das allgemeine Benutzerverzeichnis ist dann unter den oben genannten Bedingungen beschreibbar.

Die Änderungen übernehmen wir mit:

systemctl restart nfs-server

centos-7-mediaserver-52.png

 

Mediendateien teilt man heutzutage nicht nur mit Computern sondern auch mit Internetfähigen Fernsehern, Internetradios, Smartphones , Tablets und sonstigen.

Hierfür ist das Protokoll UPNP bzw DLNA geschaffen worden.

Hierzu benötigen wir das das nux dextop repo .

 

Wir laden hierzu das neueste nux Dextop release herunter:

http://li.nux.ro/download/nux/dextop/el7/x86_64/

und installieren es:

yum install nux-dextop-release-0-x.el7.nux.noarch.rpm

nun können wir minidlna installieren:

yum install minidlna

centos-7-mediaserver-63.png

Wir editieren die Konfiguration:

nano /etc/minidlna.conf

centos-7-mediaserver-64.png

Hier Tragen wir ein:

media_dir=A,/home/media/Musik

media_dir=V,/home/media/Videos

media_dir=P,/home/media/Bilder

 

mit "friendly_name" geben wir dem Server einen Namen.

centos-7-mediaserver-65.png

Wir sorgen dafür dass der Server beim Systemstart started und starten ihn jetzt:

systemctl enable minidlna

systemctl start minidlna

Nicht alle Mediaplayer können mit dem DLNA etwas anfangen. Es gibt ein weiteres Protokoll namens DAAP. Die wird vor allen von Apple in Itunes, Iphone,Ipad und Ipod verwendet.

Aber auch freie Player wie Banshee, Rythmbox und Amarok unterstützen es.

Für CentOS konnte ich keine Serverpakete finden, so habe ich selbst welche erstellt:

FTP HTTP

Benötigt werden: folked-daapd, libavl, libevent-alpha, mxml antr3-C

Ich habe folked-daapd gepached, damit er mit amarok zusammen arbeited.

Wer die Sourcen selbst kompilieren will. braucht diese zugehörigen devel-pakete und antr3-tool (welches stringtemplate und stringtemplate4 benötigt).

Die Pakte benötigen das EPEL-Repo und das nux dextop repo.

nachdem wir folked-daapd mit allen Abhängigkeiten  installiert haben , editieren wir die Konfiguration:

nano /etc/forked-daapd.conf

hier muss unter "directories"  "/home/media/Musik" eingetragen werden.

 

centos-7-mediaserver-72.png

Forked-Daap schlägt für bestimmte Audiodateien (Podcasts, Hörbücher, Zusammenstellungen) extra Verzeichnisse vor die wir nun einrichten:

mkdir /home/media/Musik/Podcasts /home/media/Musik/Audiobooks /home/media/Musik/Compilations

centos-7-mediaserver-73.png

Wir setzen die Rechte:

chown media /home/media/Musik/Podcasts /home/media/Musik/Audiobooks /home/media/Musik/Compilations

centos-7-mediaserver-74.png

Nun sorgen wir dafür, dass forked-daapd beim Booten startet und starten ihn.

systemctl enable folked-daapd

systemctl start folked-daapd

Nun ist der Server einsatzbereit und kann mit Medien gefüttert werden.