Einen Homeserver einrichten

Zuletzt geändert: 16. Januar 2022
Geschätzte Lesezeit: 5 min

VorWort

Wir leben in digi­ta­len Zei­ten, und im Zeit­al­ter der exter­nen Diens­te, in denen wir alles aus­la­gern. Wir ver­lie­ren so die Hoheit über unse­re Daten: Alles liegt frag­men­tiert bei ver­schie­de­nen, frem­den Dienst­leis­tern. Dem möch­te ich etwas ent­ge­gen wir­ken, und einen eige­nen Ser­ver auf­bau­en. Wel­che Anwen­dun­gen / Diens­te sol­len dar­auf laufen? 

  • All­ge­mei­ne Dateiablage
    • Ver­zeich­nis­se für Nut­zer im Netz­werk verfügbar.
  • Medi­en­bi­blio­thek
    • Emby / Jel­ly­fin fürs Strea­men von Audio und Video
    • Cal­libre-Web für eBooks / Audiobooks
  • Time­tra­cker
    • Waka­pi
  • Noti­zen / TODO Lis­ten / Recher­chen
    • Jop­lin. Der Jop­lin-Ser­ver sorgt dabei für die zen­tra­le Daten­hal­tung. Die Notiz-App gibt es für jedes Betriebssystem.
  • Web­ser­ver / WordPress
    • Ein Apa­che mit PHP und myS­QL Datenbank.
    • Spe­zi­el­le Wor­d­Press Instanzen
  • Ver­si­ons­ver­wal­tung für Quell­codes und ande­re Dokumente
    • GIT Repo­si­to­ry
  • Cloud?

Dazu kom­men noch für die Verwaltung: 

  • Docker, zum orches­trie­ren der Anwendungen.
  • Evtl. wei­te­re Tools zum administrieren.
  • Absi­che­rung des Systems…
  • Eine Back­up Strategie…

Die Hür­den, um so ein Pro­jekt um zu setz­ten sind rela­tiv nied­rig. Natür­lich geht das nicht ganz ohne tech­ni­sches Ver­ständ­nis, aber es ist durch moder­ne Tech­no­lo­gien wie Docker ein­fa­cher denn je. Was kommt, ist die Ver­ant­wor­tung und Auf­wand für Betrieb — die Zeit fehlt dann für anderes. 

Ers­te Schrit­te hat­te ich bereits mit einem Raspber­ry-pi unter­nom­men. Den möch­te ich jetzt durch einen pas­siv gekühl­ten leis­tungs­fä­hi­ge­ren Bare­bo­ne ablö­sen, und um wei­te­re Diens­te ergän­zen. Das gan­ze soll so mini­ma­lis­tisch und ein­fach wie mög­lich gehal­ten wer­den, und wann immer mög­lich und sinn­voll auf Open­So­ur­ce basieren. 

Der Ser­ver soll zunächst nur im Intra­net lau­fen. Spä­ter aber auch ins­ge­samt, oder in Tei­len über die Fritz!Box im Inter­net zugäng­lich sein. 

Die Hardware

Die Wahl fiel im Janu­ar 2022 auf fol­gen­des Gerät: 

  • ZOTAC ZBOX CI662 NANO, den ich aus­stat­te mit:
  • Spei­cher: 2x16GB King­s­ton D4-266 KCP426 SD8/16
  • Inter­ne Fest­plat­te: 1TB Sam­sung für das System.
  • Exter­ne USB Fest­plat­ten: 2x 3TB WD eine für Daten und eine als Backup
  • und dazu dem­nächst noch ein klei­nes Raid…

Alter­na­ti­ven wären gewesen: 

Aktu­el­le­re Sys­te­me mit mehr Leis­tung, aber auch deut­lich teuerer: 

Betriebssystem OpenMedia Vault / Debian

Das wird die Basis des Ser­vers. Kommt mit einem schlan­ken Debi­an Linux. 

Danach kann der Stick nicht mehr vom Mac gele­sen werden. 

  • Das macht aber nix. Die Mel­dung ein­fach igno­rie­ren, und den Stick vom Mac abziehen.
  • Tas­ta­tur und Bild­schirm anschließen.
  • USB-Stick In den Ser­ver ste­cken und Gerät einschalten.
  • Set­up durchlaufen.

SSH funk­tio­niert oft of the Box, damit kann Tas­ta­tur und Moni­tor abge­klemmt werden. 

  • server.local
  • User: root
  • Pass­wort: dasrootpasswort
  • Ser­ver­na­me: server
  • Web­zu­gang: http://server.local
  • user: admin
  • Pass­wort: openmediavault

Konfiguration…

  • All­ge­mei­ne Einstellungen
    • Sys­tem -> All­ge­mei­ne Einstellungen
    • Port: 81 (auf 80 möch­te ich den Apa­che-Web­ser­ver legen)
    • Auto­ma­ti­sche Abmel­dung: 30 Minuten
    • ssl kommt später
    • Hier soll­te auch das Pass­wort geän­dert werden.
    • Spei­chern

Danach ist der  Web­zu­gang erreich­bar über: http://server.local:81

  • Zer­ti­fi­ka­te
    • Sys­tem -> Zer­ti­fi­ka­te ->  hinzufügen
    • Ein Zer­ti­fi­kat anle­gen für sftp und htt­ps. Ich hab eine Gül­tig­keit von 10 Jah­ren fest­ge­legt, das Zer­ti­fi­kat kann ich aber jeder­zeit aus­tau­schen. So ein Selbst­zer­ti­fi­kat sorgt im Brow­ser immer für doo­fe Mel­dun­gen.  Man muss ihm Ver­trau­en, und es zu der Lis­te der ver­trau­ens­wür­di­gen Zer­ti­fi­ka­te hin­zu­fü­gen. Danach lässt sich die Sei­te pro­blem­los und ohne Sper­re aufrufen. 
  • SFTP ein­rich­ten
    • Über ein zusätz­li­ches Plugin.
  • SMB Zugriff
  • OMV Extras installieren
    •  Ter­mi­nal des OMV-Rech­ners mit root-Rech­ten:

Danach befin­dest sich ein neu­er Menü-Ein­trag in OMV: Sys­ten -> OVM-Extras

  1. Sys­ten -> OVM-Extras -> Rei­ter Docker -> But­ton Docker -> installieren
  2. Sys­ten -> OVM-Extras -> Rei­ter Docker -> But­ton Por­tai­ner -> installieren
  3. Sys­ten -> OVM-Extras -> Rei­ter Docker -> But­ton Yacht -> installieren
  4. Sys­ten -> OVM-Extras -> Rei­ter Cock­pit -> But­ton Cock­pit -> installieren

Portainer / Yacht

Yacht ist eine Por­tai­ner Alter­na­ti­ve. Ich kann so bei­de mal testen. 

  • Por­tai­ner ist jetzt auf­ruf­bar unter:
  • Yacht ist auf­ruf­bar unter:
  • User/Passwörter soll­ten nach der ers­ten Anmel­dung geän­dert werden.

Cockpit

Ist eine Web­schnitt­stel­le, über die das Basis die­nen­de Debi­an-Linux die bequem admi­nis­triert wer­den kann. Zum Bei­spiel kön­nen Updates ein­ge­spielt wer­den, User ange­legt, VMs ein­ge­rich­tet wer­den, etc. 

Freigabe einrichten

In Open­Me­diaVault muss eine Frei­ga­be für das Ver­zeich­nis ange­legt wer­den in dem die Docker Con­tai­ner ihre Daten able­gen dürfen. 

OMV -> Zugriffs­kon­trol­le -> Freigaben 

Es reicht meist eine zen­tra­le Frei­ga­be auf das Root Ver­zeich­nis der Docker-Daten. Bei mir ist das zB. der fol­gen­de abso­lu­te Pfad zu einer exter­nen Fest­plat­te mit dem schö­nen Namen MEDIA_LIB: 

Den Abso­lu­ten Pfad muss erst wie folgt ange­zeigt wer­den. Dann kann man ihn abtip­pen, oder etwas tri­cky mit Copy and Pas­te aus dem Quell­text entnehmen: 

In Open­Me­diaF­ault den abso­lu­ten Pfad einer Frei­ga­be ermit­teln (Brow­ser Safari).

Applikationen  installieren

Das funk­tio­niert schön bequem über Docker. Pass­wör­ter und Pfa­de in den Skrip­ten müs­sen natür­lich ent­spre­chend ange­passt werden. 

Es gibt für ALLES einen Docker-Con­tai­ner.… man muß ihn nur ans Lau­fen bringen. 

Wakapi Time Tracking

Waka­pi ist ein auto­ma­ti­sier­tes Time­tracking Tool. 

Den Con­tai­ner brin­ge ich übers Ter­mi­nal ans laufen: 

In die .wakatime.cfg die IP-Adres­se des Ser­vers ein tra­gen, und nicht den Domain-Namen. Sonst kann das Pro­gramm kei­ne Ver­bin­dung mit dem Ser­ver auf­neh­men und es gibt ne schi­cke Feh­ler­mel­dung: dial tcp: look­up ser­ver­na­me on xxx.xxx.xxx.x:53: no such host

Emby / Jellyfin

Der Medi­en­ser­ver. Dazu hab ich hier schon eini­ges geschrie­ben als ich das auf dem Raspber­ry-Pi ein­ge­rich­tet habe. UID und GID bestim­me ich auf dem Ser­ver über das Terminal: 

Bei den Volu­mes wie­der dar­auf ach­ten das eine Frei­ga­be in OVM existiert. 

Calibre-Web

eBook Manage­ment mit Calibre, und dazu eine schö­ne Web­ober­flä­che mit Calibre-Web: 

Die Anwen­dung des Docker Com­po­se Skripts war pro­blem­s­los. Im Ver­zeich­nis /books/ wird die Cal­libre Daten­bank abge­legt, dar­aus bedient sich dann das Web Front­end um die Web­sei­te auf zu bauen. 

Da die Calibre Daten­bank noch lokal auf mei­nem Rech­ner liegt, sor­ge ich mit einem Hazel Kopier-Task dafür das Calibre-Web mit den Ände­run­gen ver­sorgt wird: 

Joplin

Jop­lin ist eine leis­tungs­fä­hi­ge, Mark­down basier­te, Open­So­ur­ce Notiz-App, mit einer freund­li­chen und regen Com­mu­ni­ty. Die Apps sind nicht fer­tig und etwas unge­schlif­fen, das merkt man an jeder Ecke, der Ser­ver ent­steht auch gera­de erst. Das schränkt aber die gene­rel­le Brauch­bar­keit nicht ein, und Hey: Ich bin wie­der Herr über mei­ne Daten! Das ist eh unbe­zahl­bar. Wenn man von der hoch­po­lier­ten Kon­kur­renz zB. Ever­no­te kommt wird man viel­leicht dezent ent­täuscht sein, vor allem was das The­ma Zusam­men­ar­beit angeht. Mei­ne per­sön­li­chen Noti­zen Todo-Lis­ten wan­dern jetzt jeden­falls erst mal von der Mac App Noti­zen und dem her­vor­ra­gen­den Things nach Joplin. 

Das Set­up des Ser­vers war mit dem Docker Com­po­se Skript kom­plett pro­blem­los. Der Pfad zu den Vol­ums und die User und Pass­wör­ter müs­sen wie­der natür­lich indi­vi­du­ell ange­passt wer­den. Sel­bi­ges gilt evtl. für die Ports. 

Er ist danach unter der Adres­se erreich­bar: http://server.local:22300/ und kann nach dem ers­ten Log­in mit admin@localhost und dem Pass­wort admin wei­ter kon­fi­gu­riert, und wei­te­re Nut­zer ein­ge­rich­tet werden. 

Die Cli­ents erfor­dern auch etwas Kon­fi­gu­ra­ti­on. Es gibt eine gro­ße Anzahl an Plugins für die Desk­top Apps, mit denen die Funk­ti­on erwei­tert wer­den kann. Die­se ste­hen aller­dings noch nicht auf den Smart­pho­ne Ver­sio­nen zur Verfügung. 

Schrei­ben und ver­wal­ten der Noti­zen ist am Desk­top am kom­for­ta­bels­ten. unter­wegs Noti­zen mit den ande­ren Apps erfas­sen, auch ohne Ver­bin­dung zum Ser­ver. zu Hau­se wird wie­der syn­chro­ni­siert. Nach ein paar Umbau­ten und neu­er Struk­tu­rie­rung schaut das bei mir so aus: 

Wer viel auf dem Desk­top schreibt — als Autor oder Jour­na­list zum Bei­spiel, dem emp­feh­le ich dazu das eben­so kos­ten­lo­se Open­So­ur­ce Pro­gramm Zettlr. Es har­mo­niert super mit Jop­lin. Damit kann man stö­rungs­frei schrei­ben, denn es hat einen Ablen­kungs­frei­en Modus, sowie einen Schreib­ma­schi­nen Modus. Wie mäch­tig Zettl trotz Mini­ma­lis­mus ist, kann man der Anlei­tung entnehmen: 

Der Web-Clip­per für die Brow­ser Mozil­la und Chro­me — lei­der (der­zeit) nicht für Safa­ri — hilft bei der Recher­che bzw. dem Sam­meln von Quel­len. Das gan­ze funk­tio­niert ein biss­chen wie DevonT­hink “super­light”.

Apache / php / mySQL

Eine klas­si­sche Umge­bung zum Ent­wi­ckeln von Web-Anwen­dun­gen. Der Con­tai­ner läuft noch nicht ganz rund. Hier sol­len auch mei­ne Web(re)präsentationen eine zwei­te Hei­mat finden. 

Beim Anmel­den bei phpMy­Ad­mim gibts noch eine Feh­ler­mel­dung zu Bewundern: 

mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getad­drin­fo fai­led: Name or ser­vice not known 

phpMy­Ad­min kann noch nicht mit der Daten­bank reden, obwohl alle Con­tai­ner im sel­ben Netz­werk lau­fen. Der Rest geht aber soweit. Das gan­ze muss jetzt noch wei­ter kon­fi­gu­riert werden… 

WordPress

Ein iso­lier­ter Wor­d­Press Con­tai­ner mit allem was nötig ist um mal schnell eine Wor­d­Press-Instanz zu betreiben: 

GIT Server

Das ist kniff­lig… Fort­set­zung folgt… 

War der Artikel hilfreich?
Nich so 0 0 von 0 fanden den Artikel hilfreich.
Ansichten: 32
Vorheriger Artikel: Ein jar bauen mit IntelliJ und maven