From d9f63fdacc951e28148b43b34f17d1f4c1876fa8 Mon Sep 17 00:00:00 2001 From: dave Date: Sat, 13 Dec 2014 19:58:32 -0800 Subject: [PATCH] Configure edcast and get things running at boot --- Dockerfile | 21 ++------------------- edcast.cfg | 46 ++++++++++++++++++++++++++++++++++++++++++++++ init.sh | 38 ++++++++++++++++++++++++++++++++++++++ start | 13 ++++++++++++- supervisord.conf | 14 ++++++++++++++ 5 files changed, 112 insertions(+), 20 deletions(-) create mode 100644 edcast.cfg create mode 100644 init.sh diff --git a/Dockerfile b/Dockerfile index 7d16b26..faebd15 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,7 @@ RUN tar zxvf /tmp/edcast-jack-3.1.7.tar.gz ; \ cd edcast-jack-3.1.7/ ; ./configure ; \ cd edcast-jack-3.1.7/ ; make ; \ cd edcast-jack-3.1.7/ ; make install +COPY edcast.cfg /home/rduser/edcast.cfg # Configure icecast @@ -50,6 +51,7 @@ RUN apt-get update ; \ apt-get -y install rivendell rivendell-server rivendell-doc mysql-server jack-rack jamin jackd qjackctl COPY rd.conf /etc/rd.conf +COPY init.sh /home/rduser/init.sh # Install Alsa (is this necessary?) @@ -85,22 +87,3 @@ EXPOSE 8000 # Set boot command CMD /start - - - - - -vncserver -geometry 1280x800 :0 - - - - - - - - -#docker build -t rivendell2 . - - -# TODO: cleanup extra packages like g++, make, etc - diff --git a/edcast.cfg b/edcast.cfg new file mode 100644 index 0000000..346b3af --- /dev/null +++ b/edcast.cfg @@ -0,0 +1,46 @@ +# Destination server details (to where you are encoding). Valid server types : Shoutcast, Icecast, Icecast2 +ServerType=Icecast2 +Server=127.0.0.1 +Port=8000 +ServerPassword=source +ServerMountpoint=/stream +# YP (Stream Directory) Settings +ServerPublic=0 +ServerIRC= +ServerAIM= +ServerICQ= +ServerStreamURL= +ServerName=Docker Rivendell Test Stream +ServerDescription= +ServerGenre=Genre +AutomaticReconnectSecs=1 +AutoConnect=0 +# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus) +Encode=MP3 +# General settings (non-codec related). Note : NumberChannels = 1 for MONO, 2 for STEREO +BitrateNominal=128 +BitrateMin=128 +BitrateMax=128 +NumberChannels=2 +Samplerate=48000 +# Ogg Vorbis specific settings. Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management) +OggQuality=0 +OggBitrateQualityFlag=Quality +# LAME specific settings. Note: Setting the low/highpass freq to 0 will disable them. +LameCBRFlag=1 +LameQuality=1 +LameCopywrite=0 +LameOriginal=0 +LameStrictISO=0 +LameDisableReservior=0 +LameVBRMode=vbr_abr +LameLowpassfreq=0 +LameHighpassfreq=0 +LAMEPreset=0 +# AAC (FAAC) specific settings. +AACQuality=100 +AACCutoff= +# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG +LogLevel=1 +# Log File +LogFile=/dev/null diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..7a5a4ed --- /dev/null +++ b/init.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +sleep 5 + +/etc/init.d/apache2 start + +# Wait for mysql to come online +while [ "`ps aux | grep mysqld_safe | grep -v grep | wc -l`" -eq 0 ] ; do + sleep 1 +done + +# Create rivendell database if it doesn't exist +DBS=`echo "show databases ; " | mysql -u root -proot | grep Rivendell | wc -l` +if [ $DBS -eq 0 ] ; then + # Assume this is a first run and do some other stuff + chmod 777 /var/run/rivendell/ + chown -R rduser /var/snd + DISPLAY=:0 rdadmin --check-db --mysql-admin-user=root --mysql-admin-password=root --mysql-admin-hostname=127.0.0.1 --mysql-admin-dbname=Rivendell +fi + +rdadmin --check-db + +# Start gui apps + +su -c "DISPLAY=:0 rdairplay &" rduser +su -c "DISPLAY=:0 jamin &" rduser + +sleep 5 + +# Disconnect jamin from system audio +su -c "jack_disconnect jamin:out_L system:playback_1" rduser +su -c "jack_disconnect jamin:out_R system:playback_2" rduser + +# Connect rivendell to jamin + +su -c "jack_connect rivendell_0:playout_0R jamin:in_R" rduser +su -c "jack_connect rivendell_0:playout_0L jamin:in_L" rduser + diff --git a/start b/start index 854e1d3..dccecf1 100644 --- a/start +++ b/start @@ -1,3 +1,14 @@ #!/bin/bash -supervisord +# Clear any stranded lock files +rm -rf /tmp/.X* +rm -f /home/rduser/.rdairplaylock + +# start vnc +su -c "vncserver -geometry 1280x800 :0" rduser + +# Rivendel init +/home/rduser/init.sh & + +# start services +supervisord \ No newline at end of file diff --git a/supervisord.conf b/supervisord.conf index c64a39a..34bfecb 100644 --- a/supervisord.conf +++ b/supervisord.conf @@ -9,3 +9,17 @@ autorestart=true [program:sshd] command=/usr/sbin/sshd -D autorestart=true + +[program:mysql] +command=/usr/bin/mysqld_safe +autorestart=true + +[program:jackd] +command=/usr/bin/jackd -r -t2000 -ddummy -r48000 -p1024 +user=rduser +autorestart=true + +[program:edcast] +command=/usr/local/bin/edcast_jack -c /home/rduser/edcast.cfg -n stream -p jamin:out_ +user=rduser +autorestart=true