The Sockso Music Server is very functional and quite easy to set up in standalone or daemon mode. It is cross platform as it only depends on a Java runtime environment being installed on the target computer.
Recently I loaded it on my desktop which runs Lubuntu 14.04. I tested it out on the desktop before loading it onto my Ubuntu server PC, which holds my music repository.
- I will outline installing the Java run time environment needed to run Sockso on an Ubuntu machine
- The Sockso install procedure
- Getting it to run as a daemon
- Getting it to find your music
- At the bottom of the page I will have some links to resources that I followed and will provide information for running Sockso on other platforms.
The Sockso install procedure
It is not so much an install like compiling/installing, apt-get or adding a package. It is a simple old school download and drop files in a directory install.
- Download the Sockso zip file. You can do steps 2 and 3 while waiting for the download!
- Create /usr/share/sockso directory as root or via sudo so all files are set to root:root. ( sudo mkdir /usr/share/sockso )
- Create Sockso data directory /var/sockso as root or via sudo. ( sudo mkdir /var/sockso ) If sockso is terminated uncleanly, the files in this directory can get corrupted and it will need to be rebuilt
- Extract the files to /usr/share/sockso/ ( sudo unzip sockso-1.5.3.zip -d /usr/share/sockso/ ) I am not 100% on my unzip usage, so this command actually made a sockso-1.5.3 folder under /usr/share/sockso. Then I needed to use sudo mv .. to move all the files and dirs up one level.
Install Java
On my server that runs headless I performed the following after I typed in java on the command line and it told me that it was missing. It usually resides at /usr/bin/java in a Debian/Ubuntu type of file system. If it is installed it will dump out a help file. Using the command which java will also tell you if it is installed…
The program 'java' can be found in the following packages: * default-jre * gcj-4.6-jre-headless * openjdk-6-jre-headless * gcj-4.5-jre-headless * openjdk-7-jre-headless Try: sudo apt-get install <selected package>
I went for version 6 headless for starters. I am not sure what the difference between all the versions are, but version 6 worked for me.
erick@ubuntuserver:/tmp$ sudo apt-get install openjdk-6-jre-headless Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: ca-certificates-java icedtea-6-jre-cacao icedtea-6-jre-jamvm java-common libnspr4 libnss3 libnss3-1d openjdk-6-jre-lib tzdata-java
Suggested packages: default-jre equivs libnss-mdns sun-java6-fonts ttf-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho ttf-wqy-microhei ttf-wqy-zenhei ttf-indic-fonts-core ttf-telugu-fonts ttf-oriya-fonts ttf-kannada-fonts ttf-bengali-fonts The following NEW packages will be installed: ca-certificates-java icedtea-6-jre-cacao icedtea-6-jre-jamvm java-common libnspr4 libnss3 libnss3-1d openjdk-6-jre-headless openjdk-6-jre-lib tzdata-java 0 upgraded, 10 newly installed, 0 to remove and 5 not upgraded. Need to get 44.2 MB of archives.
…and so on as it installed.
Reading Java Version
If you already have java and want to view the version…
java -version
…will get you the version, such as listed on my desktop PC…
erick@Precision-WorkStation-530-MT:/var/sockso$ java -version java version "1.7.0_91" OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.14.04.1) OpenJDK Client VM (build 24.91-b01, mixed mode, sharing)
Test run
Before making it run as a daemon I wanted to test drive it. So the following command will start it up…
sudo sh /usr/share/sockso/linux.sh --nogui --datadir /var/sockso
When you terminate it, try to shut it down clean via a sigterm when you kill the process. I have read that killing it uncleanly can screw up the data directory ( /var/sockso ). Then you have to empty the directory and rebuild it’s contents. I haven’t had it screw up the directory yet.
Running Sockso as a daemon
Running Sockso as a daemon is an advantage when you are running on a server. It will startup when the machine starts and the machine will take care of closing it down cleanly upon shutdown.
Perl script for running sockso as a daemon
After moving the Sockso files to the proper location there will be a Perl file at /usr/share/sockso/scripts/init.d/sockso
Copy the sockso run file written in perl from…
/usr/share/sockso/scripts/init.d/sockso
…to…
/etc/init.d/sockso
…using…
sudo cp /usr/share/sockso/scripts/init.d/sockso /etc/init.d/sockso
Edit the file and change the directory at the top of the file to point to where sockso is installed ( /usr/share/sockso ).
Also make it executable.
sudo nano /etc/init.d/sockso
sudo chmod +x /etc/init.d/sockso
Now that it is in the init.d directory, the following should work…
sockso (start|stop|restart)
Remember to change the directory at the top of the sockso to point to the /usr/share/sockso dir.
Starting Sockso on boot
Follow the Steps 4,5,6 on this blog post…
https://samiux.wordpress.com/2009/07/17/howto-sockso-1-1-8-music-server-on-ubuntu-9-04-server/
I have a copy here as a PDF –> sockso-start-on-boot , just in case the link above disappears.
Sockso Command Prompt
Sockso comes with it’s own command prompt to administer it. help will list the commands. You can use the Sockso command line to add music to Sockso’s collections, add and delete users and perform other maintenance to it.
There is also a management webpage where you can perform the same functions as via the command line.
Finding Music
There is a command line mode for sockso where you can point it to certain directories to index music from.
Run sockso to bring up it’s command line. At it;s command line use coladd and then the path to the folder that your music is in to add it. It takes a while to do this, it is indexing it into a database so be patient. You can add multiple directories into it’s collections. If you add music to a directory in the collection, sockso will find it and add it. By default it scans directories in it’s collections every 30 minutes. I’ve tested it and it is pretty cool, dump in some music and a little while later, it’s there like magic.
coladd /home/username/Music
collist will list all the collections. coldel deletes collections.
colscan will force a scan for new collections that have been added.
Symbolic Links to Music Folder
The sockso coladd command has issues with spaces in directory names. What I have done is made a bunch of symbolic links using ln -s directory of music directory-of-music. This makes it easy to see where all the music is and sockso just has to deal with my Music directory and if I add or remove music it will figure it out on it’s own. I show an example below in the Raspberry Pi section.
Sockso on Raspberry Pi
I just ( April 2016 ) installed Sockso on my Raspberry Pi. I got the idea of sticking a USB stick into one of it’s open ports and dump my music repository on it. Them with sockso I can get to it whenever I want. Previously I had it set up on my main server that I have to use Wake on LAN to start up when I am not at home. Having Sockso on the Rasp Pi allows me to get at it instantly and saves energy by not having to run a full fledged server just to play music remotely.
Below is a tree of the Music directory that I created under my home directory. As can be seen there are symlinks without spaces that point to locations on the usb stick, mounted at /media/sda.
erick@raspberrypi ~/Music $ tree -L 1 . ├── main-collection -> /media/sda/music └── renee-ipod-music -> /media/sda/Renee's iPod/iTunes_Control/Music/
The USB stick is formatted it’s default way that it came, FAT32. I use pmount /dev/sda1 /media/sda to mount it. In this was it is mounted not as root, it is mounted by my user, so all files are easily accessed by my own user, locally and remotely using NFS or SSHFS. In this way I can add and remove files easily.
Users
In Sockso there is a concept of users. You can have multiple people logged in and have personalized settings. You can even authorize uploads by setting that option.
Adding users at the Sockso command line works similar to adding users in Linux.
useradd NAME PASS EMAIL ISADMIN 1/0 Adds a new user
Commands:
userlist Lists the users
useradd NAME PASS EMAIL ISADMIN 1/0 Adds a new user
userdel ID Deletes a user
useradmin ID ISADMIN 1/0 Sets a user to be admin/non-admin
useractive ID ISACTIVE (1/0) Toggles users between being active or not
coladd PATH Adds a folder to the collection
coldel PATH Removes a folder from the collection
collist Lists the folders in the collection
colscan DIR (optional) Start a collection scan
propset NAME VALUE Sets a property
propdel NAME Deletes a property
proplist FILTER Lists properties
version Show version information
exit Exit Sockso
Resources
Where to get Sockso, it’s official site
This site is a bit dated but still helpful.
https://samiux.wordpress.com/2009/07/17/howto-sockso-1-1-8-music-server-on-ubuntu-9-04-server/
Sockso Read Me
Requirements
————
Sockso should come packaged with everything it needs to run,
all you have to do is have Java installed on your computer.
You can download the latest Java version for free from
the Sun website at: http://www.java.com
To run Sockso under Windows just double click “Run Sockso”.
Easy!
“Linux”
——-
If you’re running Linux or something similiar then you may
just be able to double click the “linux.sh” shell script.
If this doesn’t work for you then you can run this script
from a terminal with:
$> sh linux.sh
Feedback
——–
If you’ve used Sockso then I’d love to hear what you think, so
please send me some email at: rod(at symbol)pu-gh(dot)com
Running as daemon
—————–
Usage: sockso (start|stop|restart)