AirSonic est un serveur de streaming multimédia gratuit et open source. Dans ce tutoriel, je vais vous guider à travers le processus de déploiement d'une instance de serveur AirSonic à partir de zéro sur une instance de serveur Ubuntu 18.04 LTS.
Conditions préalables
- Une instance de serveur Vultr Ubuntu 18.04 LTS nouvellement déployée avec au moins 2 Go de mémoire. Disons qu'il a une adresse IPv4
203.0.113.1
.
- Un utilisateur sudo .
- Un domaine
airsonic.example.com
pointé vers l'instance de serveur mentionnée ci-dessus.
Étape 1: configuration de base du système
Créer un fichier d'échange
Afin d'obtenir de meilleures performances du système, il est recommandé de créer un fichier d'échange de 2 Go (2048 Mo) sur une machine avec 2 Go de mémoire:
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
Remarque: Si vous utilisez une taille de serveur différente, la taille appropriée de la partition de swap peut varier.
Configurez le nom d'hôte de la machine et le nom de domaine complet (FQDN)
La configuration correcte d'un nom d'hôte et d'un nom de domaine complet pour la machine est requise pour activer la sécurité HTTPS avec un certificat SSL Let's Encrypt.
Les commandes suivantes configureront un nom d'hôte airsonic
et un nom airsonic.example.com
de domaine complet pour la 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
Les résultats peuvent être confirmés par les éléments suivants:
hostname
hostname -f
Modifier les règles de pare - feu afin de permettre d' arrivée SSH
, HTTP
et le HTTPS
trafic
Configurez les règles de pare-feu UFW pour exécuter un serveur AirSonic:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Lorsque l'invite s'affiche Command may disrupt existing ssh connections. Proceed with operation (y|n)?
, saisissez y
, puis appuyez sur ENTER.
Mettre à jour le système
Pour des raisons de sécurité et de performances, il est nécessaire de mettre à jour le système Ubuntu 18.04 LTS au dernier état:
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
Pendant la mise à niveau, vous pouvez être informé que la version actuellement installée du fichier de configuration grub a été modifiée localement. Étant donné que nous ne sommes pas réellement responsables de la modification, utilisez la UPflèche pour mettre en surbrillance l' install the package maintainer's version
option, puis appuyez sur ENTER.
Après le redémarrage du système, reconnectez-vous en tant que même utilisateur sudo pour continuer.
Étape 2: installer OpenJDK Java Runtime Environment (JRE) 8
Installez OpenJDK JRE 8, puis confirmez les résultats:
sudo apt install -y openjdk-8-jre-headless
java -version
La sortie de la deuxième commande sera similaire à la suivante:
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)
De plus, vous devez configurer la JAVA_HOME
variable d'environnement comme suit:
echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile
source /etc/profile
Étape 3: installer AirSonic
AirSonic peut être déployé en utilisant différentes méthodes. Dans ce didacticiel, nous allons installer AirSonic à l'aide du package AirSonic WAR.
Créez un utilisateur dédié et un groupe dédié, tous deux nommés airsonic
:
sudo groupadd airsonic
sudo mkdir /var/airsonic
sudo useradd -s /bin/nologin -g airsonic -d /var/airsonic -M airsonic
Téléchargez le dernier package AirSonic WAR, 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
Téléchargez les systemd
fichiers d'unité AirSonic prédéfinis , puis démarrez le service AirSonic:
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
Remarque: vous devrez peut-être revoir et personnaliser les deux systemd
fichiers d'unité AirSonic sur votre propre machine.
Étape 4: tester l'installation
AirSonic sera désormais opérationnel et écoutera sur le port 8080
. Vous pouvez utiliser la commande suivante pour confirmer que c'est le cas:
ps -ef|grep airsonic
Vous pouvez également visiter directement le site AirSonic, mais vous devez d'abord modifier temporairement les règles de pare-feu:
sudo ufw allow in 8080/tcp
Ensuite, pointez votre navigateur Web préféré sur http://203.0.113.1:8080/airsonic
, puis utilisez les informations d'identification par défaut répertoriées ci-dessous pour vous connecter:
- Nom d'utilisateur:
admin
- Mot de passe:
admin
Pour des raisons de sécurité, vous devez modifier le mot de passe de l'administrateur immédiatement après vous être connecté.
Une fois le résultat confirmé, restreignez à 8080
nouveau l' accès au port :
sudo ufw deny in 8080/tcp
Étape 5: Obtenez un certificat SSL Let's Encrypt pour votre site AirSonic
Pour des raisons de sécurité, il est recommandé d'activer la sécurité HTTPS sur chaque site Web nouvellement créé. La pratique la plus pratique consiste à déployer un certificat SSL Let's Encrypt comme suit.
Installez l'utilitaire Certbot:
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
Utilisez Certbot pour demander un certificat SSL Let's Encrypt pour le domaine airsonic.example.com
:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d airsonic.example.com
Le certificat et la chaîne seront enregistrés comme suit:
/etc/letsencrypt/live/airsonic.example.com/fullchain.pem
Le fichier clé sera enregistré ici:
/etc/letsencrypt/live/airsonic.example.com/privkey.pem
Le certificat SSL Let's Encrypt est conçu pour expirer dans trois mois. Vous pouvez configurer un travail cron pour renouveler automatiquement vos certificats:
sudo crontab -e
Lorsque vous êtes invité à sélectionner un éditeur, saisissez 2
, puis appuyez sur ENTERpour choisir /usr/bin/vim.basic
.
Ensuite, appuyez sur Oet ajoutez une nouvelle ligne comme indiqué ci-dessous:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Sauvegarder et quitter:
:wq!
Ce travail cron tentera de mettre à jour le certificat Let's Encrypt tous les jours à midi.
Étape 6: installer Nginx en tant que proxy inverse
Avec l'aide de Nginx, vous pouvez à la fois faciliter l'accès des visiteurs (afin qu'ils n'aient plus besoin de saisir le 8080
numéro de port) et activer la sécurité HTTPS sur votre site AirSonic.
Installez Nginx à l'aide d'APT:
sudo apt install -y nginx
Ensuite, créez un fichier de configuration pour 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
Créez un lien symbolique pointant vers le fichier de configuration AirSonic Nginx nouvellement créé:
sudo ln -s /etc/nginx/sites-available/airsonic.conf /etc/nginx/sites-enabled/
Redémarrez Nginx afin de mettre votre configuration en vigueur:
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Enfin, pointez votre navigateur Web préféré vers http://airsonic.example.com/airsonic
ou https://airsonic.example.com/airsonic
pour commencer à explorer votre site Web AirSonic.