Skip to content

Versuchsdurchführung

Versuch 1 - Plex

Vorbereitung

  • System: Debian GNU/Linux auf universitätsinterner VM
  • Software: Plex Media Server
  • Ziel: Aufsetzen eines Plex Media Servers für Filme und Serien, der im universitätsinternen Netzwerk verfügbar ist
  • Voraussetzungen: SSH-Zugang zur VM, Root- oder sudo-Rechte

Durchführung

1. Repository hinzufügen und Plex installieren

Terminal window
# Benötigte Pakete installieren
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg
# Plex Repository-Schlüssel hinzufügen
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
# Plex Repository hinzufügen
echo "deb https://downloads.plex.tv/repo/deb public main" | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
# Plex Media Server installieren
sudo apt update
sudo apt install plexmediaserver

2. Firewall konfigurieren

Terminal window
# Standard Plex-Port (32400) freigeben
sudo ufw allow 32400/tcp

3. Medienverzeichnis einrichten

Terminal window
# Verzeichnis für Medien erstellen
sudo mkdir -p /opt/plexmedia/{movies,series}
sudo chown -R plex:plex /opt/plexmedia

4. Plex-Server Status prüfen

Terminal window
sudo systemctl status plexmediaserver

5. Erstzugriff und Konfiguration

  • Im Browser aufrufen: http://<VM-IP-Adresse>:32400/web
  • Anmeldung mit Plex-Account
  • Medienbibliotheken einrichten:
    1. ”+” Symbol klicken
    2. Bibliothekstyp wählen (Filme/Serien)
    3. Verzeichnisse hinzufügen (/opt/plexmedia/movies bzw. /opt/plexmedia/series)

Ergebnisse

  • Plex Media Server läuft erfolgreich auf der VM
  • Server ist im Universitätsnetzwerk über Port 32400 erreichbar
  • Medienbibliotheken für Filme und Serien wurden eingerichtet
  • Streaming funktioniert im internen Netzwerk

Probleme

  • Zugriffsbeschränkung: Der Server ist nur im Universitätsnetzwerk erreichbar, was aber dem gewünschten Verhalten entspricht. Um auch von außen darauf zuzugreifen, kann z. B. PiVPN eingesetzt werden. Voraussetzung: statische IP-Adresse oder DynDNS.
  • Speicherplatz: Je nach zugewiesenem VM-Speicherplatz muss die Medienbibliothek entsprechend organisiert werden
  • Metadaten-Downloads: Initial kann das Laden von Metadaten (Poster, Beschreibungen etc.) einige Zeit in Anspruch nehmen

Hinweise zur Nutzung:

  • Regelmäßige Updates über sudo apt update && sudo apt upgrade durchführen
  • Medien in die entsprechenden Verzeichnisse mit korrekter Namenskonvention ablegen
  • Regelmäßige Überprüfung des Speicherplatzes mit df -h

Hinzufügen eigener Medien

Eigene Medien können auf zwei Arten zum Plex-Server hinzugefügt werden:

  1. Direktes Kopieren in die Medienverzeichnisse:

    Terminal window
    # Für Filme
    scp meinfilm.mp4 user@<server-ip>:/opt/plexmedia/movies/
    # Für Serien
    scp meineserie-s01e01.mp4 user@<server-ip>:/opt/plexmedia/series/
  2. Über SFTP/FTP-Client (z.B. FileZilla):

    • Verbindung zum Server herstellen
    • Dateien in die entsprechenden Verzeichnisse /opt/plexmedia/movies oder /opt/plexmedia/series hochladen

Wichtige Hinweise zur Medienbibliothek:

  • Filme sollten eindeutige Namen haben, idealerweise im Format: Filmtitel (Jahr).mp4
  • Serien sollten in einer klaren Struktur organisiert sein:
    /opt/plexmedia/series/Serienname/
    └── Season 01/
    ├── SerienName - s01e01.mp4
    ├── SerienName - s01e02.mp4
    └── ...
  • Unterstützte Videoformate: MP4, MKV, AVI, etc.
  • Nach dem Hinzufügen neuer Medien: “Bibliothek scannen” in der Plex-Weboberfläche ausführen
  • Ausreichend Speicherplatz auf dem Server sicherstellen (df -h zur Überprüfung)

Versuch 2 - Forgejo

Vorbereitung

  • Verwendete Hardware: Raspberry Pi 3B, Netzteil, LAN-Kabel
  • Betriebssystem: Raspberry Pi OS Lite (64-bit)
  • Vorinstalliert: git, git-lfs
  • Ziel: Self-Hosting von Forgejo auf einem Raspberry PI.

Durchführung

1. Forgejo-Binary herunterladen

Forgejo-Binary für entsprechende Architektur herunterladen (prüfbar mit uname -m). Beim Raspberry Pi handelt es sich typischerweise um arm64. Beispiel für Version 11.0.0 für arm64:

Terminal window
wget https://codeberg.org/forgejo/forgejo/releases/download/v11.0.0/forgejo-11.0.0-linux-arm64
chmod +x forgejo-11.0.0-linux-arm64

Die Binary nach /usr/local/bin/ verschieben und ausführbar machen:

Terminal window
sudo cp forgejo-x.y.z-linux-amd64 /usr/local/bin/forgejo
sudo chmod 755 /usr/local/bin/forgejo

2. Git user erstellen

Git Benutzer erstellen, welcher von Forgejo genutzt wird:

Terminal window
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \
--group --disabled-password --home /home/git git

3. Verzeichnisse erstellen

Datenverzeichnis: Hier speichert Forgejo u.a. Git-Repositories:

Terminal window
sudo mkdir /var/lib/forgejo
sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo

Konfigurationsverzeichnis: Enthält z. B. app.ini. Dieses Verzeichnis muss nur beim ersten Start beschreibbar für Forgejo sein.

Terminal window
sudo mkdir /etc/forgejo
sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo

4. Systemd Service für Forgejo installieren

Forgejo Service-Datei herunterladen:

Terminal window
sudo wget -O /etc/systemd/system/forgejo.service https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service

Service aktivieren und starten:

Terminal window
sudo systemctl enable forgejo.service
sudo systemctl start forgejo.service

Ergebnisse

Forgejo sollte nun im lokalen Netzwerk über Port 3000 erreichbar sein:

http://<rpi-ip>:3000

Beim ersten Aufruf erscheint die Initialkonfiguration, die dich durch die wichtigsten Einstellungen führt, darunter:

  • Datenbanktyp (SQLite, MySQL, PostgreSQL)
  • Administrator-Zugangsdaten
  • Server Domain

Danach ist Forgejo einsatzbereit.

Probleme

  • Nur im lokalen Netzwerk erreichbar: Um auch von außen darauf zuzugreifen, kann z. B. PiVPN eingesetzt werden. Voraussetzung: statische IP-Adresse oder DynDNS.

  • SQLite als Datenbank: Die Standardinstallation verwendet SQLite, was bei vielen Nutzern oder hoher Last schnell an Grenzen stoßen kann. Lösung: Einsatz einer robusteren Datenbank wie MySQL/MariaDB oder PostgreSQL.

  • Server-Claiming Probleme: Der Claiming-Prozess kann fehlschlagen, wenn die Preferences.xml nicht korrekt konfiguriert ist. Lösung:

  1. Claim-Token über curl-Befehl abrufen:
Terminal window
curl -X POST -H "X-Plex-Client-Identifier: {MACHINE-ID}" \
"https://plex.tv/api/claim/exchange?token={CLAIM-TOKEN}"
  1. Aus der XML-Antwort den authenticationToken extrahieren
  2. Preferences.xml manuell aktualisieren mit:
    • PlexOnlineMail
    • PlexOnlineUsername
    • PlexOnlineToken (= authenticationToken)
    • Korrekte IP-Adresse in allowedNetworks und customConnections
  3. Berechtigungen korrigieren und Plex neustarten:
Terminal window
sudo chown plex:plex /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Preferences.xml
sudo systemctl restart plexmediaserver

Versuch 3 - Pi-hole

Vorbereitung

Setup Raspberry Pi

Ziel dieses Versuchs ist die Einrichtung und Analyse von Pi-hole als DNS-basiertes Werbeblockiersystem im lokalen Netzwerk. Pi-hole soll auf einem Raspberry Pi installiert und anschließend über das Webinterface konfiguriert und ausgewertet werden. Der Fokus liegt auf der Integration von Blocklisten sowie der Beobachtung und Analyse der DNS-Abfragen im Netzwerk.

Zur Durchführung wurde ein Raspberry Pi 3B+ mit Raspberry Pi OS Lite verwendet. Die Netzwerkverbindung erfolgte per Ethernet. Der Zugriff auf das System erfolgte über SSH.

Durchführung

Zunächst wurde das Betriebssystem Raspberry Pi OS Lite mithilfe des Raspberry Pi Imagers auf eine microSD-Karte übertragen. Um den SSH-Zugriff beim ersten Start zu ermöglichen, wurde eine leere Datei mit dem Namen „ssh“ in die Boot-Partition der microSD-Karte gelegt. Nach dem Start des Raspberry Pi wurde per SSH über die IP-Adresse des Geräts zugegriffen. Anschließend wurde das System mit dem Befehl sudo apt update && sudo apt upgrade -y aktualisiert.

Die Installation von Pi-hole erfolgte über das offizielle Installationsscript mit dem Befehl curl -sSL https://install.pi-hole.net | bash. Während der Installation wurden die Ethernet-Verbindung als Netzwerkadapter und die vorgeschlagene statische IP-Adresse übernommen. Als Upstream-DNS-Server wurde Quad9 ausgewählt. Die Weboberfläche wurde aktiviert, die Telemetrie deaktiviert und nach Abschluss der Installation ein Zugangspasswort für das Webinterface erstellt.

Der Zugriff auf das Webinterface erfolgte anschließend über http://<IP-Adresse-des-RaspberryPi>/admin.

Zur Einrichtung der Filterfunktionen wurden im Menüpunkt „Groups > Adlists“ zwei Blocklisten hinzugefügt: die bekannte StevenBlack-Hosts-Datei (https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts) sowie eine zusätzliche Liste von r0xd4n3t (https://raw.githubusercontent.com/r0xd4n3t/pihole-adblock-lists/main/pihole_adlists.txt). Die Liste von StevenBlack basiert auf einer Zusammenführung mehrerer seriöser Quellen und ist auf GitHub frei verfügbar, wo sie regelmäßig gepflegt und aktualisiert wird. Beide Listen wurden aktiviert und der Kategorie „Ads“ zugewiesen. Nach dem Aktualisieren der Listen zeigte die Statusanzeige insgesamt 1.684.842 eingetragene Domains.

Im nächsten Schritt wurde das Query Log geöffnet, um den DNS-Verkehr im Netzwerk zu analysieren. Dabei wurde deutlich, dass DNS-Anfragen erfolgreich durch Pi-hole verarbeitet wurden. Ein Großteil der Anfragen wurde über den internen Cache beantwortet. Zum Zeitpunkt der Analyse war das Blockieren von Domains deaktiviert, wodurch keine Anfragen blockiert wurden. Erst nach manueller Aktivierung des Blockings werden Anfragen an bekannte Werbe- und Tracking-Domains unterbunden.

Ergebnisse

Pi-hole wurde erfolgreich auf dem Raspberry Pi installiert und über das Webinterface konfiguriert. Nach manueller Aktivierung der Blockfunktion zeigte das System eine funktionierende Filterung an. Im Dashboard wurden bereits nach kürzester Zeit 74 DNS-Anfragen registriert, von denen 17 blockiert wurden. Dies entspricht einer Blockrate von 23 %. Insgesamt waren zum Zeitpunkt der Analyse 1.684.842 Domains über die aktivierten Blocklisten erfasst.

Die Weboberfläche lieferte eine übersichtliche grafische Darstellung der Gesamtanfragen, der Blockrate, der verwendeten Upstream-DNS-Server sowie der aufgeteilten Anfragetypen. Die Filterung durch die hinterlegten Listen funktionierte wie vorgesehen.

Probleme

Pi-hole war nach der Installation betriebsbereit, jedoch war die Blockfunktion standardmäßig deaktiviert. Ohne manuelle Aktivierung findet keine Filterung statt, was im Webinterface nicht besonders hervorgehoben wird. Bei einem unbeaufsichtigten Betrieb kann dies dazu führen, dass Pi-hole zwar Anfragen verarbeitet, aber keine Schutzwirkung entfaltet. Weitere potenzielle Probleme können durch eine fehlerhafte Konfiguration der statischen IP-Adresse oder die Auswahl eines ungeeigneten Upstream-DNS-Servers entstehen. Diese können die Funktionalität einschränken oder eine Umgehung der Filterlogik ermöglichen.

Versuch 4 - Rallly

Rally ist eine Open-Source Webanwendung, mit der man ganz einfach Termine ausmachen kann.

Vorbereitung

  • Docker auf VPS installieren
  • docker-compose.yml ziehen mit git clone https://github.com/lukevella/rallly-selfhosted.git

Durchführung

  • Die Umgebungsvariablen in config.env bearbeiten
  • docker compose up ausführen

Ergebnisse

Nun können ganz einfach Umfragen erstellt werden um Termine mit mehreren Personen auszumachen :)

rallly