Using Windows XP:
In year 2013, no matter how much you argue about it, Windows XP is a pretty lightweight operating system, especially if no one messes with its registry.
Configuring the VM:
Creating a virtual machine in Virtualbox is very straightforward and can me initiated from the New button on the top left side.
The specifications for this VM are:
HDD: 10 GB with thin provisioning (actual size depends on how much is really being used)
RAM: 2048 MB
Leave everything else to default. After the installation completes do the following:
Inside XP, R-Click on My Computer -> Remote tab -> check "Allow users to connect remotely to this computer"
On the Virtualbox window mount the Guest Additions iso from the Device -> CD Rom menu and install it
Shut down XP
Before we launch the VM for the first time after the installation we need to change a few more parameters from the Settings menu:
Display -> Remote Display -> check "Enable Server"
Network -> Attached to -> select "Bridged Adapter"
We can now connect remotely to our XP installation using Remote Desktop from Windows. Furthermore, since we won't be accessing XP frequently, it doesn't have to have a graphical output on our system (Debian).
We can execute everything Virtualbox-related through command line. To launch a VM do:
erik@debian: nohup vboxheadless -startvm <VM name> &
This will place the service in the background so you can close the terminal window after and will not show anything on our main system's screen. You can see more of the headless commands here. For me it's enough launching the VM as I can always log on Debian and graphically manipulate it from there later on if needed.
Virtualbox Guest Additions gives us the ability to map a local drive as a network drive. Whatever folder you chose in the previous step can be found in the virtual XP under "\\Vboxsvr" path, or My Network Places -> Entire Network -> VirtualBox Shared Folders. This folder is hosting our media and should be accessible by applications such as Plex Media Server and Subsonic.
Configuring Plex Media Server:
Plex is a wonderful application not only for organizing your media, but also presenting it in an appealing way, while offering connectivity with many DLNA devices and smartphones plus other nice features. It really loves metadata and downloads a bunch of covers and information for your media if available online. Installation is straightforward and the management console can be accessed from any computer in the local network at <XP IP>:32400.
>> No matter how nice Plex is, it's not perfect. Pay attention when adding media and verify them manually afterwards. Otherwise you end up with a huge pile of songs under [Unknown Artist] - [Unknown Album] category. Use subfolders instead of the main folder and proceed gradually, it's good practice to not go crazy later. Also, follow their guide for labeling and organizing media. Plex or no Plex, it's a valuable document in the digital age. <<
Configuring Subsonic:
While Plex is a really nice media hub, Subsonic is a masterpiece of simplicity and functionality. It just works, and it's especially great for listening to your music from your laptop/smartphone. It's nice to have them both side by side. Installation is again very easy. The web management is located at <XP IP>:4040 by default.
>> As opposed to Plex, Subsonic will just look at your folder structure. Make sure you organize your music accordingly before adding a media folder. <<
Save Your Progress:
The whole purpose of using virtualization to build a media server is hassle-free maintenance. Virtualbox can take Snapshots of a VM, state and configuration of the OS, so you can go back to that setup at any time if needed, just by recalling that snapshot image.
When finished setting up all the above, take a snapshot. You might want to experiment with other media server software and whatnot only to regret it later on. A snapshot will be proven helpful at that point.
Conclusion:
This concludes the setup of our media server. So far we have:
A virtual machine running XP, remotely accessible
Plex and Subsonic, remotely accessible
A snapshot of the above setup with all the configuration