airsonic
Folks these days would love to be able to stream their own music as effortlessly as Spotify, Apple Music, and other proprietary services, but often do not know how to do so. This tutorial is designed to provide a free software solution for music and media streaming. Before beginning, make sure to setup LAMP/TLS on Debian first, and you can use Apache Survival. I used the AirSonic documentation and some forums, etc., to set up a reverse proxy (on an alternate port 8081) to run an AirSonic media server instance. I should also mention that the media directories I am using are simultaneously hosted within a Nextcloud instance on the same localhost. The two services work in unison flawlessly and here are my findings and instructions:
sudo apt install tomcat9 cd /etc/tomcat9/ nano server.xml
Change port to needed port (8081)
wget https://github.com/airsonic-advanced/airsonic-advanced/releases/download/11.0.0-SNAPSHOT.20230217142243/airsonic.war mv airsonic.war /var/airsonic/ gpg --keyserver keyserver.ubuntu.com --recv 0A3F5E91F8364EDF wget https://github.com/airsonic/airsonic/releases/download/v10.5.0/artifacts-checksums.sha.asc gpg --verify artifacts-checksums.sha.asc sha256sum -c artifacts-checksums.sha.asc sudo rm /var/lib/tomcat9/webapps/airsonic.war sudo rm -R /var/lib/tomcat9/webapps/airsonic/ sudo rm -R /var/lib/tomcat9/work/* sudo mkdir /var/airsonic/ sudo chown -R $USER:$USER /var/airsonic/ cd /var/airsonic/ ln -s /home/nextclouddata/username/files/Music/Masters music sudo systemctl stop tomcat9.service screen java -jar -Dserver.port=8081 /var/airsonic/airsonic.war <ctrl-a-d>
Once you detach from the screen, this will remain running until reboot. Navigate to:
localhost:8081
Or, if you need to set up your instance for external access and already set up LAMP or FEMP or something equivalently secure, then you would navigate to:
https://domain.com
Personally, I do leverage external access and I use apache and these virtual host configurations: Air Sonic Virtual Host Configuration Examples. Also, I will organize this later, but here is how to make sure the transcoder is working:
mkdir /var/airsonic/transcode cd transcode/ ln -s /usr/bin/ffmpeg chown -h user:user ffmpeg ls -alh <lrwxrwxrwx 1 user user 15 mai 4 19:57 ffmpeg -> /usr/bin/ffmpeg>
Okay, so AirSonic is deprecated and now there is AirSonic advanced. You can download the current .jar
files here:
https://github.com/airsonic-advanced/airsonic-advanced/releases wget https://github.com/airsonic-advanced/airsonic-advanced/releases/download/11.0.0-SNAPSHOT.20220625052932/airsonic.war
Once you run the .war it will create all necessary sub folders. I am still not clear on how to migrate meta-data between instances. The wget above is for the .war that is current as of this post; make sure to always check. Also, if your server stops/reboots, then you need a script to make sure that airsonic is running, and if not, to start it. To do that, I created the following:
#!/bin/sh DATE=`date +"%Y%m%d-%H:%M:%S"` if ps -ef | grep "java -jar" > /home/sexa/Desktop/airsonic-tmp.log tail -n -2 /home/sexa/Desktop/airsonic-tmp.log | grep "java -jar -Dserver.port=8081 /var/airsonic/airsonic.war" then echo "Arisonic was running at $DATE" >> /home/sexa/Desktop/airsonic-ok.log else export TERM='vt100' su - airsonic <<SHT script screen -S airsonic bash -c "java -jar -Dserver.port=8081 /var/airsonic/airsonic.war; bash" SHT fi
I tested this and it runs flawlessly. Don't forget these mods when migrating or setting up a new instance.
sudo a2enmod proxy_http sudo a2enmod proxy
— oemb1905 2022/10/15 23:21