bandeau2016

heart [TUTO] Installer un serveur Shoutcast 2.2.1 sous Ubuntu Server

il y a 5 ans 1 mois - il y a 4 ans 9 mois #56 par doc_denis
Bonjour,


je vous propose aujourd’hui d'installer un serveur shoutcast sur un serveur Ubuntu.
ça peut-être la suite du tuto présenté ici : (installation serveur web avec virtualmin sous ubuntu-server)
www.bouteau.net/index.php?option=com_content&view=article&id=4&Itemid=116

Pour y ajouter votre service shoutcast pour votre webradio ;)


Téléchargez l'archive pour linux 64 bits ou 32 bits selon votre serveur ici :
www.shoutcast.com/broadcast-tools

Mai 2014, le bon lien de téléchargement est ici :
forums.winamp.com/showthread.php?t=373139

décompressez l'archive mettez de coté le fichier sc_serv nous en aurons besoin.

Connectez-vous sur votre serveur avec l'interface webmin (pour faire simple) ...ou en SSH pour faire compliqué ;)

avec le "gestionnaire de fichiers" de webmin (dans "Autres")
copiez le fichier "sc_serv" que vous avez mis de coté dans /usr/local/bin/
maintenant copiez-le et coller-le avec le nom sc_serv8000

si vous désirez un second canal de diffusion (il peut y en avoir autant que vous le voulez).
coller-le une seconde fois avec le nom sc_serv8100


NOTA : avec cette version de shoutcast, on peux envoyer plusieurs flux sur un même port, c'est le "Stream ID" qui donne le 1,2,3... pour le 1er le 2eme et le 3eme flux.
cependant pour certaines raisons vous pouvez avoir plusieurs entités à diffuser et vouloir séparer les serveurs avec des ports différents.
L'un des gros avantages c'est le redémarrage d'un port sans impacter les autres flux :)


Maintenant créez un fichier avec le nom sc_serv8000.conf
avec le contenu suivant :
; le fichier exemple pour shoutcast

logfile=/var/log/radio/8000.log
w3clog=/var/log/radio/w3c8000.log
banfile=control/sc_serv.ban
ripfile=control/sc_serv.rip
maxuser=500

;publicserver=never

songhistory=500

portbase=8000


; le mot de passe pour le plug-in DSP de Winamp
password=votremotdepassewinampAchanger


; le mot de passe de l’administration des pages de votre serveur
adminpassword=votremotdepasseadminAchanger

si vous avez opté pour créer aussi un 8100, copiez/coller le fichier sc_serv8000.conf et coller-le en sc_serv8100.conf
puis changez les 8000 par 8100 ...faut bien vous laisser un paux de boulot.
pour faire vite, dans l'éditeur de webmin, utilsez la fonction recherchez/remplacer avec 8000 et 8100 et hop en 2 secondes c'est fait ;)

créez maintenant un dossier "radio" dans /var/log/ pour obtenir /var/log/radio/
créez maintenant un fichier /var/log/radio/8000.log
et un autre /var/log/radio/w3c8000.log

idem pour 8100 si vous avez choisis.

avec l'icône "information" ...le "i" dans un rond bleu
passez les fichiers en chmod 755 ou 777 (...préférez 755)
chown en user : root et goup : adm

créez maintenant un fichier shoutcast8000 dans /etc/ini.d/ avec ce contenu :
#!/bin/bash
# version doc_denis 2014 shoutcast2
# mélange de deux version du fichier
# /etc/init.d/shoutcast8000
# lignes en dur pour le lancement
# particularité mes fichiers sont tous dans :
# /usr/local/bin/   "les executables et fichiers de config"

# pour activer au demarrage avec webmin
# webmin>action au demarrage> cocher les shoutcastXXXX
# puis dans le bas de la page cliquer sur
# démarrer les sélectionnés au moment du Boot


NAME=sc_serv8000
SRV_BIN=/usr/local/bin/sc_serv8000
SRV_CFG=/usr/local/bin/sc_serv8000.conf

# On va faire tourner shoutcast en tant que nobody:nogroup
# On peut bien sur creer un autre user (sans shell,...) si on veut, bien sur
	SRV_UID=nobody
	SRV_GID=nogroup

	SSD_BIN=/sbin/start-stop-daemon
	SSD_GENERAL_OPTS="--quiet"

	case "$1" in

# si on tape # /etc/init.d/shoutcast8000 start
	# les instructions qui suivent vont être exécutées
	  start)
			echo "Starting $NAME";
			$SSD_BIN $SSD_GENERAL_OPTS --chuid ${SRV_UID}:${SRV_GID} --user $SRV_UID \
			--group $SRV_GID --start --background --exec /usr/local/bin/sc_serv8000 /usr/local/bin/sc_serv_8000.conf
			;;

# si on tape # /etc/init.d/shoutcast8000 stop
	# les instructions qui suivent vont être exécutées
	  stop)
		echo "Stopping $NAME";
				   # $SSD_BIN $SSD_GENERAL_OPTS --chuid ${SRV_UID}:${SRV_GID} --user $SRV_UID \
				   #         --group $SRV_GID --stop --exec $SRV_BIN $SRV_CFG
	# arret à l'arrache mais ça s'arette vraiment !
		killall sc_serv8000 >& /dev/null ;
			;;


#si on tape /etc/init.d/shoutcast8900 restart, 
	# les instructions suivantes vont être exécutées
		restart)
			echo -n "Redemarrage de $NAME"   
					# Vérifie si le processus sc_servXXXX est déjà lancé
						if [ -z "$(ps ax | egrep sc_serv8000)" ]; then
					# Si il n'est pas lancé alors on affiche : un message
						echo " sc_serv8000 n'est pas en route" ;
						else
					# si lancé on tue tous les processus sc_serv8000
						killall sc_serv8000 >& /dev/null ;
					# force à continuer le script avec "fi"
						fi
					# Attente d'une seconde avant la suite du script
						sleep 1
					# Enfin on démarre shoutcast
						echo " OK";
						$SSD_BIN $SSD_GENERAL_OPTS --chuid ${SRV_UID}:${SRV_GID} --user $SRV_UID \
						--group $SRV_GID --start --background --exec /usr/local/bin/sc_serv8000 /usr/local/bin/sc_serv_8000.conf
						;;

# Si on tape /etc/init.d/shoutcast8000
# alors le script affichera 
# les différents arguments que l'on peut donner au script
    *)
        echo "Usage: /etc/init.d/$NAME start|stop|restart" >&2
        exit 1
        ;;
esac

exit 0
## Fin du script !

Maintenant, si vous avez créé un sc_serv8100 plus tôt, vous devez ajouté un fichier shoutcast8100 dans /etc/init.d/
avec ce contenu
#!/bin/bash
# version doc_denis 2014 shoutcast2
# mélange de deux version du fichier
# /etc/init.d/shoutcast8100
# lignes en dur pour le lancement
# particularité mes fichiers sont tous dans :
# /usr/local/bin/   "les executables et fichiers de config"

# pour activer au demarrage avec webmin
# webmin>action au demarrage> cocher les shoutcastXXXX
# puis dans le bas de la page cliquer sur
# démarrer les sélectionnés au moment du Boot


NAME=sc_serv8100
SRV_BIN=/usr/local/bin/sc_serv8100
SRV_CFG=/usr/local/bin/sc_serv8100.conf

# On va faire tourner shoutcast en tant que nobody:nogroup
# On peut bien sur creer un autre user (sans shell,...) si on veut, bien sur
	SRV_UID=nobody
	SRV_GID=nogroup

	SSD_BIN=/sbin/start-stop-daemon
	SSD_GENERAL_OPTS="--quiet"

	case "$1" in

# si on tape # /etc/init.d/shoutcast8100 start
	# les instructions qui suivent vont être exécutées
	  start)
			echo "Starting $NAME";
			$SSD_BIN $SSD_GENERAL_OPTS --chuid ${SRV_UID}:${SRV_GID} --user $SRV_UID \
			--group $SRV_GID --start --background --exec /usr/local/bin/sc_serv8100 /usr/local/bin/sc_serv_8100.conf
			;;

# si on tape # /etc/init.d/shoutcast8100 stop
	# les instructions qui suivent vont être exécutées
	  stop)
		echo "Stopping $NAME";
				   # $SSD_BIN $SSD_GENERAL_OPTS --chuid ${SRV_UID}:${SRV_GID} --user $SRV_UID \
				   #         --group $SRV_GID --stop --exec $SRV_BIN $SRV_CFG
	# arret à l'arrache mais ça s'arette vraiment !
		killall sc_serv8100 >& /dev/null ;
			;;


#si on tape /etc/init.d/shoutcast8900 restart, 
	# les instructions suivantes vont être exécutées
		restart)
			echo -n "Redemarrage de $NAME"   
					# Vérifie si le processus sc_servXXXX est déjà lancé
						if [ -z "$(ps ax | egrep sc_serv8100)" ]; then
					# Si il n'est pas lancé alors on affiche : un message
						echo " sc_serv8100 n'est pas en route" ;
						else
					# si lancé on tue tous les processus sc_serv8100
						killall sc_serv8100 >& /dev/null ;
					# force à continuer le script avec "fi"
						fi
					# Attente d'une seconde avant la suite du script
						sleep 1
					# Enfin on démarre shoutcast
						echo " OK";
						$SSD_BIN $SSD_GENERAL_OPTS --chuid ${SRV_UID}:${SRV_GID} --user $SRV_UID \
						--group $SRV_GID --start --background --exec /usr/local/bin/sc_serv8100 /usr/local/bin/sc_serv_8100.conf
						;;

# Si on tape /etc/init.d/shoutcast8100
# alors le script affichera 
# les différents arguments que l'on peut donner au script
    *)
        echo "Usage: /etc/init.d/$NAME start|stop|restart" >&2
        exit 1
        ;;
esac

exit 0
## Fin du script !

chouette, vous suivez toujours :)

avec l'icône "information" ...le "i" dans un rond bleu
passez les deux fichiers en chmod 755

Maintenant nous devons veiller à ce que nos serveurs shoutcastXXXX ce lancent au démarrage de la machine en cas de reboot.

dans webmin :
webmin > actions de démarrage et d’arrêt > cocher les shoutcastXXXX, puis dans le bas de la page cliquez sur le bouton :
"démarrer les sélectionnés au moment du Boot"

c'est fini ou presque.

en SSH un :
sudo /etc/init.d/shoutcast8000 start

doit lancer le serveur, allez faire un tour sur : http://adresseipdevotreserveur:8000
ça marche :)

un /etc/init.d/shoutcast8000 stop

doit couper le serveur, vérifiez ....c'est cool, ça marche :)

si vous avez créez un 8100 testez aussi le port 8100 et les autres si vous en avez ajouté d'autres.

Maintenant, un reboot du serveur pour vérifier que ça marche bien au boot.
en ssh : sudo reboot
ou avec webmin :
webmin > actions de démarrage et d’arrêt
en bas à gauche le bouton "redémarrer le système" ...ne vous trompez pas !!!

Puis attaquons la diffusion du flux à partir du studio :

l'ancien modèle du plug-in winamp utilisait une autre méthode pour la connexion sur le serveur.
donc ça marche plus :( ...mais y'a une solution fastoche :)

il vous faudra donc télécharger une nouvelle version du plug-in pour winamp dans le bas de cette page.
www.shoutcast.com/broadcast-tools
Mai 2014 ici :
download.nullsoft.com/shoutcast/tools/shoutcast-dsp-2-3-3-windows.exe

si vous utilisiez un autre DSP pour traiter le son, il vous faudra la nouvelle version de winamp light et une nouvelle version de multiple dsp for winamp pour que ça tourne correctement.

winamp light directement ici : download.nullsoft.com/winamp/client/winamp5666_lite_fr-fr.exe

pour la configuration su DSP c'est simple, pas de piège, ça marche facilement.
n'oubliez pas de mettre le bon mot de passe, c'est tout.
un flux 128 en MP3, bien remplir les champs de l'onglet directory, dans l'onglet login, le stream ID = 1
le DJ / User ID ne doit pas forcément être renseigné, dans l'onglet Title,
Pour les utilisateurs de Rivendell Automation, cochez "disable title update" car c'est rivendell qui envoi les titres au serveur.

Voilà pour un premier jet de l'installation d'un serveur shoutcast sur Ubuntu Serveur et de la diffusion du flux.

@+ denis

Le partage du savoir fait avancer plus vite !

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.071 secondes
Propulsé par Kunena