Gibts im Fediverse, oder auch anderswo eine (bevorzugt deutschsprachige, englisch aber auch ok) Community, Forum oder sonst irgendwas wo man auch als Noob eine verständliche Einführung in das Thema, bzw ein bisschen Durchblick aneignen und ggfs bei Unklarheiten auch ne Frage stellen kann?
Ich möchte für meine Familie eine Alternative zu Google Fotos und Drive, die Daten sollen bei mir bleiben.
Habe dafür schonmal teilweise was zum laufen gebracht, bisher aber nur lokal.
Bevor ich da jetzt sensible Daten einfüge und das alles aus dem Internet erreichbar mache würde ich allerdings gern ein bisschen besser wissen was ich da tue, wie was funktioniert und was ich eigentlich brauche dass das am Ende auch sinnvoll gesichert ist und ich nicht unwissentlich irgendwo riesige Lücken eingebaut habe.
Problem ist ich kenne mich mit sowas bisher nicht gut aus, das ist jetzt erstmal sehr viel Input. Man findet haufenweise Tutorials, die manchmal aber auch mehr verwirrend sind weil neben den reinen Anweisungen zu Installation/Konfiguration ein bisschen die Erklärung fehlt oder im nächsten Tutorial die gleiche Sache ganz anders ist.
Jemand ne Idee?
Das ist gar nicht mal so enorm schwer. Die ganzen Befehle die du dir aus den Anleitungen kopiert sind ja eben genau das (also Bash). Was bei der Automatisierung von Installationen halt wichtig ist, ist dass du einfach nach jedem Befehl, der Potentiell Fehlschlagen kann prüfst, ob der vorherige Befehl fehlgeschlagen ist. In bash geht das über die Variable
$?, welche immer den exit code Der letzten Operation enthält. Wenn$?nach einer Operation 0 ist, heißt es, dass diese Erfolgreich war. Alles andere heißt, dass irgendwas schief gelaufen ist. Das ganze würde dann (beispielsweise) so aussehen:Wo Es etwas komplizierter wird ist, wenn man als Teil einer Installation Konfigurationsdateien erstellen oder bearbeiten muss.
Das bearbeiten einzelner Werte in einer bereits bestehenden Konfigurationsdatei ist an sich aber noch relativ einfach:
sed -i -E "s/username=.*/username=cows_are_underrated/" ""config.txt"Was der command tut ist, dass er die Datei config.txt Zeile für Zeile nach dem gegebenen Muster
username=(gefolgt von einer beliebigen Anzahl an weiteren Zeichen (das ist die Bedeutung von.*. Der.bedeutet ein beliebiges Zeichen und das*, dass beliebig viele davon folgen können)) durchsucht und jedes vorkommen dieses Musters durchusername=cows_are_underratedersetzt. DassAm Anfang des "commandos" (ich weiß nicht, was der richtige Name ist) signalisiert sed, dass das gegebene Muster wie bereits beschrieben ersetzt werden soll. Die-iFlag sorgt dafür, dass die Datei auch bearbeitet wird und nicht nur das Ergebnis, nachdem sed durch ist mit den Operationen, in dein Terminal ausgibt. Die -E Flag sorgt dafür, dass sed zum durchsuchen Extended Regex nutzt. Regex ist eine formale Sprache zum beschreiben von Zeichenketten und es gibt halt verschiedene "Flavours" davon, welche u terschiedliche Funktionalitäten haben. Extended Regex ist so mit die simpelste. Wenn du Regex lernen willst (leider ist Regex nötig, sobald man etwas kompliziertere Bash Skripte schreibt), kann ich nur regexcrossword.com und regex101.com empfehlen.Ich selber kann es wirklich nur empfehlen zumindest ein bisschen bash zu lernen. Ich weiß, es ist zum lernen schon ein ziemlicher Krampf, aber sobald man es einmal zumindest grob verstanden hat ist es relativ angenehm zu nutzen. Es ist auch absolut belohnend zu sehen, wie dein gesamter Server sich durch das ausführen einiger Skripte komplett von alleine einrichtet und konfiguriert.
Ich weiß immer nicht, ob das 2026 wirklich noch stimmt. Ich habe in meinem Leben bestimmt ein halbes Dutzend Programmiersprachen gelernt, aber die Bash-Syntax wir mir immer zu doof. Klar, mit nem Cheatsheet kann ich Bashskripte auch lesen und hinfriemeln, aber wer heutzutage seine eigene Automatisierung skriptet, nimmt doch mindestens python. Wichtiger ist doch, Code-Logik vom Prinzip her zu verstehen, statt sich auf eine Sprache festzunageln.
Far die Automatisierung von so Installationen finde ich persönlich Python eher unpraktisch. Jeden einzelnen command irgendwie über os.system oder subprocess.run auszuführen ist zwar etwas, was man tun kann, sehe ich aber ehrlich nicht den Mehrwert im Vergleich zu direktem Bash. Textdateien kann man natürlich relativ gut in Python machen, finde das aber in Bash dann oftmals doch angenehmer (kommt halt drauf an was man machen will).
Der Vorteil den Bash meiner Meinung nach im Gegensatz zu Python hat ist, dass es halt nativ läuft (man muss also nicht jedes mal erst wieder ne neue Python virtual environment aufmachen, oder die ganzen Python Pakete global installieren) und der Fakt, dass die ganzen GNU-Utils einfach so unfassbar nützliche tools sind, dass ich da nicht drauf verzichten will.
Ist denke ich aber auch Geschmackssache. Habe jetzt erst ein Interface zum verwalten einer CSV Datei geschrieben. Habe das ganze vorher mal in Python gemacht, aber das war eher so mäßig. Es hat zwar funktioniert, aber war kein Überflieger. Habe das ganze jetzt aufgrund geänderter Anforderungen nochmal neu gemacht und dann halt in Bash (ich möchte Anmerken, dass das Mein erstes "größeres" Projekt in Bash war). Der Code umfasst zum einen deutlich weniger Zeilen (vorher waren es ca 800-100, jetzt sind es 500) ist mMn deutlich übersichtlicher und hat gleichzeitig noch deutlich verbesserte Funktionalitäten. Das wofür ich vorher 50 Zeilen gebraucht habe wird jetzt mit einem sed Befehl in Bash und noch so 15 Zeilen code für Error-checking erledigt.
Das ganze ist denke ich zum Großteil aber auch einfach Geschmackssache. Ich persönlich bin mittlerweile absolut kein Fan von Python, auch wenn ich es viel benutze (es ist halt quasi Idiotensicher und schnell in der Entwicklung).
Wenn ich für etwas Klassen oder nicht primitive Datentypen "brauche", würde ich auf jeden Fall Python bevorzugen, aber Abseits davon gibt es durchaus ziemlich viele Anwendungsfälle, für die Bash vollkommen ausreicht.
Man kann natürlich auch noch über Performance reden, aber das ist jetzt kein Fass, was ich aufmachen werde.
Ich stimme dir da voll zu, dass das Geschmackssache ist, und wenn du in Bash dein Muskelgedächtnis hast, ist ja auch klar, dass du es dann bevorzugst. Ich kam halt nie dazu, mir die eigenwillige Syntax zu merken und selbst als ich an Linux gegen Geld gearbeitet habe, musste ich bei den alle paar Monaten, wo ich einmal was in Bash machen musste, immer wieder von vorne nachschauen, was jetzt $ und # und @ nochmal bedeutet. Ist natürlich keine Herausforderung, wenn man da einmal drin ist, aber ich hab deswegen auch immer den Verdacht, dass Bash Anfänger eher abschrecken würde, weil z.B. Python da ja doch auch intuitiv leserlicher ist.
Würde dir absolut zustimmen, dass due Syntax eigenartig ist. Ich selber bin auch Meilen davon entfernt bash wirklich gut zu können, aber bis jetzt hat es ausgereicht, was ich kann. Für mich selber ist es in relativ vielen Anwendungsfällen halt doch schon ziemlich nützlich (und bin in eben jene Fällen auch froh, dass ich es kan ), weshalb ich selber halt durchaus auch Leuten dazu rate, zumindest die absoluten Grundlagen zu lernen.