Anleitung zur Installation eines Linux-Home-Servers mit Ubuntu 14.04
Letztes Update: 03. Juni 2014
Diese Dokumentation beschreibt die Installallation eines Linux-Home-Servers mit Ubuntu 14.04.
Warum Ubuntu? Weil die LTS-Versionen von Ubuntu 5 Jahre mit Updates versorgt werden. Ich hatte diese Dokumentation ursprünglich vor vielen Jahren für Debian 4.0 (Etch) geschrieben. Zu dieser Zeit dauerte es noch mehrere Jahre bis bei Debian ein neues Release heraus kam. Inzwischen erfolgen die Releasewechsel bei Debian alle 1 bis 2 Jahre. Das ist mir einfach zu stressig.
Ich beschränke mich hier auf die Anwendungen und Dienste, die man, aus meiner Sicht, typischer Weise auf einem Linux-Home-Server installieren würde. Das Ganze versuche ich so einfach wie möglich zu halten, so dass man kein Linux-Profi sein muss, um die Installation nachzuvollziehen. Allerdings sollte man schon mal etwas Erfahrungen unter Linux gesammelt haben. Wenn nicht, dann dauert es sicherlich nur etwas länger. Support kann ich aus Zeitgründen nicht leisten. Dafür stehen einschlägige Internetforen zur Verfügung. Zu empfehlen ist zum Beispiel: http://forum.ubuntuusers.de/.
Über Informationen zu mehr oder weniger erfolgreich verlaufenen Installationen würde ich mich freuen, um ggf. Verbesserungen vornehmen zu können.
Inhalt
- Vorüberlegungen
- Installation Linux-Grundsystem
- DNS- und DHCP-Server Installation und Konfiguration
- Datei-Server Samba installieren und konfigurieren
- Linux-Druck-Server CUPS einrichten
- Media Streaming Server
- Web-Server Apache2 mit PHP5 installieren
- Mail-Server Installieren und Konfigurieren
- Datensicherung
-
Vorüberlegungen
Was soll der Linux-Home-Server können?
- Datei-Server - Dateiablage für persönliche und gemeinsame Dokumente
- Druck-Server - Den PCs im Heimnetz den vorhandenen Drucker zur Verfügung stellen. (Damit kann auch über WLAN gedruckt werden.)
- Media Streaming Server - Fotos, Videos und Musik zum Fernsehgerät streamen.
- E-Mail Server - Zentrale und sichere Speicherung aller Emails mit Zugriff über IMAP
- Grafische Benutzeroberfläche zur Administration
- Datensicherung
Tipps zur Server-Hardware
Komplett-Systeme für Linux-Home-Server, die ich wirklich empfehlen kann, habe ich noch nicht gefunden.
Deshalb habe ich meine PCs und Server bisher immer selbst gebaut. Meistens waren es alte PCs, die ich mit neuen Komponenten für meine Ansprüche hergerichtet habe. Inzwischen gibt es viele Bauanleitungen für energiesparende Heimserver. Zum Beispiel hier:
http://www.heise.de/ct/projekte/Bauvorschlaege-fuer-PCs-und-Server-1375124.htmlMein altes, nach vielen Jahren immer noch produktiv laufendes System:
Mainboard: Intel Q35
CPU: Intel Celeron 430
RAM: 2 GB DDR2
Festplatte: 1TB SATA2, Western Digital Modell: WD10EADS
Festplatte: 500 GB IDE, Seagate, für Backup
Netzteil: bequiet! Pure Power 300WattEmpfehlung zur Arbeitsspeichergröße:
Ich habe schon Linuxserver mit nur 128 MB RAM installiert. Möglich ist das, nur für den produktiven Betrieb nicht sehr performant, denn Linux benötigt RAM für den Dateisystemcache. Ohne Media-Streaming-Server sollten es mindestens 1 GB, mit Streaming-Server mindestens 2 GB sein, weil das System sonst auf die Festplatte auslagert.Empfehlung zur Festplattenauswahl:
In meinem Linux-Home-Server läuft seit vielen Jahren eine "WD Green". Diese war im Preis günstig und verbraucht wenig Energie, ist aber nicht für Dauerbetrieb ausgelegt. Mich stört das nicht, weil ich meinen Server, wenn ich ihn nicht brauche, ausschalte.
Soll der Server im Dauerbetrieb laufen, benötigt man auch eine passende Festplatte. Hier sind z.B. die WD Red zu empfehlen.
Ein RAID-System würde ich zu Hause nicht betreiben. Es verbraucht nur unnötig mehr Energie. Das Geld kann man lieber in eine gute USB-Backup-Platte investieren. (siehe weiter unten)Die nachfolgend beschriebene Installation erfolgt auf einem Wortmann-PC mit Artikel-Nr.: 1009385. Die Leistungsaufnahme liegt im Leerlauf bei ca. 24 Watt.
Hinweise zum Betrieb
An einem Server (egal ob Linux, Unix oder Windows) muss man sich nicht anmelden, um ihn zu betreiben. Nur zu administrativen Zwecken, wenn man darauf etwas einzurichten hat, meldet man sich an und auch das macht man üblicherweise remote per ssh. Das Herunterfahren erfolgt bei unserem Heimserver durch kurzes drücken des Powerknopfes (Einschalters). Befindet man sich auf der Konsole, löst ein
init 0
das Herunterfahren undinit 6
den Neustart aus. Zum Abmelden von der Konsole genügt esexit
einzugeben. -
Installation Linux-Grundsystem
Zuerst laden wir uns die CD herunter: Ubuntu-Server 14.04 LTS
Zur Installation ist von der Linux-CD zu starten und die Sprache auszuwählen, danachF6 Sonstiges
undExpertenmodus
. Jetzt wählen wir den obersten MenüpunktUbuntu Server installieren
.Angaben und Auswahlpunkte während der Installation:
Menüpunkt / Abfrage Auswahl / Angaben Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt im Installationsprozess: Sprache wählen wählen Sie eine Sprache Installation in der gewählten Sprache fortsetzen? Ja Auswählen des Standorts Land oder Gebiet: Deutschland Konfigurieren des Gebietsschemas (locale) Land, das zur Bestimmung des Standard-Gebietsschemas verwendet wird: Deutschland - de_DE.UTF-8 Konfigurieren des Gebietsschemas (locale) Zusätzliche-Gebietsschemata: hier muss nichts ausgewählt werden Konfigurieren des Gebietsschemas (locale) System-Gebietsschema: de_DE.UTF-8 Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Tastatur konfigurieren Tastatur konfigurieren Tastaturmodell erkennen? Ja Tastatur konfigurieren - Tastaturmodell erkennen? Ja - danach sind ein paar Tasten zur Erkennung zu drücken, was sich über mehrere Auswahldialoge erstreckt. Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: CD-ROM erkennen und einbinden CD-ROM erkennen und einbinden Diese Module laden: usb-storage (Es schadet nicht, hier die vorgeschlagenen Module zu aktzeptieren.) Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Debconf-Vorkonfigurationsdatei laden Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Installer-Komponenten von CD laden Installer-Komponenten von CD laden Zu ladende Installer-Komponenten: hier brauchen wir nichts auszuwählen Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Virtuelle Treiber-Disks des Hardware-Herstellers detektieren Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Netzwerk-Handware erkennen Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Netzwerk einrichten Netzwerk einrichten Netzwerk automatisch einrichten? Nein Netzwerk einrichten IP-Adresse: 192.168.2.98 (Informieren Sie sich, welchen IP-Adressbereich Ihr DSL-Router vergibt und welche Adresse außerhalb des DHCP-Bereichs liegt.) Netzwerk einrichten Netzmaske: 255.255.255.0 Netzwerk einrichten Gateway: 192.168.2.1 (Das ist die Adresse Ihres DSL-Routers.) Netzwerk einrichten Adresse des DNS-Servers: 192.168.2.1 (Das der DSL-Router.) Netzwerk einrichten Gegenwärtig konfigurierte Netzwerk-Parameter:
Schnittstelle = p2p1
IP-Adresse = 192.168.2.98
Netzmaske = 255.255.255.0
Gateway = 192.168.2.1
pointopoint = nichts
Nameserver = 192.168.2.1
Sind diese Informationen richtig? Ja (Falls die Informationen wirklich richtig sind.)Netzwerk einrichten Wartezeit (in Sekunden) für die Erkennung einer Verbindung: 3 Netzwerk einrichten Rechnername: srv01 (oder auch ein anderer Name) Netzwerk einrichten Domain-Name: heimnetz.local Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Benutzer und Passwörter einrichten Benutzer und Passwörter einrichten Shadow-Passwörter benutzen? Ja Benutzer und Passwörter einrichten root das Anmelden erlauben? Ja Benutzer und Passwörter einrichten Root-Passwort: ********** (Es sollten schon mindestens 8 Zeichen sein.) Benutzer und Passwörter einrichten Soll jetzt ein normales Benutzerkonto erstellt werden? Nein Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Uhr einstellen Uhr einstellen Die Uhr mittels NTP einstellen? Ja Uhr einstellen Zu verwendender NTP-Server: ntp.ubuntu.com Uhr einstellen Ist die Zeitzone korrekt? Ja - wenn Europe/Berlin angezeigt wird. Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Festplatten erkennen Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Festplatten partitionieren Festplatten partitionieren Partitionierungsmethode: Manuell Festplatten partitionieren Wir wählen jetzt die Zeile mit "FREIER SPEICHER" Festplatten partitionieren Wie mit freiem Speicher verfahren: Eine neue Partition erstellen Festplatten partitionieren Neue Größe der Partition: 1 GB Festplatten partitionieren Typ der neuen Partition: Primär Festplatten partitionieren Position der neuen Partition: Anfang Festplatten partitionieren Partitionseinstellungen: Benutzen als: Auslagerungsspeicher (Swap) Festplatten partitionieren Partitionseinstellungen: Anlegen der Partition beenden Festplatten partitionieren Wir wählen jetzt wieder "FREIER SPEICHER" Festplatten partitionieren Wie mit freiem Speicher verfahren: Eine neue Partition erstellen Festplatten partitionieren Neue Größe der Partition: 499.1 GB (Hier wird jetzt der gesamte verbleibende Speicher angezeigt, den wir die übernehmen.) Festplatten partitionieren Typ der neuen Partition: Primär Festplatten partitionieren Partitionseinstellungen: Benutzen als: Ext4-Journaling-Dateisystem - so lassen und "Einbindungsoptionen" wählen Festplatten partitionieren Einbindungsoptionen: noatime (mit Leertaste wählen) Festplatten partitionieren Anlegen der Partition beenden Festplatten partitionieren Partitionierung beenden und Änderungen übernehmen Festplatten partitionieren Änderungen auf die Festplatten schreiben? Ja (Nur wenn Sie sich sicher sind, dass keine wichtigen Daten überschrieben werden!) Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Das System installieren Das System installieren Art der Installation: normal Das System installieren Zu installierender Kernel: linux-generic Das System installieren In die initrd aufzunehmende Treiber: generisch: alle verfügbaren Treiber einbinden Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Paketmanager konfigurieren Paketmanager konfigurieren Einen Netzwerkspiegel verwenden? Ja Paketmanager konfigurieren Protokoll für Datei-Downloads: http Paketmanager konfigurieren Land des Ubuntu-Spiegelservers: Deutschland Paketmanager konfigurieren Ubuntu-Archiv-Spiegelserver: de.archive.ubuntu.com Paketmanager konfigurieren HTTP-Proxy-Daten: leer lassen Paketmanager konfigurieren Eingeschränkte Software verwenden? Ja (Das muß jeder selbst für sich entscheiden.) Paketmanager konfigurieren Software von der universe-Komponente verwenden? Ja Paketmanager konfigurieren Software von der multiverse-Komponente verwenden? Ja Paketmanager konfigurieren Zurückportierte Software verwenden? Nein Paketmanager konfigurieren Service to use: security updates Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Software auswählen und installieren Konfiguriere tasksel Wie möchten Sie Aktualisierungen auf diesem System verwalten? Keine automatischen Aktualisierungen Welche Software soll installiert werden? OpenSH server, LAMP server, Print server, Samba file server Konfiguriere mysql-server-5.5 Neues Passwort für den root-Benutzer: ***** (damit ist der mysql-root gemeint, alles klein schreiben ohne Sonderzeichen) Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: GRUB-Bootloader auf einer Festplatte installieren GRUB-Bootloader auf einer Festplatte installieren Den GRUB-Bootloader in den Master Boot Record installieren? Ja Ubuntu Installer Hauptmenü Wählen Sie den nächsten Schritt in der Installationsroutine: Installation abschließen Installation abschließen Ist die Systemzeit auf UTC gesetzt? Nein Installation abschließen Installation abgeschlossen - cd wird ausgeworfen und System neu gestartet Damit sollte das Grundsystem laufen und eine Anmeldung auf der Konsole möglich sein.
Als Nächstes erfolgt eine Systemaktualisierung:
apt-get update && apt-get dist-upgrade
Danach starten wir das System neu:
init 6
Jetzt machen wir uns die Bedienung etwas einfacher und installieren den Midnight Commander:
apt-get install mc
Den Midnight Commander startet man danach mit
mc
. Mit F9 kommt man in die Konfiguration und kann den internen Editor einstellen.Minimales grafisches System installieren
Unter Linux-Administratoren gilt es als verpönt, auf Servern grafische Benutzeroberflächen zu installieren. Aber schon alte UNIX-Systeme kamen in der Standardinstallation mit grafischer Benutzeroberfläche. Es spricht aus meiner Sicht nichts dagegen ein minimales grafisches System zu installieren. Der Grafiktreiber des X-Servers soll noch dazu den Energiebedarf senken.
apt-get install xdm lxde policykit-1-gnome
Danach starten wir das System neu:
init 6
Jetzt sollten wir den grafischen Anmeldebildschirm sehen. Nach der Anmeldung starten wir einen LXTerminal und installieren noch ein paar Programme:
apt-get install synaptic geany gkrellm catfish ntp
- Synaptic ist eine auf apt basierende Paketverwaltung.
- Geany ist ein guter Texteditor mit integrierten Dateibrowser.
- Gkrellm ist ein System-Monitoring Programm.
- Catfish hilft beim Suchen von Dateien.
- Ntp synchronisiert die Systemzeit mit Zeitservern im Internet.
Damit die Clients den Hostnamen "srv01" in die IP-Adresse 192.168.2.98 auflösen können, sollte man den Server in die hosts-Datei der Clients eintragen, es sei denn, man installiert den nachfolgend beschriebenen DNS-Server.
DNS- und DHCP-Server Installation und Konfiguration
In den meisten Heimnetzen stellt der DSL-Router den DNS- und DHCP-Server zur Verfügung. Diese Geräte sind aber im Funktionsumfang sehr unterschiedlich. So kann es trotzdem sein, dass man die Namensauflösung für den Heimserver über die Hosts-Dateien der beteiligten Computer realisieren muss. Das funktioniert gut und der Konfigurations-Aufwand ist in kleinen Netzen vertretbar. Damit besteht in den meisten Fällen keine Notwendigkeit, auf dem Linux-Home-Server DNS- und DHCP-Server zu installieren. Warum es also trotzdem tun? Weil wir es können!
Für ein kleines Heimnetz angemessen ist der, für solche Einsatzfälle konzipierte "Dnsmasq". Er liefert DNS- und DHCP-Dienste gemeinsam.
Die Installation erfolgt mit:
apt-get install dnsmasq
Auf dem Bildschirm sieht man u.a.
Starting DNS forwarder and DHCP server dnsmasq
Die Dienste laufen jetzt also schon.
DNS-Server-Konfiguration
Dnsmasq nutzt zur Namensauflösung die lokale hosts-Datei
/etc/hosts
. Deshalb sollten wir uns diese zur Kontrolle ansehen:127.0.0.1 localhost
192.168.2.98 srv01.heimnetz.local srv01Nun müssen wir dafür sorgen, dass unser Linux-Home-Server auch seinen eigenen DNS-Server befragt. Dafür bearbeiten wir die Datei /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto p2p1
iface p2p1 inet static
address 192.168.2.98
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 127.0.0.1 192.168.2.1
dns-search heimnetz.localBei
dns-nameservers 127.0.0.1 192.168.2.1
steht zuerst unser dnsmasq und danach der DSL-Router.DHCP-Server-Konfiguration
Zur Konfiguration des DHCP-Dienstes bearbeiten wir die Datei
/etc/dnsmasq.conf
:dhcp-range=192.168.2.50,192.168.2.60,255.255.255.0,24h
dhcp-option=3,192.168.2.1
log-queries
log-dhcpdhcp-range
gibt den DHCP-Bereich an und die max. Leasdauer.
dhcp-option=3
sorgt für die Übermittlung der Routeradresse
Die beiden log-Einträge sorgen für ausführliche Einträge in den Logfiles.
Danach starten wir dnsmasq neu:
service dnsmasq restart
Damit verfügt unser Linux-Home-Server nun auch über einen eigenen DNS- und DHCP-Server.
Linux-Datei-Server Samba installieren und konfigurieren
Quellen, die ich verwendet habe:
http://wiki.ubuntuusers.de/Samba_Server
http://gertranssmb3.berlios.de/output/
c't 8/2005 "c't-Debian-Server: Samba und CUPS"Es soll eine gemeinsame Dateiablage mit dem Namen
public
geben, auf die alle Benutzer vollen Zugriff haben.Verzeichnis anlegen
Wir legen das Verzeichnis an:
mkdir /home/public
Zugriff darauf sollen die Mitglieder der Gruppe
users
haben.Der Gruppe
users
übereignen wir das Verzeichnis:chgrp users /home/public
Danach passen wir noch die Rechte an:
chmod 770 /home/public
chmod g+sw /home/public
Jetzt legen wir einen Linux-Benutzer an:
adduser andreas
Der Gruppe
users
den Userandreas
hinzufügen:addgroup andreas users
Freigabe anlegen:
Samba Konfigurationsdatei
/etc/samba/smb.conf
anpassenDer Abschnitt
[homes]
legt die Benutzerfreigaben fest:[homes]
comment = Home Directories
browseable = no
valid users = %S
read only = no
ceate mode = 0600
directory mode = 0700
Neue Freigabe
public
einrichten durch hinzufügen des folgenden Abschnitts z.B. am Ende der Datei:[Public]
comment = gemeinsame Ablage
writeable = yes
path = /home/public
browseable = yes
valid users = @users
force directory mode = 660
force create mode = 660
force group = usersWer seine Samba-Freigaben in der Windows-Netzwerkumgebung "sehen will", kann noch folgende Einträge vornehmen, die außerdem das Browsing beschleunigen:
os level = 255
preferred master = yes
local master = yes
Noch ein paar grundlegende Einstellungen:
[global]
workgroup = heimnetz
[Authentication]
server role = standalone server
security = user
encrypt passwords = trueHier die komplette Konfiguration:
#======================= Global Settings =======================
[global]
workgroup = heimnetz
server string = %h server (Samba, Ubuntu)
dns proxy = no
#### Networking ####
local master = yes
os level = 255
prefered master = yes
#### Debugging/Accounting ####
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
####### Authentication #######
server role = standalone server
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
############ Misc ############
usershare allow guests = no
#======================= Share Definitions =======================
[homes]
comment = Home Directories
browseable = no
valid users = %S
read only = no
create mode = 0600
directory mode = 0700
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[Public]
comment = gemeinsame Ablage
writeable = yes
path = /home/public
browseable = yes
valid users = @users
force directory mode = 660
force create mode = 660
force group = usersDamit ist die Konfiguration von Samba erledigt. Die Datei kann gespeichert und geschlossen werden.
Testen ob die Konfigurationsdatei in Ordnung ist mit:
testparm -v
Samba-Benutzer hinzufügen (auf der Linuxconsole):
smbpasswd -a andreas
Samba neu starten:
service samba restart
Zum Test kann man jetzt in der Adreßzeile des Windows-Dateiexplorers
\\srv01
eingeben. Es sollten die Freigaben zu sehen sein.Linux-Druck-Server CUPS einrichten
Die CUPS-Konfigurationsdatei
/etc/cups/cupsd.conf
muß bearbeitet werden:Listen localhost:631
# muss geändert werden in
Listen 192.168.2.98:631
<Location />
# ergänzen mit folgender Zeile:
Allow 192.168.2.0/24
</Location><Location /admin>
# ergänzen mit folgender Zeile:
Allow 192.168.2.0/24
</Location><Location /admin/conf>
# ergänzen mit folgender Zeile:
Allow 192.168.2.0/24
</Location>Nach dem Speichern der Datei muß diese neu geladen werden:
service cups restart
Jetzt kann man in Firefox die CUPS-Seite aufrufen mit:
http://192.168.2.98:631
Unter "
Drucker
" werden bereits gefundene Drucker angezeigt. Der Rest ist selbsterklärend.Wenn beim Verbinden eines Windows-Systems mit dem Drucker die Meldung kommt, man hätte keinen Zugriff mangels erforderlicher Rechte, dann sind damit die Windows-Rechte gemeint, die nicht ausreichen einen neuen Drucker einzurichten. Dem kann man mit temporären Admin-Rechten abhelfen. Ggf. ist dann noch der Druckertreiber, durch Angabe des Installationspfades, zu installieren.
Wenn man von Windows aus auf einen, über Samba freigegebenen Drucker drucken will, ist dabei eine Authentifizierung erforderlich. Hat man vorher mindestens ein Netzlaufwerk verbunden, ist die Authentifizierung schon erfolgt und somit kein Problem.
Drucken geht aber auch ohne Samba, über das Internet Printing Protocol (ipp). Dazu ist bei der Druckereinrichtung unter Windows die URL anzugeben. Bei mir:
https://srv01:631/printers/Brother
Bei meinem Linux-Client habe ich die Adresse so eingegeben:
ipp://srv01:631/printers/Brother
Nach einer Authentifizierung fragt Cups an dieser Stelle nicht.
Weblinks zum Thema:
wiki ubuntuusers.de CUPSMedia Streaming Server
Als Streaming-Server setzen wir Mediatomb ein.
apt-get install mediatomb libav-tools
Danach funktioniert Mediatomb schon.
Die Administrationsoberfläche erreicht man über das Webinterface von Mediatomb http://srv01:49152 oder http://192.168.2.98:49152.
Der User Mediatomb braucht Leserechte auf unseren public-Ordner. Deshalb fügen wir ihn der Gruppe users hinzu:addgroup mediatomb users
service mediatomb restartUm Medieninhalte hinzuzufügen legen wir z.B. im Public-Ordner einen Ordner "medien" an, in dem wir dann Fotos, Musik oder Videos ablegen. Auf der Mediatomb-Admin-Oberfläche wählen wir dann "Filesystem" und hangeln uns zu unserem Medienordner durch. Ganz rechts gibt es dann ein Symbol für "add as autoscan dir", das wir anklicken. Danach wählen wir
inotify, full, Recursiv
und zum SchußSet
. Daraufhin werden alle Änderungen in dem Ordnern in die Datenbank geschrieben, also auch wenn wir später neue Dateien hinein kopieren.Links zum Thema:
Wikipedia Streaming_Media
Wikipedia Universal_Plug_and_Play
Artikel über Mediatomb bei Ubuntuusers
DLNAWeb-Server Apache2 mit PHP5
Die Installation ist bereits erledigt und der Apache läuft bereits. Feststellen können wir das, indem wir
srv01
im Webbrowser aufrufen. Mehr ist erst einmal nicht zu tun.Linux-Mail-Server installieren
Wir wollen E-Mails aus dem Internet empfangen. Das erledigt der Mail Retrieval Agent (MRA)
fetchmail
für uns.Wir wollen E-Mails im lokalen Netz aber auch über das Internet versenden. Das übernimmt der Mail Transfer Agent (MTA)
Postfix
für uns.Die Howtos folgender Quellen waren mir sehr hilfreich:
http://wiki.ubuntuusers.de/Postfix
http://www.howtoforge.de/howto/das-perfekte-setup-debian-etch-40/5/
c't 8/2004 "Transportsicherung"Zuerst installieren wir:
- den Mail Transfer Agent (MTA)
Postfix
bsd-mailx
- ein einfaches Mailprogramm zum Testen- das Authentifizierungsmodul
libsasl2-modules
apt-get install postfix bsd-mailx libsasl2-modules
Bei der Installation werden ein paar Fragen gestellt, die wir wie folgt beantworten:
Postfix Configuration
Allgemeine Art der Konfiguration
"Internet mit Smarthost"
E-Mail-Name lautet:srv01.heimnetz.local
SMTP Relay-Server: Hier den smtp-server des Providers angeben.Linux-Mail-Server konfigurieren
Postfix konfigurieren
In der Datei
/etc/aliases
stehen die Alias-Namen und deren Zuweisung:postmaster: andreas
root: andreas
www-data: andreasDie Änderungen an dieser Datei werden wirksam, nachdem man sie mit
newaliases
in die Datenbank geschrieben und mit
postfix reload
in Postfix neu eigelesen hat.
Jeder vernünftige Internet-Service-Provider verlangt heute eine Absenderauthentifizierung für das Versenden von E-Mails. Dafür ist bei uns SASL zuständig.
Als nächstes wird die Datei
/etc/postfix/sasl/smtp_auth
angelegt:touch /etc/postfix/sasl/smtp_auth
Der Dateiinhalt ist sinngemäß:
SMTP-Server Benutzername:Paßwort
z.B.:
mailout.example.com Benutzername:GeheimDer Dateiinhalt muß jetzt noch in eine Datenbankdatei geschrieben werden. Das geschieht mit:
postmap /etc/postfix/sasl/smtp_auth
Dadurch sollte die folgende Datei angelegt werden:
/etc/postfix/sasl/smtp_auth.db
Damit kein Unbefugter die Zugansdaten auslesen kann, werden noch die Rechte passend gesetzt:
chmod 600 /etc/postfix/sasl/smtp_auth
Absenderadressen setzen:
Damit der Empfänger einer unserer E-Mails nicht die lokale Adresse, wie z.B. root@srv01.heimnetz.local zu sehen bekommt, müssen wir noch dafür sorgen, dass Postfix die Adressen automatisch richtig umsetzt. Dazu erstellen wir die Datei:
touch /etc/postfix/sender_canonical
Die Zuordnung in der Datei kann beispielsweise so aussehen:
root spam@linux-home-server.de
andreas andreas@linux-home-server.deDie Postfix-Konfigurationsdatei
/etc/postfix/main.cf
ändern wir, sodass folgendes drin steht:smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
#Authentifizierung beim ISP
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/smtp_auth
smtp_sasl_security_options = noanonymous
#Verschlüsselte Übertragung zum ISP:
smtp_tls_security_level = encrypt
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_CApath = /etc/ssl/certs
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# TLS Verschlüsselung zwischen Postfix und den SMTP-Clients
smtpd_tls_security_level=may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = srv01.heimnetz.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = srv01.heimnetz.local, localhost.heimnetz.local, localhost
relayhost = smtp-server des ISP
mynetworks = 127.0.0.0/8, 192.168.2.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
sender_canonical_maps = hash:/etc/postfix/sender_canonical
home_mailbox = Mails/Sollte es Probleme mit der Verbindung zum ISP geben, hilft es bei der Fehlersuche
smtp_tls_loglevel = 3
zu setzen und in/var/log/mail.log
nachzusehen.Nach einem Reload von Postfix (
service postfix reload
) funktioniert der Emailversand. Das können wir testen indem wir auf der Konsole eine E-Mail an uns selber versenden:echo "testmail" | mail -s "betreff test" spam@andreas-micknass.de
SASL-Authentifizierung der smtp-Clients gegenüber Postfix
Bis jetzt können unsere smtp-Clients ohne jeglich Authentifizierung E-Mails versenden. Ein solches offenes Relais ist zu vermeiden. Wir benötigen eine Absenderauthentifizierung der Mailclients gegenüber den Postfixserver. Die gewählte Methode "PAM" authentifiziert gegen die Benutzerdatenbank des Linux-Systems.
Zuerst ist die Installation des SASL-Authentifizierungsdienstes erforderlich:
apt-get install sasl2-bin
Danach gibt es die Konfigurationsdatei
/etc/default/saslauthd
, die wie folgt anzupassen ist:START=yes
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"Das unter Options genannte Verzeichnis muß existieren und wird deshalb angelegt:
mkdir -p /var/spool/postfix/var/run/saslauthd
Nun wird folgende Datei erstellt:
touch /etc/postfix/sasl/smtpd.conf
mit folgendem Inhalt:
pwcheck_method: saslauthd
mech_list: plain loginDie Datei
/etc/postfix/main.cf
wurde wie folgt angepaßt:smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
#Authentifizierung beim ISP
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/smtp_auth
smtp_sasl_security_options = noanonymous
#Verschlüsselte Übertragung zum ISP:
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_CApath = /etc/ssl/certs
# Authentifizierung der smtp-Clients beim Postfix-Server
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_maps, reject_unauth_destination, permit_auth_destination
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# TLS Verschlüsselung zwischen Postfix und den SMTP-Clients
smtpd_tls_security-level=may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = srv01.heimnetz.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = srv01.heimnetz.local, localhost.heimnetz.local, localhost
relayhost = smtp-server des ISP
mynetworks = 127.0.0.0/8, 192.168.2.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
sender_canonical_maps = hash:/etc/postfix/sender_canonical
home_mailbox = Mails/Postfix benötigt Zugriff auf SASL. Dafür müssen wir noch Postfix in die Gruppe SASL aufnehmen:
addgroup postfix sasl
Jetzt noch die Dienste neu starten und alles sollte funktionieren:
service saslauthd restart
service postfix restartNach den Änderungen an der Konfigurationsdatei ist Postfix neu zu starten und alles sollte funktionieren.
E-Mails mit fetchmail abholen
Die Installation erfolgt mit:
apt-get install fetchmail
Damit fetchmail als Dienst arbeitet und automatisch beim Systemstart gestartet wird, ist die Datei
/etc/default/fetchmail
anzupassen:START_DAEMON=yes
Die Konfigurationsdatei erzeugen wir mit:
touch /etc/fetchmailrc
und editieren diese Datei wie folgt (POP3-Server, Benutzername und das Paßwort sind natürlich zu ersetzen.):
set daemon 300
set syslog
poll POP3-Servername with proto POP3 auth password
user "Benutzername" there with password "*****" is andreas here options ssl fetchall
poll IMAP-Servername with proto IMAP auth password
user "Benutzername" there with password "*****" is andreas here options ssl fetchallDie E-Mails werden ab sofort abgeholt, wenn wir jetzt noch den Service starten:
service fetchmail start
IMAP-Server installieren und konfigurieren
Als IMAP-Server verwenden wir Courier-IMAP. Die Installation erfolgt mit:
apt-get install courier-imap-ssl
Bei der Installation werden ein paar Fragen gestellt und Hinweise angezeigt:
Verzeichnisse für WWW-Administration anlegen? Nein
Hinweis: SSL-Zertifikat erforderlichNun sind die Konfigurationsdateien zu bearbeiten:
/etc/courier/imapd-ssl
# Diese beiden Werte anpassen:
MAXDAEMONS=100
MAXPERIP=40
#Am Ender der Datei ist der Maildirpath anzupassen:
MAILDIRPATH=MailsIn der Datei
/etc/courier/imapd-ssl
machen wir das ebenso.Als Nächstes passen wir die Datei
/etc/courier/authdaemonrc
an:# Unter authmodulelist="authpam" schreiben wir:
version="authdaemond.plain"Zum Schluss starten wir noch die Dienste neu:
service courier-authdaemon restart
service courier-imap-ssl restartDamit sollte der IMAP-Server laufen.
Die Datensicherung
Ich habe lange nach einer Lösung gesucht, bis ich in einer alten Ausgabe der c't (7/2006, S. 212) auf das Programm "dirvish" gestoßen bin.
Dirvish legt bei bereits vorhandenen Dateien, diese nicht erneut an, sondern erzeugt Hardlinks. Das hat den Vorteil, dass das Backup schnell und platzsparend erfolgt.Mit USB 3.0 erreicht man heute Datenübertragungsraten, die es erlauben auch große Datenmengen in kurzer Zeit zu sichern. Deshalb verwende ich als Backup-Medium eine kleine, handliche und robuste 1TB USB-3.0-Festplatte (WD Elements).
Dirvish empfielt das etwas veraltete Dateisystem reiserfs, weil es besonders platzsparend mit kleinen Dateien umgeht. Leider wird dieses Dateisystem seit einigen Jahren nicht mehr weiterentwickelt. Damit unsere Lösung zeitgemäß funktioniert, verwende ich das Dateisystem xfs, dass ähnlich speicherplatzsparend arbeitet und aktiv weiterentwickelt wird.
Die Installation erfolgt mit:
apt-get install dirvish
Die globale Konfiguration von Dirvish befindet sich in /etc/dirvish/master.conf. Weil diese bei der Installation nicht angelegt wird, müssen wir das selbst übernehmen:
touch /etc/dirvish/master.conf
Der Inhalt der Datei:
# /etc/dirvish/master.conf
bank:
/media/backup/backup
xdev: 1
index: gzip
image-default: %Y%m%d-%H%M
# checksum: 1
summary: long
exclude:
lost+found/
core
Runall:
home
expire-default: +7 days
expire-rule:
# MIN HR DOM MON DOW STRFTIME_FMT
* * * * * +7 days
* * * * 7 +1 month
* * 1 * * +1 year
Das globale Backupverzeichnis, die sogenannte "Bank", ist
/media/backup/backup
(/media/backup ist der Mountpunkt. Auf der Festplatte gibt es den Ordnerbackup
. Der Verzeinispfad ist damit/media/backup/backup
).
Darin werden die "Vaults" (Tresore) angelegt, die unter "Runall
" aufgeführt sind.
"expire
" bestimmt den Zeitplan, nachdem ein Backup verfällt.Unsere Backupstrategie:
- Die täglichen Backups werden 1 Woche aufgehoben.
- Die Sicherung an jedem letzten Tag der Woche wird einen Monat aufgehoben.
- Das Backup von jedem 1. des Monats wird 1 Jahr aufgehoben.
udev-Regel für USB-Festplatte erstellen
Als Nächstes müssen wir dafür sorgen, dass unsere USB-Backup-Festplatte immer an der gleichen Stelle im Dateisystem eingehängt wird. Das erledigt eine eigene udev-Regel.
Wir legen eine Datei für die udev-Regel an:
touch /lib/udev/rules.d/backupmedium.rules
Als Nächstes schreiben wir unsere Regel in die Datei:
KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="575839314137333937333532", SYMLINK+="backup", RUN+="/etc/dirvish/dirvish-cronjob"
Statt der Seriennummer meiner Platte muss da natürlich die, der eigenen Platte rein. Um diese heraus zu finden schließen wir die Platte an. Danach begeben wir uns auf die Konsole:
root@srv01:~#lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 002: ID 1058:10a8 Western Digital Technologies, Inc.
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 002: ID 046d:c046 Logitech, Inc. RX1000 Laser Mouse
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Die Zeile mit Western Digital ... ist für uns interessant, weil sie uns die Bus- und Devicenummern liefert. Damit kommen wir an die gewünschten Detailinformationen:
root@srv01:~#lsusb -vs 006:002
Bus 006 Device 002: ID 1058:10a8 Western Digital Technologies, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x1058 Western Digital Technologies, Inc.
idProduct 0x10a8
bcdDevice 10.42
iManufacturer 1 Western Digital
iProduct 2 Elements 10A8
iSerial 3 575839314137333937333532
und noch viele weitere Angaben, die wir jetzt nicht brauchen ....iSerial 3 575839314137333937333532
zeigt uns die gesuchte Seriennummer.Die udev-Regel startet das Backupscript
/etc/dirvish/dirvish-cronjob
, welches bei der Installation von dirvish bereits angelegt wurde. Allerdings wurde dabei auch ein cronjob angelegt, den wir nicht benötigen. Deshalb verschieben wir diesen an eine Stelle wo er uns nicht stört:mv /etc/cron.d/dirvish /root
Die udev-Regel soll das Backupscript starten, welches die USB-Platte nach
/media/backup
mountet. Diesen Mountpunkt müssen wir noch erstellen:mkdir /media/backup
In der
/etc/fstab
fehlt jetzt noch der passende Eintrag zum mounten, den ich als letzte Zeile hinzugefügt habe:# /etc/fstab: static file system information.
UUID=6602f9b2-362b-45d5-b94d-2bae83d34973 / ext4 noatime,errors=remount-ro 0 1
UUID=cbe39c87-895a-4766-a4cb-dffe427a1405 none swap sw 0 0
/dev/backup /media/backup xfs rw,users,noauto,async 0 0Nun müssen wir noch die fstab neu einlesen und reloaden udev:
reload udev
mount -aBackup-Festplatte formatieren
Vermutlich hat die USB-Festplatte noch das falsche Dateisystem, sodass wir sie mit xfs formatieren müssen.
Vorsicht: Dabei gehen alle Daten auf der Festplatte verloren!fdisk -l
zeigt uns, dass die zu formatierende Partition/dev/sdb1
ist.fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 Köpfe, 63 Sektoren/Spur, 60801 Zylinder, zusammen 976773168 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Festplattenidentifikation: 0x9eb4ea50
Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 2048 1953791 975872 82 Linux Swap / Solaris
/dev/sda2 * 1953792 976771071 487408640 83 Linux
Disk /dev/sdb: 1000.2 GB, 1000170586112 bytes
255 Köpfe, 63 Sektoren/Spur, 121597 Zylinder, zusammen 1953458176 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Festplattenidentifikation: 0x463610f8
Gerät boot. Anfang Ende Blöcke Id System
/dev/sdb1 2048 1953458175 976728064 83 LinuxMit diesen Informationen wird formatiert, nachdem wir die Unterstützung für das xfs-Dateisystem installiert haben:
apt-get install xfsprogs
mkfs.xfs -f /dev/sdb1Wir mounten die USB-Festplatte und legen den Ordner
/media/backup/backup
darauf an:mount /media/backup
mkdir /media/backup/backupWeitere Konfiguration dirvish
Im Dateisystem müssen wir das Verzeichniss (Tresor)
/media/backup/backup/home
anlegen:mkdir /media/backup/backup/home
In jedem Tresor muss ein Verzeichnis /dirvish angelegt sein und darin eine Datei default.conf:
mkdir /media/backup/backup/home/dirvish
touch /media/backup/backup/home/dirvish/default.confFür den Tresor "home" sollte das so aussehen:
# /media/backup/backup/home/dirvish/default.conf
client: srv01
tree: /home
exclude:
*.bak
*~
*.tmp
*.TMP
*.temp
*.jnl"
client
" ist der Hostname des Servers
"tree
" ist das zu sichernde Verzeichnis
"exclude
" schließt Dateien aus der Sicherung aus.Nun erfolgt die Erstinitialisierung, die gleichzeitig ein Vollbackup ist, auf der Konsole:
dirvish -vault home --init
Ist das erfolgreich gelaufen, müssen wir dem Backupscript
/etc/dirvish/dirvish-cronjob
noch beibringen, die USB-Platte automatisch zu mounten und nach getaner Arbeit wieder auszuwerfen. Vor dem Bearbeiten sichert man die Datei am besten:cp /etc/dirvish/dirvish-cronjob /etc/dirvish/dirvish-cronjob.old
Danach ist die Datei
/etc/dirvish/dirvish-cronjob
so zu bearbeiten, dass ihr Inhalt wie folgt aussieht:#! /bin/sh
#
# daily cron job for the dirvish package
#
if mount | grep /media/backup
then
umount /dev/backup
echo "Backup-Platte war schon gemountet -> umount!"
fi
mount /media/backup
echo "Backup-Platte gemountet!"
if [ ! -x /usr/sbin/dirvish-expire ]; then exit 0; fi
if [ ! -s /etc/dirvish/master.conf ]; then exit 0; fi
/usr/sbin/dirvish-expire --quiet && /usr/sbin/dirvish-runall --quiet
rc=$?
sync
umount /dev/backup || rc=$?
eject dev/backup
exit $rc
Zum Schuß hängen wir die Platte aus und testen, indem wir sie wieder anschließen. Damit sollte unser Backup laufen:
umount /media/backup
Noch ein Hinweis: Wenn die USB-Festplatte vermeintlich vom Backupscript nicht ausgeworfen wird, liegt das mit hoher Wahrscheinlichkeit am lxde-Desktop, an dem man gerade angemeldet ist und der die Platte automatisch einhängt.
Weitere Informationen zum Backup mit Dirvish und mysqldump zum Sichern einer mysql-Datenbank findet man z.B. unter den folgenden Links:
http://www.dirvish.org/
http://wiki.ubuntuusers.de/dirvish
http://dev.mysql.com/doc/refman/5.1/de/mysqldump.html
Ich hoffe, dass dieses kleine howto hilfreich war.
Hier gibt es die Printversion.
Zum Impressum & zur Datenschutzerklärung gehts hier entlang: Impressum & Datenschutzerklärung
Meinungen, Kritiken und Fehlermeldungen bitte an: