GiantDisc Web Interface

GiantDisc-Web-Interface

Das hier von mir vorgestellte GiantDisc Web Interface basiert auf der Version 1.40 von Rolf Brugger. Die wichtigste Erweiterung ist die Schaltfläche Record und in Browse die Ansichten von Playlisten und aller Alben. Mit dieser zusätzlichen Schaltfläche hat man die Möglichkeit per Browser CD's einzulesen oder einzelne Musikdateien oder ganze Alben hochzuladen. Ursprüglich habe ich auch Scripte erstellt, mit denen es möglich ist, einzelne Tracks oder ganze Alben aus dem Verzeichnis inbox und inbox/album zu importieren. Diese beiden Möglichkeiten habe ich inzwischen wieder deaktiviert, da ein upload viel komfortabler ist.

Zum Jahreswechsel 2023/2024 habe ich dieses GiantDisc-Web-Interface von openSuSE 13.3 auf Ubuntu Server 20.04 migriert. Da hat einen recht großen Sprung bei PHP und bei der Datenbank gehabt. Es mussten also recht viele Anpassungen in den Scripten durchgeführt werden. Als Hardware benutze ich einen ausgedienten ESPRIMO Q900 mit einer 500GB SSD. Um die CS's einzulesen verwende ich ein recht einfaches DVD-Laufwerk, welches per USB angeschlossen wird. Als Neuerung gibt es auch die Möglichkeit nicht nur MP3-Dateien zu erstellen, sondern wahlweise MP3-, OGG-, FLAC- oder OPUS-Dateien.

Schritt für Schritt:

Nach der Grundinstallation, dem Aktivieren von SSH und dem Vergeben eines root-Passwortes (sudo passwd root), wird die Installation erstmal auf den neusten Stand gebracht:

sudo apt update
sudo apt upgrade

Als nächstes wird der Webserver installiert:

apt install -y apache2 apache2-utils
systemctl status apache2
apache2 -v

ufw app list
ufw allow 'Apache'
ufw status

hostname -I

Für den ersten Test, kann man jetzt die IP-Adresse des Webservers im Browser eingeben und sollte die Default Page angezeigt bekommen.

Dann kommt die MariaDB dran:

apt install mariadb-server mariadb-client
systemctl status mariadb
mariadb --version
mysql_secure_installation

Ist dies geschehen, kann man sich um PHP kümmern. Ich habe mich für PHP 8.1 entschieden. Es ist aber durchaus möglich eine höher PHP-Version zu installieren:

apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install -y php8.1 libapache2-mod-php8.1 php8.1-cli
apt install -y php8.1-mysql php8.1-gd
apt install -y php8.1-{bcmath,bz2,cli,common,curl,gd,imap,intl,mbstring,mysql,opcache,readline,xml,zip}
a2enmod php8.1
systemctl restart apache2
php --version

Um zwischen den vorhandenen PHP-Versionen umschalten zu können gibt es diesen Befehl:

update-alternatives --config php

Damit ich die Datenbank per Browser anschauen und im Zweifelsfall auch manipulieren kann, habe ich noch phpMyAdmin installiert:

Dafür wird vorher noch unzip benötigt:

apt install unzip

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip
unzip phpmyadmin.zip
rm phpmyadmin.zip
mv phpMyAdmin-*-all-languages phpmyadmin
chmod -R 0755 phpmyadmin
Datei erstellen:
vi /etc/apache2/conf-available/phpmyadmin.conf

Diesen Inhalt einfügen:

# phpMyAdmin Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>

Dann noch ein paar Befehle eingeben:

a2enconf phpmyadmin
mkdir /usr/share/phpmyadmin
cp -R phpmyadmin /usr/share/
mkdir /usr/share/phpmyadmin/tmp/
chown -R www-data:www-data /usr/share/phpmyadmin/tmp/

Wenn man jetzt im Browser die IP-Adresse gefolgt von einem /phpmyadmin eingibt, sollte man schon mal die Anmeldeseite von phpMyAdmin zu sehen bekommen.

In den nächste Befehlen geht es um das Einrichten der Zugänge für die Datenbank.

mysql -u root
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
exit

Kennwort auf mysql für root vergeben:
mysql -u root -p

User admin für phpmyadmin anlegen:
create user admin@localhost identified by 'geheim';
grant all privileges on *.* to admin@localhost with grant option;
flush privileges;
exit;

Mit diesem User kann man sich jetzt auf der phpMyAdmin-Seite anmelden.

Im nächsten Schritt geht es darum die Scripte auf einen Webserver zu bringen.
Dazu wechsle ich mit cd /var/www/html/ in das Webserver-document-root-Verzeichnis.
Es wird mit mkdir music ein nuer Ordner erstellt.
In diesen Ordner wird der Inhalt des ZIP-Archivs per WinSCP hineinkopiert.
Danach mit den Befehlen chmod 777 -R music und chown nobody:nogroup -R music die nötigen Berechtigungen setzen.

Nun geht es um die Datenbank. Dazu sind der Reihe nach folgende Dinge einzugeben:

mysql -u root -p
Passwort eingeben
DROP DATABASE IF EXISTS GiantDisc;
CREATE DATABASE GiantDisc;
use GiantDisc;
CREATE USER 'music'@'localhost' IDENTIFIED BY 'music';
select * from mysql.user;
GRANT ALL PRIVILEGES ON GiantDisc . * TO 'music'@'localhost';
FLUSH PRIVILEGES;

Und mit diesem Befehl werden die Datenbanktabellen erstellt:

mysql -u root -p < create-tables.mysql

Ab jetzt sollte es möglich sein per http://ipadresse/music die erste Seite vom GiantDisc-Webinterface angezeigt zu bekommen.

Hier sind zwar noch jede Menge Fehler aufgelistet, die werden in den nächsten Schritten Stück für Stück beseitigt.

Dazu wird jetzt einfach die "Erforderliche Software von Drittanbietern" mit den folgenden Befehlen installiert:

apt install cdparanoia
apt install lame
apt install vorbis-tools
apt install flac
apt install cdtool
apt install mp3info
apt install cd-discid
apt -y install opus-tools

Als nächstes wird in das Verzeichnis /usr/bin gewechselt. Dort angekommen werden folgende Befehle ausgeführt:

chmod +s cdparanoia
chmod +s lame
chmod +s oggenc
chmod +s cd-discid
chmod +s metaflac
chmod +s eject
chmod +s opusenc
chmod +s mp3info
chmod +s chmod
chmod +s chown

Ist diese erfolgreich geschehen, wird Perl installiert:

apt-get install perl
a2enmod cgid
systemctl restart apache2

Danach muss nur noch die Datei music.pl aus /var/www/html/music nach /usr/lib/cgi-bin kopiert werden.

cp music.pl /usr/lib/cgi-bin/music.pl
chmod 755 /usr/lib/cgi-bin/music.pl

Da jetzt nur noch die roten Kreuzchen von der php.ini zu sehen sind, müssen an dieser noch ein paar Anpassungen durchgeführt werden. Dazu wechsle ich in das Verzeichnis /etc/php/8.1/apache2 und bearbeite mit vi die php.ini. Bei einer anderern PHP-Version wird sich auch das Verzeichnis ändern und wer mit einem anderen Editor arbeiten möchte, der darf dieses selbstverständlich gerne tun.

In der php.ini ändere ich folgende Zeilen:

upload_max_filesize = 100M
max_file_uploads = 40
post_max_size = 500M
max_execution_time = 90

Die Parameter für Upload sind für ein Upload von Audiodateien gedacht. Wer größere Dateien erwartet, der darf hier natürlich auch größere Werte eintragen. Danach mit einem Neustart von Apache abschließen:

systemctl restart apache2

Jetzt sollte das GiantDisc-Web-Interface funktionsfähig sein. Die einzige Ecke, an der es noch klemmen kann, ist das Ansprechen des CD-Laufwerks. Hier kann es sein, dass man in der Datei control_web.inc das richtige Gerät zuweisen muss. Ich selbst setze ja einen ausgedienten Esprimo Q900 mit eingebautem CD/DVD-Laufwerk ein. Diese Laufwerke altern aber und sind somit nicht mehr zum Einlesen von Audio-CDs zu gebrauchen. Deshalb setze ich ein externes CD/DVD-Laufwerk per USB ein. Somit sieht meine Konfiguration innerhalb der control_web.inc wie folgt aus:

CD-device / CD-Laufwerk
#$dev_cd ="/dev/cdrom";
#$dev_cd ="/dev/hdc";
#$dev_cd ="/dev/sda";
#$dev_cd ="/dev/scd0";
#$dev_cd ="/dev/sr0";
$dev_cd ="/dev/sr1";

Je nach Hardware, kann das zu verwendende Geräte ein anderes sein.


Die Sicherung der Daten vom GiantDisc-Web-Interface

Bei einer Sicherung ist es wichtig, dass zum Einen die Scripte und die darunter liegenden Verzeichnisse gesichert werden. Besonders wichtig sind die Verzeichnisse 00 und 01 und 02 in denen die Musikdateien und die Coverdateien liegen. Der weitere wichtige Punkt ist die Datenbank. Deshalb ist die Installation von phpMyAdmin so wichtig. Unter openSuSE hatte ich MySQLDumper verwendet um mit einem Mausklick ein vollständiges Backup zu erstellen und mit einem Mausklick einen älteren Datenbankzustand wieder herzustellen. Nur leider wird MySQLDumper nicht mehr weiter entwickelt.


Download

GD_Web_Interface_1_1.zip hochgeladen am: 10. April 2024

Hier geht es zur Anleitung auf Basis von openSuSE 12.3: GDCI bis Februar 2020

Ältere Versionen

GD_Web_Interface_1_0.zip

 


Was bisher geschah

history.txt

 

nach oben