How to Install AirSonic on Ubuntu 18.04 LTS

AirSonic is a free and open source media streaming server. In this tutorial, I will guide you through the process of deploying an AirSonic server instance from scratch on a Ubuntu 18.04 LTS server instance.

Prerequisites

  • A newly deployed Vultr Ubuntu 18.04 LTS server instance with at least 2GB of memory. Say it has an IPv4 address 203.0.113.1.
  • A sudo user.
  • A domain airsonic.example.com being pointed to the server instance mentioned above.

Step 1: Basic system configuration

Create a swap file

In order to get better system performance, it's recommended to create a 2GB (2048M) swap file on a machine with 2GB of memory:

sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile   none    swap    sw    0   0' | sudo tee -a /etc/fstab
free -m

Note: If you are using a different server size, the suitable size of the swap partition may vary.

Setup the machine's hostname and fully qualified domain name (FQDN)

Properly setting up a hostname and an FQDN for the machine is required for enabling HTTPS security with a Let's Encrypt SSL certificate.

The following commands will setup a hostname airsonic and an FQDN airsonic.example.com for the machine:

sudo hostnamectl set-hostname airsonic
sudo sed -i 's/^127.0.1.1.*$/127.0.1.1 airsonic.example.com airsonic/g' /etc/hosts

The results can be confirmed with the following:

hostname
hostname -f

Modify firewall rules in order to allow inbound SSH, HTTP, and HTTPS traffic

Setup UFW firewall rules for running an AirSonic server:

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

When you see the prompt Command may disrupt existing ssh connections. Proceed with operation (y|n)?, input y and then press ENTER.

Update the system

For security and performance purposes, it's necessary to update the Ubuntu 18.04 LTS system to the latest status:

sudo apt update
sudo apt upgrade -y && sudo shutdown -r now

During the upgrade, you may be informed that the currently installed version of grub configuration file has been locally modified. Since we are not actually responsible for the modification, use the UP arrow to highlight the install the package maintainer's version option, and then press ENTER.

After the system reboots, log back in as the same sudo user to move on.

Step 2: Install OpenJDK Java Runtime Environment (JRE) 8

Install OpenJDK JRE 8 and then confirm the results:

sudo apt install -y openjdk-8-jre-headless
java -version

The output of the second command will be similar to the following:

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

In addition, you need to setup the JAVA_HOME environment variable as follows:

echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile
source /etc/profile

Step 3: Install AirSonic

AirSonic can be deployed using various methods. In this tutorial, we will install AirSonic using the AirSonic WAR package.

Create a dedicated user and a dedicated group, both named airsonic:

sudo groupadd airsonic
sudo mkdir /var/airsonic
sudo useradd -s /bin/nologin -g airsonic -d /var/airsonic -M airsonic

Download the latest AirSonic WAR package, AirSonic v10.1.2:

cd /var/airsonic
sudo wget https://github.com/airsonic/airsonic/releases/download/v10.1.2/airsonic.war
sudo chown -R airsonic:airsonic /var/airsonic

Download the predefined AirSonic systemd unit files and then start the AirSonic service:

sudo wget https://raw.githubusercontent.com/airsonic/airsonic/master/contrib/airsonic.service -O /etc/systemd/system/airsonic.service
sudo wget https://raw.githubusercontent.com/airsonic/airsonic/master/contrib/airsonic-systemd-env -O /etc/default/airsonic
sudo systemctl daemon-reload
sudo systemctl start airsonic.service
sudo systemctl enable airsonic.service

Note: You may need to review and customize the two AirSonic systemd unit files on your own machine.

Step 4: Test the installation

AirSonic will be up and running now, listening on port 8080. You can use the following command to confirm that this is the case:

ps -ef|grep airsonic

You can also directly visit the AirSonic site, but you need to temporarily modify firewall rules first:

sudo ufw allow in 8080/tcp

Next, point your favorite web browser to http://203.0.113.1:8080/airsonic, and then use the default credentials listed below to log in:

  • Username: admin
  • Password: admin

For security purposes, you should change the administrator's password immediately after logging in.

Once the result is confirmed, restrict access on port 8080 again:

sudo ufw deny in 8080/tcp

Step 5: Obtain a Let's Encrypt SSL certificate for your AirSonic site

For security purposes, it's recommended to enable HTTPS security on every newly created website. The most convenient practice for that is to deploy a Let's Encrypt SSL certificate as follows.

Install the Certbot utility:

sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:certbot/certbot
sudo apt update
sudo apt install -y certbot

Use Certbot to apply for a Let's Encrypt SSL certificate for the domain airsonic.example.com:

sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d airsonic.example.com

The certificate and chain will be saved at the following:

/etc/letsencrypt/live/airsonic.example.com/fullchain.pem

The key file will be saved here:

/etc/letsencrypt/live/airsonic.example.com/privkey.pem

The Let's Encrypt SSL certificate is designed to expire in three months. You can setup a cron job to renew your certificates automatically:

sudo crontab -e

When you are prompted to select an editor, input 2 and then press ENTER to choose /usr/bin/vim.basic.

Next, press O, and add a new line as shown below:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Save and quit:

:wq!

This cron job will attempt to update the Let's Encrypt certificate every day at noon.

Step 6: Install Nginx as a reverse proxy

With the help of Nginx, you can both facilitate visitors' access, (so that they no longer need to input the 8080 port number), and enable HTTPS security on your AirSonic website.

Install Nginx using APT:

sudo apt install -y nginx

Next, create a config file for AirSonic:

cat <<EOF | sudo tee /etc/nginx/sites-available/airsonic.conf
# Redirect HTTP to HTTPS
server {
    listen      80;
    server_name airsonic.example.com;
    return      301 https://\$server_name\$request_uri;
}

server {

    # Setup HTTPS certificates
    listen       443 default ssl;
    server_name  airsonic.example.com;
    ssl_certificate      /etc/letsencrypt/live/airsonic.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/airsonic.example.com/privkey.pem;

    # Proxy to the Airsonic server
    location /airsonic {
        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://;
    }
}
EOF

Create a symbolic link pointing to the newly created AirSonic Nginx config file:

sudo ln -s /etc/nginx/sites-available/airsonic.conf /etc/nginx/sites-enabled/

Restart Nginx in order to put your configuration into effect:

sudo systemctl restart nginx.service
sudo systemctl enable nginx.service

Finally, point your favorite web browser to http://airsonic.example.com/airsonic or https://airsonic.example.com/airsonic to start exploring your AirSonic website.



Leave a Comment

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.