mAirlist auf Microsoft SQL-Datenbank installieren bzw. migrieren

Wir haben mAirlist als localDB installiert, soweit so gut. Jetzt wollen wir aber von anderen Arbeitsplätzen aus die Datenbank bearbeiten können und dazu gibt es für 150 Euro eine Extra-Lizenz für das Datenbank-Management. Neben dieser Lizenz ist auch voraussetzung, dass die Datenbank für alle Clients im Zugriff ist. Das könnten wir einerseits durch eine FIle-Freigabe erreichen, wollen das aber andererseits sicher und skaliwerbar haben. Daher entscheiden wir uns für eine SQL-Lösung. mAirlist kann PostreSQL, mySQL und eben auch MS SQL. Die Express-Version von Microsoft SQL ist kostenfrei bis 10 GB Datenbankgröße und ich hoffe, dass uns das eine Weile ausreichen wird.

Wir installieren die SQL-Datenbank auf der gleichen Maschine wie mAirlist selbst – also lokal – , damit wir keinen weiteren Single-Point-Of-Failure aufbauen und auch bei Netzwerkstörungen nicht die Verbindung zur Datenbank verlieren können. Sollte der mAirlist Server abrauchen haben wir ein Backup und sind aber soweit unabhängig von weiteren Systemen.

Die SQL Express laden wir uns von der Microsoft Homepage herunter. Wir haben die Version 2022 (SQL2022-SSEI-Expr.exe) gewählt.

Bei der Installation wählen wir „Medien herunterladen“, da wir den dort geladenen Installer dann für Änderungen an der Datenbank-Instanz benötigen werden und wir die Datenbank selbst installieren wollen. Dieser speichert sich im Download-Ordner und heißt bei uns: SQLEXPR_x64_DEU.exe

Microsoft SQL Express Datenbank installieren

Nach dem Start des Installers wählen wir den ersten Punkt „Neue eigenständige SQL Serbver-Installation“ aus.

Nachdem wir die Lebensbedingungen akzeptiert haben und auf weiter klicken prüft der Installer dann, ob alle Voraussetzungen zur Installation erfüllt sind.

Ist dies der Fall klicken wir erneut auf weiter. Die Azure-Erweiterung für SQL brauchen wir nicht und entfernen den Haken. Beim nächsten Bild benötigen wir die SQL-Replikations-Dienste auch nicht wirklich (außer man möchte später die SQL-Server-Replikation nutzen, dies kann aber auch nachträglich über den Installer noch ergänzt werden).

Nach einem beherzten Klick auf „weiter“ wählen wir eine benannte Instannz und benennen diese (in unserem Fall) wie unser Radio eben heisst, also NDWRADIO.

und klicken danach auf weiter. Im nächsten Schirm lassen wir alles auf den Voreinstellungen

und nach einem weiteren „weiter“-KLick entscheiden wir uns dass wir den gemischten Modus für die Authentifizierung wünschen. Dort vergeben wir dann ein Passwort für den Benutzer „SA“. Dieses wird später noch bentötigt, also gut aufschreiben!

Nach dem Klick auf „weiter“ wird dann der SQL-Server und die Instanz installiert. Das dauert eine Weile.

Installation des Microsoft SQL Management Studios

In der Zeit laden wir uns das Microsoft SQL Management Studio herunter und installieren dieses auf unserem. PC. Dieses Tool wird benötigt um später EInstellungen an der Instanz vornehmen zu können, wie beispielsweise das Anlegen der mairlist Datenbank in unserer Datenbank-Instanz an sich.

Dort folgen wir einfach den Anweisungen auf dem Bildschirm und schöießen die Installation des Management Studios ab.

Weitere Installation der SQL-Instanz und einrichten der mairlist Datenbank

Nachdem die Installation der INstanz abgeschlossen ist

starten wir das Management Studio um in der Instanz die mairlist Datenbank anzulegen.

Wir wählen unseren Server (den Namen des Rechners) sowie den instalierten Innstanznamen und geben für den Benutzer sa das zuvor vergebene Passwort ein und wählen unten „Trust server certificate“ aus.

Auf der linken Seite finden wir nun den Punkt „Databases“ und durch Rechtsklick auf den Menüpunkt können wir „New Database“ wählen um eine neue Datenbank anzulegen.

Diese benennen wir „mairlist““. Alle anderen “ und klicken auf OK.

Die Datenbank taucht nun auf der Linken seite als eigenständiger Punkt auf. Wir schließen das Management Studio und führen die Installation nun in der Konfiguration von mAirlist selbst weiter aus.

Im Konfigurationsprogramm von mAirlist gehen wir auf Datenbanken und fühen eine neue Datenbank hinzu. Wir wählen hier mAirListDB (SQL).

Dort geben wir die eben definierten Daten ein

und testen anschließend die SQL-Verbindung. Es wird der HInweis erscheinen, dass die Verbindung funktioniert, aber noch keine config angelegt wurde.

Dies beheben wir in dem wir auf den Punkt „Einrichtung“ klicken und dort dann auf „Tabellenstruktur einrichten“

Um die Datenbank besser erkennen zu können empfehle ich unter dem Reiter „Erweitert“ im Bereich „Benutzerdefinierte Bezeichnung“ einen eindeutigen Namen für die Datennbankverbindung zu definieren. Danach alles mit OK bestätigen und speichern. Fertig.

NDWRadio in deine Homepage einbinden

Wir haben im Bereich „Mitmachen“ auf unserer Homepage jetzt eine Möglichkeit geschaffen, sich den aktuellen Titel und auch die vergangenen Titel als JSON abzurufen und den aktuellen Titel auch als HTML, um diese Daten auf der eigenen Seite einzubinden. Dabei können die Cover dann auch mit abgefragt werden.

Weitere Informationen hierzu gibt es unter https://ndwradio.de/mitmachen?#einbinden

Kleinigkeiten…

Der Discord Link auf der Homepage wurde angepasst und sollte jetzt dauerhaft als Einladungslink fungieren.

In den Statistiken der Hörer wurde das Datum auf deutsches Format umgestellt um es besser lesbar zu machen und es kam die Monatsstatistik für das laufende Jahr mit dazu.

Die auf der Startseite angezeigten zufälligen Cover wurden auf maximal 18 Stück begrenzt, um Ladezeiten zu reduzieren.

Den MiniPlayer mit Autostart versehen und das Start-Volume auf 25% gesetzt, damit einem bei zu laut eingestelltem Audio am Rechner nicht gleich die Ohren wegfliegen.

Laravel storage:link macht Probleme

Auf unserem Plesk-Hosting haben wir die Einstellungen so vorgenommen, dass der Dokumenten-Stamm (Document-Root) für den Webserver direkt auf den /public-Pfad von Laravel (/laravel/public) verweist.

Daher klappt aber der php artisan storage:link Befehl nicht, so dass wir diesen manuell ausführen mussten um /laravel/storage/app/public auf /laravel/public/storage zu mappen mit einem relativen softlink:

ln -s -r /var/www/vhosts/ndwradio.de/laravel/storage/app/public  /var/www/vhosts/ndwradio.de/laravel/public/storage

Danach müssen wir Plesk noch mitteilen, dass wir Symbolischen Links auch noch folgen wollen 🙂 Das machen wir am besten nach Anleitung, die wir bei Plesk hier finden: https://support.plesk.com/hc/en-us/articles/12377715472535-Plesk-domain-shows-403-Forbidden-Symbolic-link-not-allowed-or-link-target-not-accessible

Ich habe mich dazu entschieden, dass serverweit auf meinem Dedicated Server von CMO zu machen und zwar mit dem folgenden Befehl in der Shell des Servers:

for DOMAIN_NAME in $(plesk bin domain --list); do plesk bin subscription --update-web-server-settings $DOMAIN_NAME -apache-restrict-follow-sym-links false ; done

Danach funktioniert alles, wie erwartet und man hat Zugriff auf die verlinken Verzeichnisse und die darin enthaltenen Dateien.

Automatisches speichern der Cover-Bilder

mAirlist bietet die Möglichkeit, mit dem Parameter %ALBUMART das im Track hinterlegte Cover mit zu übermitteln.

Wichtig ist es dabei zu beachten, dass hier für das POST-Kommando multipart/form-data gewählt wird. Als Parameter wähle ich hier $cover und $mairlistid um später in der Laravel-Programmierung das Cover unter der mairlistid speichern zu können, da alle unsere Titel in der Datenbank auf dem Webserver mti der mairlistid indentifiziert werden können.

Wichtig bei Laravel ist, da es sich um ein POST-COmmand handelt muss die csfr-token-prüfung abgeschaltet werden, sonst kommt der Quatsch erst gar nicht beim Controller an. Das hat mich ein paar Stunden gekostet, bis ich das gemerkt habe, warum mein lokaler Test funktioniert, aber der externe Test nicht.

In Laravel 11.x muss das in config/app.php mit hinzugefügt werden:

   ->withMiddleware(function (Middleware $middleware) {
        $middleware->validateCsrfTokens(except: [
            'logging/*',
        ]);
    })

damit wird der Pfad logging/* exkludiert von der csfr-Token-Prüfung und die Daten kommen beim Controller dann auch an.

In meinem Controller für das Logging habe ich das dann so umgesetzt, dass mairlistid und cover entsprechdend ermittelt und gesichert werden:

public function cover(Request $request)
    {

         // Prüfe ob die variablen gewünscht und im richtigen Format sind
        $request->validate([
            'cover' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
            'mairlistid' => 'required|string',
        ]);

        // Erhalte die mairlistid aus der Anfrage
        $mairlistid = $request->input('mairlistid');

        // Erhalte das Bild aus der Anfrage
        $image = $request->file('cover');

        // Definiere den Speicherort und den Dateinamen
        $destinationPath = 'coverimages';
        $imageName = $mairlistid . '.' . $image->getClientOriginalExtension();

        // Speichere das Bild
        $image->storeAs($destinationPath, $imageName, 'public');

        // Erfolgsnachricht mit Bildname zurückgeben
        return back()->with('success', 'Image uploaded successfully')->with('image', $imageName);

}

Somit werden dann die erhaltenen cover-Images als mairlistid.ext auf dem storage in Laravel gespeichert. Tolle Wurst.

Neues Mischpult für das Live-Studio

Ja, nach langem hin und her jetzt doch ein D&R Mischpult. Zuerst wolte ich ein sonifex S0v2, das hat 9 Kanäle, VOIP, aber nur zwei USB Audiokanäle. Da ich mit mAirlist gerne Player 1, Player 2, PFL/CUE und die Cartwall direkt via USB regeln / abspielen will, wurde es jetzt doch das D&R Airlite MK2 für knapp 2200 Euro vom Thomann 🙂 

Wer uns unterstützen will. Wir haben PayPal 🙂 paypal@ndwradio.de – Spender kommen in die Hall of Fame auf unserer Homepage.

8 Kanäle, drei Mikro, vier USB/Line-Kanäle, ein VoIP-Zug, eigentlich alles, was man braucht. Spart tonnenweise Kabelsalat unter dem Tisch und ich kann die zwei Soundkarten aus dem Playout-Server herausreißen.

Zuerst wollte ich das Airence, aber mit 6 Kanälen leider zu wenig und mit Erweiterung wären wir bei knapp 5000 Euro gelandet. Zu viel für so ein kleines Hobby-Projekt. Und: ich hätte im Studiotisch nochmal die Säge ansetzen müssen. Hoffen wir, dass das neue Airlite MK2 genau in das alte Mischer-Loch vom Behringer DX2000 Pro USB passt.

Nachdem uns das Airlite MK2 jetzt auch von mehreren Followern in den Social Networks empfohlen wurde, denke ich machen wir nicht allzuviel falsch. Wir werden berichten, wie das dann alles nach dem Umbau aussieht. Bis bald.

Benutzer implementiert

Heute haben wir die Möglichkeit geschaffen, dass sich Hörer bei uns an der Homepage registrieren, ihre E-Mail verifizieren und danach auch ordentlich am System anmelden können. Das ist jetzt erstmal die Voraussetzung dazu, dass wir exklusive Inhalte von NDW-Radio nur unseren Club-Mitgliedern zur Verfügung stellen können.

Was wir genau dort bereit stellen wollen ist noch nicht ganz klar. Aber man wird irgendwann Titel bewerten können und dann dort beispielsweise seine eigene Top-Hitparade der Neuen Deutschen Welle einsehen können.

Wir bleiben gespannt. Ihr auch?!

Neue Deutsche Welle @ its best :-)

Heute habe ich die Playlist-Erzeugung auf einmal täglich umgestellt, damit die Berechnung besser ist und mehr Titel in die Playlist-Erzeugung aufgenommen werden, die sonst etwas stiefmütterlich behandelt werden. Seitdem hört man auch sehr geile Perlen der Neuen Deutschen Welle. Jetzt schaue ich morgen um 15:00 Uhr, ob die Automatisation auch so greift, wie ich das geplant und gedacht habe.

An der Homepage wurde auch etwas gebastelt. So gibt es jetzt die ersten Liedtexte / Lyrics der Neuen Deutschen Welle in unserem Archiv. Wer mag kann uns fehlende Liedtexte per E-Mail zukommen lassen. Das wäre toll.

Die ersten externen Anbieter schicken uns seit heute Bestätigungen dass wir aufgenommen wurden. Demnächst veröffentlichen wir daher auch die Liste der externen Anbieter wie radio.de und weitere, wo man unseren Sender dann auch findet. Auf TuneIn sind wir scharf, damit man NDWRadio auch bei Apple Music hören kann. Warten wir mal ab, wie es sich in den nächsten Wochen entwickelt.

Morgen will ich versuchen einen Anonymous FTP-Server aufzusetzen, damit der File-Upload durch unsere Freunde erfolgen kann. Mancher von euch hat echte Perlen rumliegen und wir freuen uns darauf, tolle NDW-Musik für unser Archiv zu sammeln um diese dann für euch zu spielen.

Wir nehmen auch Spenden an Tonträgern an. Egal ob MC, CD, LP. Wir digitalisieren alles in FLAC und spielen es dann auch NDWRadio. Wer also steinalte Platten hat und diese nicht mehr braucht: Her damit!

Einiges an der Homepage angepasst

Wir haben eine Playliste integriert, bei der man direkt sieht, welche Titel in der letzten Zeit gespielt werden. Sehr interessantes Feature wie ich finde.

Auch haben wir jetzt auch eine Liste aller Titel bei NDW-Radio implementiert, so dass man sich durch das Portfolio durchklicken kann. Später werden wir diese Liste auch um eine „Wünsch ich mir“-Funktion ergänzen. Mal gucken. Und es gibt auch eine Liste der meistgespielten Titel auf NDW-Radio. Just for fun. Schaut euch die Seite an unter https://www.ndwradio.de

PayPal eingerichtet

Es geht Schlag auf Schlag. Unser PayPal-Account ist eingerichtet, Darüber können wir einerseits Unterstützung von den Hörern einsammeln und andererseits auch die entstehenden Anschaffungen und Ausgaben begleichen. Zumindest ist es schonmal kein Fehler ein PayPal-Konto zu haben, oder? paypal@ndwradio.de lautet die wunderschöne Adresse.