Airsonic unter FreeBSD installieren

Veröffentlicht am: 05.04.2021 18:00

In diesem Tutorial erkläre ich euch wie man Airsonic unter FreeBSD installiert.

Was ist Airsonic?

Es ist ein kostenloser, webbasierter Media-Streamer, der allgegenwärtigen Zugriff auf unserer Musik bietet. Airsonic wurde für sehr große Musiksammlungen entwickelt. Obwohl es für MP3-Streaming optimiert ist, funktioniert es für jedes Audio- oder Videoformat, das über HTTP gestreamt werden kann, z. B. AAC und OGG. Durch die Verwendung von Transcoder-Plug-Ins unterstützt Airsonic die direkte Konvertierung und das Streaming praktisch aller Audioformate, einschließlich WMA, FLAC, APE, Musepack, WavPack und Shorten.

Installation

Wir installieren zuerst wget, openjdk11 und ffmpeg mit dem folgenden Befehl:

root#: pkg install wget openjdk11 ffmpeg 

Als Nächstes legen wir mit den nächsten Befehlen die benötigten Verzeichnisse an und wechseln in das Verzeichnis /usr/local/airsonic:

root#: mkdir /var/airsonic/
root#: mkdir /usr/local/airsonic
root#: cd /usr/local/airsonic

Nun können wir mit wget Airsonic von deren Github Seite herunterladen.

root#:  wget https://github.com/airsonic/airsonic/releases/download/v10.6.2/airsonic.war 

Hinweis: Die aktuellste Version finden wir hier. Es gibt zwischenzeitlich auch einen Fork namens Airsonic Advanced was eine modernere Implementierung von Airsonic ist, mehr Informationen dazu finden wir hier.

Anschließend müssen wir noch einen Systemlink setzen, damit Airsonic den ffmpeg Transcoder finden kann.

root#: ln -s /usr/local/bin/ffmpeg /var/airsonic/transcode/ffmpeg

Wir können nun Airsonic testweise per Kommandozeile starten.

root#: /usr/local/bin/java -jar /usr/local/airsonic/airsonic.war

FreeBSD rc Skript erstellen

Als Nächstes wollen wir einen rc.d Skript für Airsonic erstellen.

root#: nano /etc/rc.d/airsonic =>   

#!/bin/sh
#
# $FreeBSD: airsonic $
#
# PROVIDE: airsonic REQUIRE: LOGIN KEYWORD: shutdown
#
# Configuration settings for airsonic in /etc/rc.conf:
#
# airsonic_enable (bool):
# Set to "NO" by default. Set it to "YES" to enable airsonic.
#
# airsonic_home (str):
# Set to "/var/airsonic" by default.
#
# airsonic_host (str):
# Set to "0.0.0.0" by default. Specify which IP address to listen to.
#
# airsonic_port (int):
# Set to "4040" by default. Specify which port to listen on for HTTP(S).
#
# airsonic_context_path (str):
# Set to "/" by default. Specify the last part of the airsonic URL, typically "/" or "/airsonic".
#
# airsonic_init_memory (int):
# Set to "192" by default. Specify the memory initial size (Java heap size) in megabytes.
#
# airsonic_max_memory (int):
# Set to "384" by default. Specify the memory limit (Java heap size) in megabytes.
#

. /etc/rc.subr
export LANG=en_EN.UTF-8
name=airsonic
desc="Airsonic is a free, web-based media streamer, providing ubiquitous access to your music"
rcvar=${name}_enable
pidfile="/var/run/${name}.pid"

load_rc_config "${name}"

: ${airsonic_enable:="NO"}
: ${airsonic_user:="root"} #: ${airsonic_user:="media"}
: ${airsonic_group:="wheel"} #: ${airsonic_group:="media"}
: ${airsonic_home:="/var/airsonic"}
: ${airsonic_address:="0.0.0.0"}
: ${airsonic_port:="8080"}
: ${airsonic_ssl:="NO"}
: ${airsonic_context_path:="/"}
: ${airsonic_init_memory:="1024"}
: ${airsonic_max_memory:="2048"}
: ${airsonic_chdir:="/usr/local/airsonic"}

start_cmd=airsonic_start
stop_cmd=airsonic_stop
restart_cmd=airsonic_restart
status_cmd=airsonic_status
start_precmd="export LC_CTYPE='en_US.UTF-8'"

# -Dairsonic.defaultMusicFolder=${airsonic_home}/artists \
# -Dairsonic.defaultUploadFolder=${airsonic_home}/incoming \
# -Dairsonic.defaultPodcastFolder=${airsonic_home}/podcasts \
# -Dairsonic.defaultPlaylistImportFolder=${airsonic_home}/playlists/import \
# -Dairsonic.defaultPlaylistExportFolder=${airsonic_home}/playlists/export \
# -Dairsonic.defaultPlaylistBackupFolder=${airsonic_home}/playlists/backup \

command="/usr/sbin/daemon -p ${pidfile} -f -u ${airsonic_user}"
procname="/usr/local/bin/java"
command_args="-Dairsonic.home=${airsonic_home} -Dserver.address=${airsonic_address} -Dserver.port=${airsonic_port} -Dserver.context-path=${airsonic_context_path} -Xms${airsonic_init_memory}m -Xmx${airsonic_max_memory}m -Djava.awt.headless=true -jar ${airsonic_chdir}/airsonic.war"
command_args1="-Dairsonic.home=${airsonic_home} -Dserver.port=${airsonic_port} -jar ${airsonic_chdir}/airsonic.war"

airsonic_start() {
echo "Starting Airsonic"
echo "${command} ${procname} ${command_args}"
cd ${airsonic_chdir}
${command} ${procname} ${command_args}
}

airsonic_stop() {
echo "Stopping Airsonic"
kill `cat ${pidfile}`
rm ${pidfile}
}

airsonic_restart() {
airsonic_stop
sleep 1
airsonic_start
}

airsonic_status() {
if airsonic_check; then
echo "Airsonic running"
return 1
else
echo "Airsonic not running"
return 0
fi
}

airsonic_check() {
if [ -f ${pidfile} ]; then
return 0
else
return 1
fi
}

run_rc_command "$1"

Das Skript müssen wir dann ausführbar machen.

root#: chmod +x /etc/rc.d/airsonic

Wir werden nun Airsonic aktivieren und starten.

root#: service airsonic enable
root#: service airsonic start

NGINX Konfiguration

Als Reverse Proxyserver benutzen wir NGINX. Wir legen nun unter /usr/local/etc/nginx/vhosts folgende Datei an:

root#: nano /usr/local/etc/nginx/vhosts/airsonic.conf => 

server {
    listen 80;

    server_name music.(domain);

    # Proxy to the Airsonic server
    location / {
        proxy_pass                          http://127.0.0.1:8080;
        proxy_http_version                 1.1;
        proxy_cache_bypass                 $http_upgrade;

        # Proxy headers
        proxy_set_header Upgrade           $http_upgrade;
        proxy_set_header Connection        "upgrade";
        proxy_set_header Host              $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_set_header X-Forwarded-Host  $host;
        proxy_set_header X-Forwarded-Port  $server_port;

        # Proxy timeouts
        proxy_connect_timeout              60s;
        proxy_send_timeout                 60s;
        proxy_read_timeout                 60s;
    }
}

In unser /etc/hosts fügen wir noch folgende Zeile hinzu.

root#: nano /etc/rc.conf => 

127.0.0.1   music.(domain)

Anschließend starten wir den NGINX neu.

root#: service nginx restart

Wenn wir nun die Adresse http://music.domain aufrufen, sehen wir nun den Airsonic Anmeldebildschirm.

Airsonic Clients

Wir können nun auf unserem PC die Weboberfläche benutzen, aber es gibt aber auch schöne Clients, die wir benutzen können, die ich euch gerne vorstellen möchte.

stmp

stmp ist ein Konsolen basierter Client für Airsonic. Das ganze können wir folgendermaßen installieren:

root#: pkg install stmp

Anschließend erstellen wir die Konfigurationsdatei.

root#: mkdir ~/.config/stmp

root#: nano stmp.toml =>

[auth]
username = 'admin'
password = '(password)'

[server]
host = 'https://music.(domain)'
Shortcut Funktionalität
1 Ordneransicht
2 Warteschlangenansicht
enter Lied abspielen (löscht die aktuelle Warteschlange)
d/delete Entfernt das aktuell ausgewählte Lied aus der Warteschlange
D Entfernt alle Songs aus der Warteschlange
a Album oder Song zur Warteschlange hinzufügen
p Abspielen oder Pause
-/= Lautstärke verringern / Lautstärke erhöhen

Sublime Music

Sublime Music ist ein nativer GTK-Client mit zahlreichen Funktionen für Subsonic-kompatible Server.

Für Sublime Music ist Python 3.8 erforderlich.

Als Erstes müssen wir python38 und py38-pip installieren.

root#: pkg install python38 py38-pip

Anschließend können wir Sublime Music mit pip installieren.

#: pip-3.8 install sublime-music

Auf der eigenen Website geantwortet? Sende eine Webmention!

Likes