Vendredi 23 novembre 2018

Airsonic (fork subsonic)

Airsonic est un serveur média libre et open source. Il s’agit d’un streamer multimédia hébergé sur le Web qui offre un accès omniprésent à votre musique, facilite le partage de votre musique avec vos amis ou l’écoute de votre musique pendant que vous travaillez. Airsonic a été créé avec Java comme une fourchette complète du Subsonic, et conçu pour gérer de très grandes collections de musique et optimisé pour le flux MP3. Airsonic fonctionne avec tous les formats audio ou vidéo qui peuvent être diffusés en continu sur le protocole HTTP, y compris WMA, FLAC, APE, etc.

Dans ce tutoriel, comment installer Airsonic sur Ubuntu 18.04 ,comment déployer l’installation autonome d’Airsonic en utilisant le package .WAR, exécuter Airsonic en tant que service, puis configurer le serveur web Nginx en tant que reverse proxy pour Airsonic.

Conditions préalables

  • Debian Stretch
  • Privilèges racine (root)

Les étapes

  • Installer Java OpenJDK OpenJDK
  • Installer et configurer AirSonic
  • Générer un nouveau certificat SSL Letsencrypt Certificate
  • Configurer Nginx en tant que Reverse Proxy
  • Configurer le pare-feu
  • Tests

Installer Java OpenJDK

Airsonic est un logiciel d’application basé sur Java, nous devons donc installer Java sur le serveur, et cela nécessite l’installation de la série OpenJDK 1.8x.

Installation paquet openjdk-8-jre

sudo apt install openjdk-8-jre

Vérification version Java OpenJDK

java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-1~deb9u1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

Si plusieurs versions installées ,définir JAVA_HOME par défaut en utilisant la commande ci-dessous et choisissez la bonne version (1.8.x) :

sudo update-alternatives --config java

Installer et configurer Airsonic

Airsonic fournit différents packs d’installation, pour ce guide, nous utiliserons l’installation autonome WAR.
Créer un nouvel utilisateur nommé ‘airsonic’, et créez un nouveau répertoire ‘/opt/airsonic’.

sudo useradd airsonic
sudo mkdir -p /opt/airsonic

Se rendre dans le dossier ‘/opt/airsonic’ et télécharger le paquet Airsonic ‘.WAR’

sudo -s
cd /opt/airsonic
wget https://github.com/airsonic/airsonic/releases/download/v10.1.1/airsonic.war

Et changer le propriétaire du répertoire’/opt/airsonic’ pour l’utilisateur et le groupe ‘airsonic’.

chown -R airsonic:airsonic /opt/airsonic

Le paquet binaire Airsonic ‘.WAR’ a été téléchargé, nous devons créer un fichier de service ‘airsonic.service’ pour Airsonic

nano /etc/systemd/system/airsonic.service

Coller la configuration de service Airsonic suivante et sauver le fichier

[Unit]
Description=Airsonic Media Server
After=remote-fs.target network.target
AssertPathExists=/opt/airsonic

[Service]
Type=simple
Environment="JAVA_JAR=/opt/airsonic/airsonic.war"
Environment="JAVA_OPTS=-Xmx700m"
Environment="AIRSONIC_HOME=/opt/airsonic"
Environment="PORT=8080"
Environment="CONTEXT_PATH=/airsonic"
Environment="JAVA_ARGS="
EnvironmentFile=-/etc/sysconfig/airsonic
ExecStart=/usr/bin/java \
          $JAVA_OPTS \
          -Dairsonic.home=${AIRSONIC_HOME} \
          -Dserver.context-path=${CONTEXT_PATH} \
          -Dserver.port=${PORT} \
          -jar ${JAVA_JAR} $JAVA_ARGS
User=airsonic
Group=airsonic

[Install]
WantedBy=multi-user.target

Rechargez le système systemd et créez un nouveau fichier de configuration par défaut dans le répertoire ‘/etc/default’.

systemctl daemon-reload
nano /etc/default/airsonic

Coller la configuration airsonic par défaut suivante et sauver le fichier

# Set the location of the standalone war to use
JAVA_JAR=/opt/airsonic/airsonic.war

# Set any java opts separated by spaces
JAVA_OPTS=-Xmx700m

# Set a different location for the airsonic home.
# If this path is /opt/libresonic or even contains "libresonic",
# the data from a previous libresonic can be used as is (i.e. without
# renaming libresonic.properties,db/libresonic*, etc
AIRSONIC_HOME=/opt/airsonic

# Change the port to listen on
PORT=8080

# Change the path that is listened to on
CONTEXT_PATH=/airsonic

# Add any java args. These are different than JAVA_OPTS in that
# they are passed directly to the program. The default is empty:
#JAVA_ARGS=

# Note that there are several settings for spring boot, not explicitly listed
# here, but can be used in either JAVA_OPTS or JAVA_ARGS. The full list
# can be found here:
# https://docs.spring.io/spring-boot/docs/1.4.5.RELEASE/reference/htmlsingle/#common-application-properties
# For example to set debug across the board:
#JAVA_ARGS=--debug

# Or to change the IP address that is listened to:
JAVA_ARGS=--server.address=127.0.0.1

Démarrer maintenant le service Airsonic et activer le pour qu’il se lance à chaque fois au démarrage du système.

systemctl start airsonic
systemctl enable airsonic

L’installation’stand-alone’ d’airsonic est terminée, vérifier à l’aide de la commande netstat.

netstat -plntu
tcp6       0      0 :::8080                 :::*                    LISTEN      13841/java          

Et vous obtiendrez le port par défaut Airsonic’8080’ sur l’état’LISTEN’, utilisé par le service Java Airsonic.

Certificats Let’s Encrypt

Configurer Nginx en tant que Reverse proxy

Configurer nginx en tant que reverse proxy pour le logiciel Airsonic sur le port 8080.

Créer dans le dossier /etc/nginx/conf.d/ un nouveau fichier d’hôte virtuel ‘music.cinay.eu.conf’.

nano /etc/nginx/conf.d/music.cinay.eu.conf

Coller la configuration suivante.

server {
    listen 80;
    listen [::]:80;
    server_name music.cinay.eu;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen              443 ssl;
    server_name         music.cinay.eu;
    ssl_certificate     /etc/ssl/private/crt.pem;
    ssl_certificate_key /etc/ssl/private/key.pem;

    location / {
      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 https;
      proxy_set_header X-Forwarded-Host  $http_host;
      proxy_set_header Host              $http_host;
      proxy_max_temp_file_size           0;
      proxy_pass                         http://127.0.0.1:8080;
      proxy_redirect                     http:// https://;
    }
}

Vérifier

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrer ‘nginx’

systemctl restart nginx