Skip to main content

The ‘JukeJack’ is a project of mine to create a ‘Diplomatic Jukebox’. Me and my mates used to choose which bars to drink in when we were younger based on the quality content of their jukeboxes. My favourite was the Old Ale House in Truro that had all the Led Zeppelin albums on!

These JukeBoxes are now long gone and were briefly replaced by the ‘web connected’ jukeboxes but they too have now disappeared. Our local The Ship Inn in Porthleven can often be seen passing round an Ipad for punters to select their favourite tunes on Spotify.

I thought this could be improved by using a web app on your phone with the added functionality of other people in the pub ‘upvoting’ or ‘knocking off’ tunes from the playlist, therefor creating a ‘peoples playlist’

Following some research i found the best way to do this is use a raspberry PI as a web server running Mopidy an extensible music server written in Python. Mopidy plays music from local disk, Spotify, SoundCloud, Google Play Music, and more and you can edit the playlist from any phone, tablet, or computer using a range of MPD and web clients.

The next addition would be to add functionality for users to be able to ‘tweet’ the song to the venue using this  Twitter API libary i have tested this and it works well but just needs some refinement. This adds great marketing value to venues using the app too.

To summarise –

  1. The venue would have a web connected PI with the software installed and a pro audio hat such as this connected to an amplifier.
  2. The customer connects to the ‘JukeJack’ network. The customer then tweets to the venues twitter account what song they would like played. The venue then tweets back to the customer that their track will be played after X amount of songs.
  3. To be worked out..Other customers can ‘upvote’ or ‘downvote’ the upcoming track. I think this functionality will have to operate independently from the twitter API


Below is the process of installment i will update this with a finished prototype very soon

Part 1

  1. SD Card adapter for micro SD card I didn’t have one so had to use this method
  4. Download the latest Jessie or Jessie Lite disk image from
  5. Install the image to your SD card using these instructions
  6. Install mopidy using these instructions
  8. Check mopidy works by typing ‘pi@raspberrypi:~ $ mopidy’
  10. Install sudo apt-get install mopidy-spotify  Edit config file to include your Spotify Premium Log In
  11. Config file here sudo nano /home/pi/.config/mopidy/mopidy.conf
  12. [spotify]username = ***************password = ***************enabled = truebitrate = 320timeout = 10cache_dir = $XDG_CACHE_DIR/mopidy/spotify
  13. JUKEJACK 1.0 – Issues, Roadmap


Part 2


  1. Changing hostname for Mopidy.


To change the hostname for Mopidy, we need to change the parameter hostname to

and uncomment the lines that are in the config file which you can see now. They are under http block.


  1. Opening Firewall in Raspberry PI if available.


If Iptables is blocking, we need run :

sudo iptables -A INPUT -p tcp -m tcp –dport 6680 -j ACCEPT

sudo /etc/init.d/iptables save


  1. Configuring Router with DDNS.


Here, we used for DDNS service. We first created account on then we created a new domain. As our router supported as DDNS service built-in , we could easily apply the DDNS service and connect our router with Noip.


Then, we need to add the required port 6680 and open it so that the port will be available through the internet. Now, we should be able to access Mopify from local network (http://RPI’s IP address:6680/mopify/ ) and also from the internet (


To run mopidy, you need to run :
$ screen mopidy –config ~/.config/mopidy/mopidy.conf
And tweet-jukebox :
$ screen node ~/workspace/tweet-jukebox/init.js

Install history

1  wget -q -O – | sudo apt-key add –

2  sudo wget -q -O /etc/apt/sources.list.d/mopidy.list

3  sudo apt-get update

4  sudo apt-get install mopidy

5  mopidy

6  htop

7  history

8  sudo apt-get install mopidy-soundcloud mopidy-youtube mopidy-spotify

9  cat /etc/*-release

10  sudo apt-get install htop

11  htop

12  df -0h

13  df -h

14  wget

15  sudo dpkg -i node_latest_armhf.deb

16  ls /etc/sources.d

17  ls /etc/apt/sources.list

18  ls /etc/apt/sources.list.d/

19  node -v

20  npm -v

21  npm –version

22  cat /etc/apt/sources.list

23  sudo apt-get pureg node-*

24  sudo apt-get purge node-*

25  sudo apt-get install nodered

26  sudo apt-get update

27  sudo pkill -9 dpkg

28  sudo pkill -9 apt-get

29  sudo apt-get update

30  sudo apt-get purge nodejs

31  ls

32  sudo dpkg -i no

33  sudo dpkg -i node_latest_armhf.deb

34  npm -v

35  node -v

36  wget

37  unzip

38  cd tweet-jukebox-master/

39  ls

40  cd

41  mkdir workspace

42  mv tweet-jukebox-master/ workspace/

43  cd workspace/

44  cd tweet-jukebox-master/

45  cd ../

46  mv tweet-jukebox-master tweet-jukebox

47  node /home/pi/workspace/tweet-jukebox/init.js

48  cd tweet-jukebox/

49  nano config.sample.js

50  history

51  cat config.sample.js

52  w

53  history

54  w

55  htop

56  nano config.sample.js

57  cd workspace/

58  ls

59  cd tweet-jukebox/

60  nano config.sample.js

61  mv config.sample.js confg.js

62  ls

63  node init.

64  node init.js

65  cat mod

66  mv confg.js config.js

67  node init.js

68  nano config.js

69  node init.js

70  ls

71  sudo bash

72  sudo apt-get install gpio-admin

73  sudo npm install pi-gpio

74  sudo bash

75  ls

76  cd ../

77  sudo bash

78  sudo npm install pi-gpio

79  cd tweet-jukebox/

80  sudo bash

81  which gpio-admin

82  gpio-admin

83  git clone git://

84  cd quick2wire-gpio-admin

85  make

86  sudo make install

87  sudo adduser $USER gpio

88  npm install pi-gpio

89  cd ../

90  sudo bash

91  htop

92  bash

93  cat /proc/cpuinfo

94  cat /proc/meminfo

95  node init.js

96  nano config.js

97  node init.js

98  npm install

99  ls

100  ls node_modules/

101  rm node_modules/ -rf

102  htop

103  pkill -9 vnc

104  sudo pkill -9 vnc

105  htop

106  sudo pkill -9 test

107  htop

108  npm install

109  sudo node init.js

110  cat package.json

111  npm install

112  sudo node init.js

113  ls

114  mopidy

115  ls

116  tweet-jukebox

117  mopidy&

118  ode init.js

119  node init.js

120  screen

121  sudo apt-get install screen

122  screen

123  history


To be continued…..