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. Nicht vergessen zu erwähnen, der Menüpunkt einzelne Musikstücke, unter welchem alle Musikstücke aufgelistet werden, die keinem Album zugeordnet sind. Mit der Schaltfläche Record 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 es einen recht großen Sprung bei PHP und bei der Datenbank gegeben. 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 CD'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-, OPUS- oder M4A-Dateien.

Damit ich auf der sicheren Seite bin, habe ich diese Anleitung im September 2026 mit Ubuntu Server 26.04 LTS getestet und diverse Fehler in der Anleitung beseitigt und im Ordner database etwas älteres Gerümpel beseitigt. - Je nach dem, ob man vielleicht ältere Hardware einsetzt, kann es sinnvoll sein auch eine ältere Ubuntu-Version zu verwenden. - Jetzt geht es aber mit der Anleitung los:

Schritt für Schritt:

Nach der Grundinstallation, dem Aktivieren von SSH und dem Vergeben eines root-Passwortes (sudo passwd root), wird die IP-Adresse des Servers benötigt, falls sie nicht schon bei der Installation statisch vergeben wurde. Nötig ist die Adresse, um sich per Putty zu verbinden.

ip addr show

Danach wird die Installation erstmal auf den neusten Stand gebracht:

apt update
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:

sudo apt install php php-cli
sudo apt install php-mysql php-xml php-curl php-zip php-mbstring
sudo apt install libapache2-mod-php
sudo systemctl restart apache2
php --version

Wer mehrere PHP-Versionen installiert hat, der kann mit
update-alternatives --config php
zwischen den unterschiedlichen Versionen wechseln.

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/

Jetzt noch den Webserver neu starten:

systemctl restart apache2

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 den Webserver zu bringen.
Dazu wechsle ich mit cd /var/www/html/ in das Webserver-document-root-Verzeichnis.
Es wird mit mkdir music ein neuer Ordner erstellt. Danach: chmod 777 music.
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 und ich wechsle dafür in das
Verzeichnis: /var/www/html/music/database
Danach sind Zeile für Zeile folgende Befehle 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;
Exit

Und mit dem folgenden 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 aber 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 install opus-tool
apt install ffmpeg

Als nächstes wird in das Verzeichnis /usr/bin gewechselt. Dort angekommen werden folgende Befehle ausgeführt, damit der System-User www-data die Programme auch starten darf:

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
chmod +s ffmpeg

Seit Ubuntu-Server 24.04 sind noch weitere Ergänzungen nötig, damit eject und auch der Befehl ps von Apache 2 ausgeführt werden darf.

Dazu ist die Datei /etc/systemd/system/apache2.service.d/override.conf zu erstellen/bearbeiten und mit folgenden Zeilen zu versehen:

[Service]

PrivateDevices=false
ProtectSystem=false

DeviceAllow=/dev/sr0 rwm
DeviceAllow=/dev/sr1 rwm

ProtectProc=default

ProcSubset=all

 

Sind die Berechtigungen gesetzt, dann wird als nächstes 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:

cd /var/www/html/music
cp music.pl /usr/lib/cgi-bin/music.pl

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

Bei einer Synology DS218J liegt dieses Verzeichnis in /volume1/web/cgibin. 

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.5/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 = 150M
max_file_uploads = 50
post_max_size = 600M
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 über das Menü Optionen – Einstellungen. Dort angekommen, kann man das gewünschte CD/DVD-Laufwerk auswählen. Als Standard sollte /ev/cdrom ausreichen. Ich selbst setze ja einen ausgedienten Esprimo Q900 mit eingebautem CD/DVD-Laufwerk ein. Diese Laufwerke altern aber recht schnell und sind somit nicht mehr zum Einlesen von Audio-CDs zu gebrauchen. Deshalb setze ich ein externes CD/DVD-Laufwerk per USB ein. In diesem Fall setze ich /dev/sr1 ein.

Damit die Alben oder Spielelisten abgespielt werden können habe ich zwei Button vorgesehen.

Über den ersten Button werden M3U-Dateien erzeugt. Über den zweiten Button werden XSPF-Dateien erzeugt. Damit der Browser Firefox auch weiß, was er damit tun soll, müssen in Einstellungen - Anwendungen noch zwei Einträge hinzugefügt werden.

Bei mir werden mit den M3U-Dateien der Player foobar2000 gestartet und mit den XSPF-Dateien der VLC-Player. Grundsätzlich ist es möglich auch andere Player zu verwenden.

Bei anderen Browsen und auf anderen Systemen verstecken sich die Einstellungen an anderen Stellen. Es wäre ja langweilig wenn es einheitlich wäre.


Die Sicherung der Daten vom GiantDisc-Web-Interface

Bei einer Sicherung ist es wichtig, dass 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 war ursprünglich die Installation von phpMyAdmin so wichtig. Inzwischen habe ich unter Optionen ein paar Scripte integriert, um per Mausklick einen Datenbankdump zu erstellen. Genauso schnell ist es inzwischen auch möglich eine Backup wieder einzuspielen. Diese Möglichkeit ist besonders dann interessant, wenn man die Hardware migriert.

So nebenbei:
Zu der Zeit als ich noch openSuSE verwendet hatte, habe 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 und ist somit unter PHP8 und Maria-DB nicht verwendbar.


Partition anpassen

Wer eine Ubuntu Installtion erfolgreich durchgeführt hat, der wird sich wundern, wo denn die ganze Festplattenkapazität geblieben ist. Denn wenn man die Partion wärend der Installation nicht anpasst, dann wird ein großer Teil der Platte ungenutzt bleiben. Die lässt sich aber nachträglich ändern. Um einen Überblick zu bekommen gibt man folgenden Befehl ein:

vgdisplay

Die interessanten Angaben sind dann Alloc PE / Size für die bisher genutze Partitionsgröße
und Free PE / Size für die bisher nicht genutzte Kapazität.

Um einen genaueren Überblick über die bisher genutzte Volum-Gruppe zu bekommen kann man diesen Befehl eingeben:

lvdisplay

Möchte man die vollständige Kapazität seine Platte dieser Volum-Gruppe zuweisen, sind dann zwei Befehle notwendig:

lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv


Alte Hardware

Da ich bei mir etwas ältere Hardware einsetze, führt dies zu Problemen, wenn sich der Kernel mit der Zeit updatet. Diese Update oder Upgrades führt Ubuntu meist unbemerkt im Hintergrund durch. In den meisten Fällen ist dies auch unproblematisch. Hin und wieder kommt es aber vor, dass ein solches Upgrade bei einem Neustart zu einem "Kernel panic" führt. Man kann sich glücklich schätzen, wenn man noch in der Auswahl einen funktionierenden Kernel hat. Ist dies nicht mehr der Fall, dann steht mal wirklich blöd da. Um dies zu verhindern, muss man im Verzeichnis /etc/apt/apt.conf.d die Datei 20auto-upgrades bearbeiten. Bei mir sieht der Inhalt der Datei dann wie folgt aus:

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

Hinweis: Upgrade sind grundsätzlich wichtig. Diese Maßnahme macht nur bei älterer Hardware Sinn, die von neueren Kernel nicht unterstützt werden.

Eine weitere sinnvolle Maßnahme um Datenverlust vorzubeugen sind regelmäße Sicherungen der Systemplatte. Dazu setze ich Macrium Reflect ein. Alternativ kann man natürlich auch Acronis einsetzen.

Alternativ zu der hier beschriebenen Maßnahme ein Kernel-Update zu verhindern, gibt es inzwischen auch andere Möglichkeiten Paket- und Kernel-Updates zu blockieren.


Herunterfahren des Servers per Browser

Um dem Webserver das Recht geben, die Maschine herunter zu fahren,
muss eine Zeile in die /etc/sudoers eingetragen werden. Am Einfachsten geht dies mit nano.
sudo visudo
und dann am Ende der Datei
www-data ALL=(ALL) NOPASSWD: /usr/sbin/shutdown
eintragen.

Damit das Script beim Systemstart mit hochläuft:

sudo nano /etc/systemd/system/shutdown_server.service
und diesen Inhalt einfügen:

[Unit]
Description=Automatischer Start des Python Skripts
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/html/music
ExecStart=/usr/bin/python3 /var/www/html/music/shutdown_server.py
Restart=always

[Install]
WantedBy=multi-user.target

 

Automatisches Starten des Scripts

sudo systemctl daemon-reload
sudo systemctl enable shutdown_server.service
sudo systemctl start shutdown_server.service

 


Download

GD_Web_Interface_1_2_4.zip hochgeladen am: 28. September 2026
Seit Oktober 2026 habe ich das GiantDisc-Web-Interface auf GitHub Hochgeladen.
Dort werden die Änderungen auch regelmäßiger aktualisiert.

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

Ältere Versionen

GD_Web_Interface_1_2_3.zip hochgeladen am: 04. Juni 2026

GD_Web_Interface_1_2_2.zip hochgeladen am: 18. März 2025

GD_Web_Interface_1_2_1.zip hochgeladen am: 10. Februar 2025

GD_Web_Interface_1_2.zip hochgeladen am: 16. Juli 2024

GD_Web_Interface_1_1.zip

GD_Web_Interface_1_0.zip

 


Was bisher geschah

history.txt

 

nach oben