diff --git a/.gitignore b/.gitignore index cf59495..c40acd3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -.aux -.log -.nav -.out -.pdf -.snm -.toc +*.aux +*.log +*.nav +*.out +*.pdf +*.snm +*.toc diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8efe377 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +all: + latexmk -pdf diff --git a/images/cake.png b/images/cake.png new file mode 100644 index 0000000..6dc6dd8 Binary files /dev/null and b/images/cake.png differ diff --git a/images/distributed.png b/images/distributed.png new file mode 100644 index 0000000..4386ca9 Binary files /dev/null and b/images/distributed.png differ diff --git a/images/erasure.png b/images/erasure.png new file mode 100644 index 0000000..388e505 Binary files /dev/null and b/images/erasure.png differ diff --git a/images/ingress-routing-mesh.png b/images/ingress-routing-mesh.png new file mode 100644 index 0000000..55ad8e1 Binary files /dev/null and b/images/ingress-routing-mesh.png differ diff --git a/images/langeweile.jpg b/images/langeweile.jpg new file mode 100644 index 0000000..d09d731 Binary files /dev/null and b/images/langeweile.jpg differ diff --git a/images/nest.jpg b/images/nest.jpg new file mode 100644 index 0000000..49cf91d Binary files /dev/null and b/images/nest.jpg differ diff --git a/images/replicated.png b/images/replicated.png new file mode 100644 index 0000000..135a63f Binary files /dev/null and b/images/replicated.png differ diff --git a/images/snapcast.png b/images/snapcast.png new file mode 100644 index 0000000..a424bae Binary files /dev/null and b/images/snapcast.png differ diff --git a/images/sonos.png b/images/sonos.png new file mode 100644 index 0000000..199ceb9 Binary files /dev/null and b/images/sonos.png differ diff --git a/presentation.tex b/presentation.tex new file mode 100644 index 0000000..cff9844 --- /dev/null +++ b/presentation.tex @@ -0,0 +1,224 @@ +\documentclass{beamer} +\usepackage{graphicx} +\usepackage{wrapfig} +\graphicspath{ {./images/} } +\usetheme{metropolis} %Usemetropolistheme + +\title{Ein Rechenzentrum zum Preis eines Multiroom Audio Systems} +\date{\today} +\author{Georg} + +\begin{document} +\maketitle + +\begin{frame}{Wie alles began...} + Ich will ein Multiroom-Audio-System! + \begin{itemize} + + \item Musik in jedem Raum hören (Küche, Bad, 2 Zimmer) + \item Zugriff auf gesamte Musikbibliothek + \item Steuerung von jedem Gerät + \end{itemize} +\end{frame} + +\begin{frame}{Wie alles begann...} + \includegraphics[width=\textwidth]{sonos} + Gesamtpreis: 796 € +\end{frame} + +\begin{frame}{Wieso die Idee blöd ist...} + Mensch kauft kommerziellen Mist ... + \begin{itemize} + \item ... den man nicht hacken kann ... + \item ... den man nicht reparieren kann ... + \item ... der nur eine Sache kann ... + \item ... der Nutzer*innen in ein Ökosystem einsperrt ... + \item ... der sau teuer ist + \end{itemize} +\end{frame} + +\begin{frame}{Disclaimer} + Es gibt auch noch andere kommerzielle Angebote dieser Art, die genauso blöd sind. + + Und es geht sogar noch blöder: Mit Google Home oder Alexa gibt es Überwachung GRATIS OBEN + DRAUF!!! +\end{frame} + +\begin{frame}{Was dann?} + \begin{wrapfigure}{r}{0.5\textwidth} + \centering + \includegraphics[width=0.5\textwidth]{snapcast} + \end{wrapfigure} + Setup: + \begin{itemize} + \item 4 Raspberry Pi + \item 4 günstige Boxen oder Stereoanlagen + \item Mopidy als Musikquelle (Dateien, Internetradio, Funkwhale ...) + \item Snapcast als Multiroom-"Verteiler" + \end{itemize} +\end{frame} + +\begin{frame}{Kosten} + \begin{itemize} + \item 4 * Raspberry Pi = 4 * 50€ + \item 4 * Stereoanlage/Boxen = 4 * 50€ + \item Summe: 400€ + \item Rest: 396€ + \end{itemize} +\end{frame} + +\begin{frame}{Das "Problem"} + \includegraphics[width=\textwidth]{langeweile} + Langeweile bei Mensch und Gerät +\end{frame} + +\begin{frame}{Die Möglichkeiten} + \begin{itemize} + \item eine Spielwiese zum experimentieren + \item im lokalen Netzwerk Daten verfügbar machen + \item Webservices hosten? + \end{itemize} +\end{frame} + +\begin{frame}{1. Erweiterung: NAS} + + \begin{block}{NAS} + Network Attached Storage (NAS, englisch für netzgebundener Speicher) bezeichnet einfach zu verwaltende Dateiserver. + \end{block} + +\end{frame} + +\begin{frame}{1. Erweiterung: NAS} + Hardware: + \begin{itemize} + \item RockPro64 + \item PCIe SATA-Adapter + \item 2 x 1TB HDD + + \item Summe: 125€ + \item Rest: 271€ + \end{itemize} + +\end{frame} + +\begin{frame}{1. Erweiterung: NAS} + + Software + \begin{itemize} + \item openmediavault (einfach zu installieren, viele Features) + \item Wechsel zu dietpi + mdadm RAID + Einbindung auf Notebooks via sshfs + \end{itemize} +\end{frame} + +\begin{frame}{2. Erweiterung: Docker Swarm} + \begin{columns}[t] + \begin{column}{0.5\textwidth} + \begin{block}{einzelner Server} + \begin{itemize} + \item Bündelung der Hardware in ein System + \item kaum zusätzlicher Verwaltungsaufwand + \end{itemize} + \end{block} + \end{column} + \begin{column}{0.5\textwidth} + \begin{block}{verteiltes System} + \begin{itemize} + \item Verteilung der Hardware auf mehrere Systeme + \item Spezialisierung möglich + \item vermeintlich höhere Ausfallsicherheit + \item einfache Erweiterbarkeit + \end{itemize} + \end{block} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{2. Erweiterung: Docker Swarm} + \begin{wrapfigure}{r}{0.5\textwidth} + \centering + \includegraphics[width=0.3\textwidth]{cake} + \end{wrapfigure} + Features: + \begin{itemize} + \item Aufbrechen der Dienste in Unteraufgabenaufgaben + \item Zuteilung der Unteraufgaben an Worker + \item Reaktion auf Ausfälle einzelner Worker + \item Load-Balancing + \end{itemize} +\end{frame} + +\begin{frame}{2. Erweiterung: Docker Swarm} + \center + \includegraphics[width=\textwidth]{ingress-routing-mesh} +\end{frame} + +\begin{frame}{2. Erweiterung: Docker Swarm} + aktuelle Services: + \begin{itemize} + \item Gitea + \item Drone CI + \item Grafana + \item Prometheus + \item Cryptpad + \end{itemize} +\end{frame} + +\begin{frame}{3. Erweiterung: GlusterFS} + \begin{block}{Problem} + Wenn das NAS ausfällt, fallen ALLE Dienste aus, weil die Daten nicht mehr verfügbar sind. + \end{block} + \begin{block}{SPOF} + Unter einem Single Point of Failure (kurz SPOF bzw. deutsch einzelner Ausfallpunkt) versteht + man einen Bestandteil eines technischen Systems, dessen Ausfall den Ausfall des gesamten + Systems nach sich zieht. + \end{block} + \begin{block}{Lösungsansatz} + verteilte Dateisysteme: Ceph, Gluster + \end{block} +\end{frame} + +\begin{frame}[t]{3. Erweiterung: GlusterFS} + \begin{wrapfigure}{l}{0.5\textwidth} + \centering + \includegraphics[width=0.5\textwidth]{replicated} + \includegraphics[width=0.5\textwidth]{distributed} + \end{wrapfigure} + Features: + \begin{itemize} + \item Spiegelung + \item Verteilung + \item Erasure Code + \item Geo-Replication + \end{itemize} +\end{frame} + +\begin{frame}{Exkurs: Erasure Codes} + \includegraphics[width=\textwidth]{erasure} +\end{frame} + +\begin{frame}{3. Erweiterung: GlusterFS} + Hardware: + \begin{itemize} + \item HDDs recycelt aus Notebooks + SATA-USB-Adapter (35€) + \item übrigens Geld: 236€ + \item Spendenaufruf: 2,5" HDDs/SSDs, gern alt + \end{itemize} +\end{frame} + +\begin{frame} + \includegraphics[width=\textwidth]{nest} +\end{frame} + +\begin{frame}{Ausblick} + \begin{itemize} + \item Ordnung machen + \item Mehr Dienste + \item ... Vorschläge? :) ... + \end{itemize} +\end{frame} + +\begin{frame} + Fragen?\\ \pause + Vielen Dank fürs zuhören. DIY ftw, squat the web! +\end{frame} +\end{document}