Vortexbox music server in an ESXi VM hooked to OpenFiler
The story
About four years ago I got started on a project to rip all my music CDs to FLAC. About seventy albums in, that project got put on hold. We moved the study from our spare bedroom to the basement when our boy arrived, and the CDs got scattered into numerous dark recesses of the basement. It is now the winter, prime time to clean out the closets in the house as well as continue the ongoing organization in the basement. A couple weeks ago I got the urge to hunt down and organize all the CDs. This was in part due to my wife having received a new MP3 player for Christmas and she has been eager to put more music on it. We had ripped some MP3s years back but not much she was in the mood for now. So it was likely time to restart the ripping process, with my wife selecting what ones to do first.
[Sidenote: I found some great stackable bins by Homz at the local Walmart that hold 30 discs each. These made quick work of organizing the rock discs alphabetically. I now have them all in one location on our ‘wall-o-shelves’, stacked and neatly labeled. All the classicals found a home in a grapefruit case. Hey, it works.]
Ideally, I wanted to touch each disc only one more time before packing it away for good; I would want it archived in FLAC lossless format as well as a higher-bitrate MP3 for my wife’s player. The FLAC would future-proof me for when I eventually get a high quality media player. I initially figured I would have to rip each one to FLAC manually and then run a script to convert the FLAC to MP3 and place it in a different folder. I did a few cursory web searches, and then put it on the mental back burner for about a week.
Vortexbox
Late last week I happened upon Vortexbox. The product is a standalone operating system , running a modified version of Fedora Release 14. It is free, and is downloaded as a 635+MB ISO. From their site:
- “VortexBox is a free, open source (GPL v3), quick-install ISO that turns your unused computer into an easy-to-use music server/jukebox. Once VortexBox has been loaded on an unused PC, it will automatically rip CDs to FLAC and MP3 files, ID3 tag the files , and download the cover art. Vortexbox will then serve the files to network media players such as Logitech Squeezebox, Sonos, or Linn. The music files can also be streamed to a Windows or Mac OSX system.“
What really caught my eye was that it was a “complete OS“. Which meant it could run as a virtual machine on my ESXi box and not consume any resources on my primary machine. A few brief searches later confirmed people were doing this very thing, and that you can redirect the music folders to a NAS or SAN device. In my situation, that would be OpenFiler. The final item that sold it was that I could use the CD drawer on the client machine to rip from, as the VMWare server is on the far side of the room, up on a shelf. Not exactly a convenient location when one plans to rip another 100+ CDs.
I was sold. Now it was time to get it installed and running.
Getting started
I began by downloading the ISO from the Vortexbox site. The file was then uploaded to my ESXi datastore.
I created a new virtual machine with a 10GB boot drive, 512RAM and two vCPUs. I knew that the encoding would benefit from dual processors. I pointed the CD drive to the ISO I had just uploaded, and started up the machine.
The GUI interface is accessed from a web browser. You’ll need to know what IP address the vm was given when it started. As this could vary each time it rebooted, I decided to make the ip address static. I opened the VSphere Vortexbox console and then followed the excellent instructions on the Vortexbox site. Now the ip address is static.
The FLAC and MP3 files were going on OpenFiler, so I created a new folder, Music, on my OpenFiler CommonStorage share, with two folders beneath, flac and mp3 (note the case of the folder names).
Vortexbox has locations it assumes the FLAC and MP3 files will be. I wished to redirect these from the 10GB boot drive to the new OpenFiler shares. To do this, I needed to connect to the Vortexbox console again and edit the fstab file. This will have the share automatically mount at boot. I found how to do this on the Vortexbox forums.
nano /etc/fstab
I then added the following line:
//192.168.0.220/CommonStorage/Music /storage/music cifs guest,_netdev 0 0
This line pointed the default music folder (/storage/music) to my newly created Openfiler share (//192.168.0.220/CommonStorage/Music). I saved and exited the fstab file.
I manually mounted the path:
mount /storage/music
Now the default paths pointed to my OpenFiler shares. This was a much simpler process than I had originally feared.
The OpenFiler shares did need more space allocated to them. I added more space to the OF volume, and bumped guest quotas up, to allocate another 150GB to the shares. This gave me plenty of room for the existing FLAC files, and likely enough space for the rest of my CD collection. If not, I will just repeat the process to make more space available.
Next, I moved the FLAC folders to the S:\CommonStorage\Music\flac\ path. This was projected to take a while so I just started the copy, and left to do other things.
Once the task completed, it was time to get all the cover art. This process is almost too simple to believe. Go to the browser’s GUI interface, and click on the second icon from the top. On the CD ripping status and cover art screen, simply click on the Get Cover Art button and let it do its thing. It did not take very long, and ended up with a cover for almost every album.
Now that the cover art was in place, it was time to let the Squeezebox server scan the flac folder and build its tables. I selected Clear and rescan for changes from the drop down box, and started the scan. This was another good time to walk away to find something else to do for a while.
Finally, it was time to create MP3 mirrors of all the FLAC files. I clicked on the FLAC mirror icon (very cute) to take me to the mirror screen. I kept the bitrate at the standard 190Kbits VBR, and clicked Start mp3 mirroring. This ended up being the longest process. That made sense as it was having to encode over 4,500 songs. Just walk away and let it work. We had some places to go for most of the day, and the process was complete when we returned. All the FLAC files had MP3 copies. Sweet!
Setting up the Backups
Now that everything was setup and working, I needed to ensure it was backed up initially, and going forward. This is a critical step to ensure all my hard work didn’t just go to waste with a hard drive failure. I needed to backup the FLAC and MP3 folders nightly, as well as back up the Vortexbox vm a couple times a week (this would be plenty). The vm wouldn’t have to be backed up due to how easily it was installed, but setting up the backup would be a five minute operation and could potentially save me many times that.
On the backup machine, I created a folder named Music Backups on a drive that had about 500GB free. Beneath that were placed the flac and mp3 folders. Next, a simple batch job was created on that PC, that would use XCOPY to move any new files from the OpenFiler share to this newly created path. The XCOPY statements I used were:
xcopy "s:\Music\flac\*.*" "L:\Music Backups\flac\" /s /k /d /y
xcopy "s:\Music\mp3\*.*" "L:\Music Backups\mp3\" /s /k /d /y
The batch job was set up as a scheduled task to run each morning at 2:30, a time when I am busy sawing logs.
I created a new ghettoVCB job, and another batch file (on the backup machine) to call it. I scheduled this to run later in the night twice a week.
Before I called it a day, I fired off both tasks manually just to get the initial backups started.
VMWare Tools
You will need to install VMWare Tools within Vortexbox to be able to rip CDs from the client CD drive. I found an excellent post that worked perfectly. No reason rehashing it; just go read the post for the details.
How to rip from the client’s drive
I have had time to test rip two CDs. What I had to do to get it to work was change the device type of the CD to Client.
After receiving an error when attempting the initial rip, I had to also change the CD mode to Passthrough IDE (Recommended).
Lastly, I connected the CD drive on the Vortexbox console to my primary machine’s J drive (its CD tray). I put a music CD in the drive, and Vortexbox took off.
It took 10 minutes to rip the disc, and two minutes to encode. It also went out and grabbed the artwork for me at some point in the process. When it was done ripping, Vortexbox opened the CD drawer for the next disc. Very slick and simple.
When you are finished your ripping session, be sure to disconnect the client’s drive from the Vortexbox VMware console. This is rather important.
Ripping Folder Structure
Something I noticed after ripping the first disc was that the folder name was not what I expected. It was in a artist-album/title.flac format, rather than the artist/album/title.flac I was expecting. A quick web search discovered how to solve this issue. According to the Vortexbox forum thread, you need to:
-
1. Log into your VortexBox as root.
2. Edit /etc/ripit/config, and change
dirtemplate="$suffix/$artist – $album"
to
dirtemplate="$suffix/$artist/$album"
This worked for me, and the second disc was ripped to the correct folder name.
Summary
Vortexbox looks to be the solution to my storage and ripping problems. It was pleasantly simple to install as a virtual machine and get set up. The Vortexbox forums provided some excellent help for the complicated pieces (VMWare Tools install would not have been just a ten minute affair otherwise). The Squeezebox server that comes installed will be fun to play with as I get time. I have also been scoping out potential home receivers and Vortexbox having a DLNA server included looks to be a very important feature.
Give it a try if you have a bit of time. All said, I spent about four hours from start to finish installing, configuring, hunting down solutions, and setting up the backups. Now I can rip the remainder of our music as I have time.