Airsonic unter FreeBSD installieren
Veröffentlicht am: 05.04.2021 18:00In 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!