Benutzer-Werkzeuge

Webseiten-Werkzeuge


ubuntu:subsonic

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ubuntu:subsonic [2019/09/06 21:19] – [Installation im Schnelldurchgang] Ergänzung Sebastian Hetzelubuntu:subsonic [2024/12/28 14:32] (aktuell) – [DB-Connection-Timeout erhöhen] angelegt Sebastian Hetzel
Zeile 10: Zeile 10:
 # aptitude install openjdk-8-jre # aptitude install openjdk-8-jre
 </code> </code>
 +
 +=== Optionale Tools ===
 +
 +Um Musikdateien direkt auf dem Server bearbeiten zu können, empfiehlt es sich, folgende Helferlein ebenfalls zu installieren:
 +
 +<code>
 +# aptitude install id3 id3v2 eyed3
 +</code>
 +
  
 Nun kann das Installationspaket heruntergeladen werden, welches über die nachfolgende Webseite bezogen werden kann: Nun kann das Installationspaket heruntergeladen werden, welches über die nachfolgende Webseite bezogen werden kann:
Zeile 157: Zeile 166:
 ===== Nginx Reverse Proxy ===== ===== Nginx Reverse Proxy =====
  
-Inhalt folgt.+<file |h /etc/nginx/sites-available/subsonic.meine-domain.de > 
 +server { 
 +        server_name subsonic.meine-domain.de; 
 +        location / { 
 +                proxy_pass http://127.0.0.1:4040; 
 +                proxy_set_header Host $http_host; 
 +                proxy_set_header X-Real-IP $remote_addr; 
 +                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 +                proxy_set_header X-Forwarded-Proto $scheme; 
 +                proxy_redirect http:// https://; 
 +        } 
 + 
 + 
 +    listen 443 ssl; # managed by Certbot 
 +    ssl_certificate /etc/letsencrypt/live/subsonic.meine-domain.de/fullchain.pem; # managed by Certbot 
 +    ssl_certificate_key /etc/letsencrypt/live/subsonic.meine-domain.de/privkey.pem; # managed by Certbot 
 +    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 
 +    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot 
 + 
 + 
 +    add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot 
 + 
 + 
 +    ssl_trusted_certificate /etc/letsencrypt/live/subsonic.meine-domain.de/chain.pem; # managed by Certbot 
 +    ssl_stapling on; # managed by Certbot 
 +    ssl_stapling_verify on; # managed by Certbot 
 + 
 +
 +server { 
 +    if ($host = subsonic.meine-domain.de) { 
 +        return 301 https://$host$request_uri; 
 +    } # managed by Certbot 
 + 
 + 
 +        server_name subsonic.meine-domain.de; 
 +        listen 80; 
 + 
 + 
 +
 +</file> 
 +===== Apache Reverse Proxy ===== 
 + 
 +Pakete installieren: 
 +<code> 
 +# aptitude install apache2 
 +# a2enmod proxy proxy_http headers 
 +</code> 
 + 
 +Virtual Host konfigurieren: 
 +<file | /etc/apache2/sites-available/subsonic-proxy.conf> 
 +<VirtualHost *:80> 
 +   ServerName subsonic.your-domain.de 
 +   ErrorDocument 404 /404.html 
 +   DocumentRoot /var/www/subsonic 
 +   ProxyPass / http://localhost:4040/ 
 +   ProxyPassReverse / http://localhost:4040/ 
 +   Header always unset X-Frame-Options 
 +</VirtualHost> 
 +</file> 
 + 
 +Virtual Host aktivieren: 
 +<code> 
 +# a2ensite subsonic-proxy 
 +</code> 
 + 
 +SSL mittels Certbot aktivieren. [[https://wiki.sebastianhetzel.net/ubuntu:apache_webserver#https_mit_let_s_encrypt|Die Installation von Certbot ist hier beschrieben.]] 
 +<code> 
 +# certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple --email your-email-address -d subsonic.your-domain.de 
 +</code>
 ===== Update der Applikation ===== ===== Update der Applikation =====
  
Zeile 179: Zeile 256:
  
 Subsonic speichert alle erstellten Playlists in seiner internen Datenbank. Es kann zwar jede Playlist als M3U-File über das Webinterface exportiert werden. Als Backupjob wäre dieses Vorgehen jedoch unbrauchbar. Subsonic speichert alle erstellten Playlists in seiner internen Datenbank. Es kann zwar jede Playlist als M3U-File über das Webinterface exportiert werden. Als Backupjob wäre dieses Vorgehen jedoch unbrauchbar.
-Es bleibt nur die Datenbank zu sichern (leider ist dieses Vorgehen nicht dokumentiert) oder die Playlists über die REST-API zu exportierten (diese ist sehr gut dokumentiert). Dies kann mit Hilfe des Python-Skripts SubsonicTools erledigt werden.+Es bleibt nur die Datenbank zu sichern (leider ist dieses Vorgehen nicht dokumentiert) oder die Playlists über die REST-API zu exportieren (diese ist sehr gut dokumentiert). Dies kann mit Hilfe des Python-Skripts SubsonicTools erledigt werden.
 > https://github.com/janjonas/SubsonicTools > https://github.com/janjonas/SubsonicTools
  
Zeile 237: Zeile 314:
 Python 2.7.15+ Python 2.7.15+
 </code> </code>
 +
 +==== Verfügbare Python-Module auflisten ====
 +
 +<code>
 +# python -c "help('modules')"
 +</code>
 +
 +===== Automatischer Import der Playlists =====
 +
 +Dazu hat Subsonic einen eigenen Ordner auf dem Filesystem. Der Pfad ist in der Konfiguration hinterlegt:
 +
 +{{:ubuntu:subsonic_settings_playlist-folder.png|}}
 +
 +Die M3U-Files müssen in diesem Ordner abgelegt werden. Dabei ist wichtig, dass die Pfade in den M3U-Dateien stimmen. Beim nächsten Folder-Scan wird auch der Playlist-Ordner berücksichtigt und die M3U-Dateien werden zu Playlists in Subsonic umgewandelt.
 +===== Arbeiten auf der Datenbank (Built-in HSQLDB) =====
 +
 +Als Adminuser kann unter https://[subsonic-server.url]/db.view ein Webinterface aufgerufen werden, dass es ermöglicht, SQL-Statements ausführen zu lassen.
 +
 +Subsonic arbeitet von Hause aus mit einer HSQLDB. Diese ist dokumentiert unter http://hsqldb.org/.
 +
 +{{:ubuntu:hsqldb_webfrontend.png|}}
 +==== Alle Tabellen anzeigen lassen ====
 +
 +<code |sql >
 +SELECT * FROM INFORMATION_SCHEMA.SYSTEM_TABLES WHERE TABLE_TYPE='TABLE';
 +</code>
 +
 +==== Alle Lieder einer Playlist anzeigen lassen ====
 +
 +Die PLAYLIST_ID=64 muss entsprechend geändert werden.
 +
 +<code |sql >
 +SELECT PLAYLIST_FILE.ID, MEDIA_FILE.PATH, MEDIA_FILE.ARTIST,MEDIA_FILE.TITLE FROM MEDIA_FILE left outer join PLAYLIST_FILE on PLAYLIST_FILE.MEDIA_FILE_ID = MEDIA_FILE.ID where PLAYLIST_ID=64 ORDER BY ID DESC;
 +</code>
 +
 +==== Anzahl Lieder inenrhalb einer Playlist ermitteln ====
 +
 +<code |sql>
 +select count(*) from PLAYLIST_FILE where playlist_id=64;
 +</code>
 +
 +===== Externe Datenbank nutzen =====
 +
 +Es werden unterstützt
 +  * MySQL / MariaDB
 +  * PostgreSQL
 +
 +Eine Installation in eine PostgreSQL habe ich nicht ausprobiert. Daher sind diese Notizen alle auf **MariaDB / MySQL** bezogen!
 +
 +Einfach als Startparameter übergeben:
 +
 +''--db=<JDBC URL>'' unter SUBSONIC_ARGS in ''/etc/default/subsonic'' (Ubuntu/Debian):
 +
 +<code>SUBSONIC_ARGS="--max-memory=1500 --host=127.0.0.1 --port=4040 --db=jdbc:mysql://127.0.0.1:3306/subsonic?user=subsonic_user&password=xxx&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&requireSSL=false"</code>
 +
 +===== Datenbank und User anlegen =====
 +
 +<code |sql>
 +CREATE DATABASE IF NOT EXISTS subsonic;
 +CREATE USER 'subsonic_server'@localhost IDENTIFIED BY 'xxx';
 +GRANT ALL PRIVILEGES ON 'subsonic'.* TO 'subsonic_server'@localhost;
 +FLUSH PRIVILEGES;
 +</code>
 +
 +===== Probleme beim Scannen der Daten: Spaltengröße in DB anpassen =====
 +
 +<code |sql>
 +use subsonic;
 +ALTER TABLE album  MODIFY genre VARCHAR(256) NULL DEFAULT NULL;
 +ALTER TABLE  media_file MODIFY genre VARCHAR(256) NULL DEFAULT NULL;
 +ALTER TABLE genre MODIFY name VARCHAR(256) NOT NULL DEFAULT '';
 +quit;
 +</code>
 +
 +===== DB-Connection-Timeout erhöhen =====
 +
 +<file |h /etc/mysql/mariadb.conf.d/50-server.cnf>
 +[...]
 +wait_timeout = 7776000
 +[...]
 +</file>
ubuntu/subsonic.1567797590.txt.gz · Zuletzt geändert: von Sebastian Hetzel

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki