Home Server mit dem Raspberry Pi

Zu Weihnachten habe ich ein Raspberry Pi (das erste Model B) von meiner Frau geschenkt bekommen (nachdem ich länger davon erzählt hatte was man damit so tolles machen kann).
Nach ersten Spielereien hatte ich via NOOBS OpenElec als MediaCenter installiert. Kodie bzw. XBMC kannte ich bereits noch von meiner OUYA von daher hatte ich recht schnell ein paar Streams am TV. Da ich keinen besonderen Bedarf an einem MediaCenter hatte bin ich auf eine Idee gekommen die unserem Haushalt helfen würde. Jetzt mache ich ernst und habe großes vor. Mein eigener HomeServer is comming!

raspberrypi

Das Problem

Derzeit ist es so das Daten die von mehreren Personen im Haushalt verwendet werden redundant vorliegen. Z.B. wenn gemeinsame Fotos oder Dokumente auf den PC geladen werden, wird anschließend per Hand manuell mit den anderen PC's synchronisiert (damit auch jeder die gleichen Familienfotos hat). Um unnötige Backups zu vermeiden wird dieses nur durchgeführt wenn die Daten auf allen PC's bereits synchron sind (somit gibt es ein gemeinsames Backup).

Das ist ein ziemlich großer Aufwand der im Grunde unsinnig ist weil er sich automatisieren lässt. Daher möchte ich meinen Pi als HomeServer einrichten der stupide Aufgaben automatisiert.

Anforderungsliste an den Home-Server

Neben den Problemen die ich heute so habe stelle ich an meinen Pi direkt noch weitere Anforderungen die mir in Zukunft helfen werden. Neben zentralen Dokumenten ist es mir wichtig das Code, den ich zukünftig programmiere, ebenfalls sicher (und ohne viel manuellen Aufwand) archiviert wird. Außerdem kann mein Pi auch automatisiert Aufgaben übernehmen wenn ich mal keine Zeit habe (wie z.B. ein wöchentliches Backup meiner Website).

Funktionen

Folgend sind die Funktionen welche mein HomeServer zu erfüllen hat:

  • File-Server (ganz normal)
    Zentrale Festplatte auf die jeder Netzwerkteilnehmer Zugriff hat. Diese soll von Windows aus im Explorer als Laufwerk eingebunden werden.
  • File-Server mit Synchronisation zu Client
    Ebenfalls eine zentrale Speichermöglichkeit. Im Gegensatz zum ersten Punkt sollen die Daten auch ohne Server benutzbar und möglichst schnell verfügbar sein.
    Um das zu realisieren muss jeder Client die Dateien vorhalten. Bei Änderungen von Dateien werden diese mit allen Teilnehmern synchronisiert (automatisch). Der Server hält ebenfalls alle Daten damit ein Backup nur dort vorzunehmen ist.
  • SourceCode-Verwaltung
    Meine privaten Projekte sollen in Zukunft archiviert werden mit einer Quellcodeverwaltung.
  • Backup-Server
    Webprojekte sollen voll automatisiert (in intervalen) über meinen Home-Server gesichert werden. Daten mit FTP runterladen und die Datenbanken von phpmyadmin exportieren.

Eigenschaften

Neben diesen Aufgaben konfiguriere ich den Server in Hinblick auf folgende Punkte:

  • Kein Zugriff über Internet
    Alle Funktionen sind nicht über das Internet verwendbar (dies soll mögliche Sicherheitslücken reduzieren da ich sowieso nur aus dem Heim-Netz Zugriff benötige).
  • Alles ist Zentral
    Backups müssen nur am Server vorgenommen werden und nicht einzeln bei jedem Client.
  • Remotezugriff
    Zugriff bzw. Wartung auf den Server soll von der Ferne möglich sein (der Server soll nicht an einen Monitor angeschlossen sein für einfache Wartungsaufgaben).

Achja, unsere Clients laufen primär mit Windows. Unsere Smartphones verwenden Android und WindowsPhone.

Umsetzung / Anleitung

Da sich das Pi nicht von allein einrichtet und ich nicht wusste welche Software zum Einsatz kommen soll, musste ich mich erstmal schlau machen was es am Makrt für fertige Lösungen gibt mit denen ich meine Wünsche erfüllen kann (und die auch mein Raspberry untersützt). Meine Recherchen und finale Konfiguration habe ich dokumentiert. Über unten stehendes Inhaltsverzeichnis habe ich diese zur Verfügung gestellt.

  1. Einrichten
    OS installieren und einrichten (Raspian)
    mehr erfahren
  2. Festplatte mounten
    Externe Festplatte über USB einhängen
    mehr erfahren
  3. FileServer (normal)
    USB-Festplatte über Netzwerk für Windows freigen (SAMBA)
    mehr erfahren
  4. FileServer (spiegeln)
    Synchronisierungssoftware installieren und einrichten (Seafile)
    mehr erfahren
  5. SourceControl
    Quellcodeverwaltung installieren und einrichten (Git)
    mehr erfahren
  6. Web-Backups
    Ein-Klick-Routine zum Sichern einer WordPress-Instanz

Kleinere Anleitungen

  • Backup
    Eine Anleitung wie Ihr ein Backup vom Pi und Festplatte erstellt
    mehr erfahren
  • Mounting
    Hier wird erklärt wie man eine externe USB-Festplatte anhängt
    mehr erfahren
  • SD-Karte formatieren
    Kurzanleitung zum formatieren der SD-Karte mit dem offiziellen Formatierungstool oder mit Windows-Bordmitteln
    mehr erfahren