Ceci est une ancienne révision du document !


Subsonic

Il existe dorénavant, un fichier .deb sur le site de subsonic.org pour une installation plus simple.

Subsonic est un serveur de contenu audio et vidéo en streaming avec une interface web (via http ou https) et une gestion de plusieurs utilisateurs, ainsi que l'authentification LDAP.

La musique est encodée à la volée, par défaut grâce à ffmpeg et lame en MP3 pour l'audio et FLV pour la vidéo. Ces paramètres se changent très aisément. Un grand nombre de format est reconnu par défaut, ainsi que les tags correspondant avec la possibilité d'édition, notamment pour les formats MP3, AAC, OGG, FLAC, WMA et APE.

Subsonic est traduit dans de nombreuses langues, dont le français, avec 24 thèmes par défaut. Il offre la possibilité de lire la musique dans le lecteur web, comme dans un lecteur externe (avec gestion des playlists), de contrôler la musique à distance grâce à votre téléphone, ainsi que de télécharger la musique, piste par piste, comme un album entier. Des applications existent pour Android, iPhone/iPad, Windows Phone 7/8, Windows, Mac, Linux et BlackBerry PlayBook.

Il y a une gestion de la bande passante en limitant le bitrate, la musique sera automatiquement réencodée avec le bon débit binaire.

Subsonic fonctionne sur la plupart des plateformes grâce à la technologie Java, notamment sur Windows, Mac, Linux et autres variantes Unix.

Subsonic est un logiciel open-source sous licence GPL.

Cette installation fonctionne pour Debian et Ubuntu.

via l'interface graphique

Télécharger le paquet .deb disponible sur la page suivante avec votre navigateur préféré : http://www.subsonic.org/pages/download.jsp.
Double-cliquer ensuite sur le fichier téléchargé, ceci lancera l'installation.

via la ligne de commande (version 4.9)

Ouvrez un terminal

wget http://freefr.dl.sourceforge.net/project/subsonic/subsonic/4.9/subsonic-4.9.deb

Puis installer le paquet

sudo dpkg -i subsonic-4.9.deb

post-installation

Le service n'est pas démarré automatiquement a la fin de l'installation, il faut le démarrer manuellement en ligne de commande

sudo service subsonic start

Le service sera automatiquement lancé au démarrage du système.

Pour changer le numéro de port, les paramètres de mémoire java ou autres paramètres de lancement, éditer la variable SUBSONIC_ARGS dans /etc/default/subsonic avec les droits d'administration. Pour redémarrer Subsonic, faire

sudo service subsonic restart

Subsonic est désormais disponible à l'adresse http://localhost:4040. Changer la langue en se rendant dans Settings>Personal, puis suivre les instructions de la page d'accueil. Une fois le ou les dossiers contenant les médias choisi, le service est fonctionnel. L'utilisation et la configuration sont très intuitives et ne présentent aucune difficulté particulière. Il existe différentes applications disponible sur le site officiel. Pour contrôler la musique à distance grâce à un téléphone, se rendre sur cette page : http://votre_ip_ou_votre_nom_de_domaine:4040/wap

En cas de problème, penser à regarder les logs dans /var/subsonic.

Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.

Il est à noter que Subsonic étant davantage reconnu comme un logiciel Open Source qu'un Logiciel Libre, un fork s'est mis en place sous le nom de Supersonic ici : https://github.com/Mach5/supersonic ; le forum de discussion à ce propos commence par là : http://forum.subsonic.org/forum/viewtopic.php?f=3&t=3521 Ce projet ne semble cependant plus soutenu. Un autre fork nommé Madsonic est toujours actif ici http://www.madsonic.org/

Subsonic requiert une licence (1 $ par mois) pour les fonctions suivantes :

  • streaming vidéo;
  • connexion depuis un smartphone grâce à l'application officielle.

Nous allons voir comment désactiver la licence. Pour cela, nous allons modifier le code Java et recompiler l'application.

Installation des outils nécessaires et récupération des sources

Installons les outils nécessaires :

sudo apt-get install maven openjdk-7-jdk subversion lintian dpkg-repack fakeroot

Récupérons la dernière version des souces :

svn checkout svn://svn.code.sf.net/p/subsonic/code/trunk subsonic-code

Les sources seront téléchargées dans le dossier subsonic-code.

Pour la version 5.0 :
svn checkout svn://svn.code.sf.net/p/subsonic/code/tags/release-5.0 subsonic-code

Modification des sources

Se placer dans le dossier contenant les sources :

cd subsonic-code

Le patch à appliquer est le suivant :

Index: subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java
===================================================================
--- subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java	(revision 4101)
+++ subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java	(working copy)
@@ -647,14 +647,11 @@
     }
 
     public boolean isLicenseValid() {
-        return isLicenseValid(getLicenseEmail(), getLicenseCode()) && licenseValidated;
+        return true;
     }
 
     public boolean isLicenseValid(String email, String license) {
-        if (email == null || license == null) {
-            return false;
-        }
-        return license.equalsIgnoreCase(StringUtil.md5Hex(email.toLowerCase()));
+        return true;
     }
 
     public LicenseInfo getLicenseInfo() {
@@ -1264,36 +1261,8 @@
     private void validateLicense() {
         String email = getLicenseEmail();
         Date date = getLicenseDate();
-
-        if (email == null || date == null) {
-            licenseValidated = false;
-            return;
-        }
-
         licenseValidated = true;
-
-        HttpClient client = new DefaultHttpClient();
-        HttpConnectionParams.setConnectionTimeout(client.getParams(), 120000);
-        HttpConnectionParams.setSoTimeout(client.getParams(), 120000);
-        HttpGet method = new HttpGet("http://subsonic.org/backend/validateLicense.view" + "?email=" + StringUtil.urlEncode(email) +
-                "&date=" + date.getTime() + "&version=" + versionService.getLocalVersion());
-        try {
-            ResponseHandler<String> responseHandler = new BasicResponseHandler();
-            String content = client.execute(method, responseHandler);
-            licenseValidated = content != null && !content.contains("false");
-            if (!licenseValidated) {
-                LOG.warn("License key is not valid.");
-            }
-            String[] lines = StringUtils.split(content);
-            if (lines.length > 1) {
-                licenseExpires = new Date(Long.parseLong(lines[1]));
-            }
-
-        } catch (Throwable x) {
-            LOG.warn("Failed to validate license.", x);
-        } finally {
-            client.getConnectionManager().shutdown();
-        }
+        return;
     }
 
     public synchronized void scheduleLicenseValidation() {
Index: pom.xml
===================================================================
--- pom.xml	(revision 4101)
+++ pom.xml	(working copy)
@@ -102,6 +102,13 @@
                 <module>subsonic-assembly</module>
             </modules>
         </profile>
+        <profile>
+            <id>debian</id>
+            <modules>
+                <module>subsonic-booter</module>
+                <module>subsonic-installer-debian</module>
+            </modules>
+        </profile>
 
     </profiles>
 
@@ -170,4 +177,4 @@
 
         </plugins>
     </build>
-</project>
\ No newline at end of file
+</project>

Pour appliquer un patch, copiez le contenu du patch ci-dessus dans un nouveau fichier nommé "no_license.patch", et placez-le dans le dossier "subsonic-code". Appliquez ensuite le patch grâce à la commande :

patch -p0 < no_license.patch

Il reste à compiler tout ça :

mvn -P debian install

Maven va télécharger de nombreux plugins, cela peut prendre du temps ;) Si tout s'est bien passé, vous devriez obtenir :

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Subsonic .......................................... SUCCESS [1.889s]
[INFO] Subsonic Main ..................................... SUCCESS [15.290s]
[INFO] Subsonic Booter ................................... SUCCESS [5.499s]
[INFO] Subsonic Installer for Debian ..................... SUCCESS [10.345s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 33.277s
[INFO] Finished at: Thu Jan 09 22:06:15 CET 2014
[INFO] Final Memory: 13M/106M
[INFO] ------------------------------------------------------------------------

Il ne nous reste plus qu'à installer le paquet créé :

sudo dpkg -i subsonic-installer-debian/target/subsonic*.deb

Ça marche pas...

Si vous avez un problème de compilation (le patch fonctionne pour la révision 4101, version 5.0 de Subsonic, mais il ne pourrait plus fonctionner pour les versions ultérieures), voici quelques explications qui vous permettront d'adapter les modifications vous-même.

Tout d'abord, dans le fichier "pom.xml", on ajoute le profil "debian", pour ne compiler que ce qui est nécessaire à Ubuntu, grâce aux lignes 105 à 111 (fichier exemple modifié, révision 4101) :

        <profile>
            <id>debian</id>
            <modules>
                <module>subsonic-booter</module>
                <module>subsonic-installer-debian</module>
            </modules>
        </profile>

Ensuite, pour le fichier de licence proprement dit "subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java", 3 méthodes sont modifiées :

    public boolean isLicenseValid() {
        return true;
    }

    public boolean isLicenseValid(String email, String license) {
        return true; 
    }
    
    private void validateLicense() {
        String email = getLicenseEmail();
        Date date = getLicenseDate();
        licenseValidated = true;
        return;
    }

Voici la source avec la licence active, et la source avec la licence désactivée (valable pour la révision 4101). Bon courage !


Contributeurs principaux : clement.analogue.

  • subsonic.1421238651.txt.gz
  • Dernière modification: Le 14/01/2015, 13:30
  • par 89.225.235.98