Synology DS212j review (part 2)
Synology provided me the opportunity to test a NAS device: the DS212j. In the next couple of weeks, I will write a review of this device split over a number of blog posts. It will be a rather untraditional NAS review, because I will also spend time looking at its features for running .NET and PHP code, how easily it can run developer tools and finally I will have a look at the SDK.
Writing this second part of the review was hard. Not that the subject was that hard to grasp, but I found it difficult to find the right angle. The DSM OS is built on top of the Linux kernel and tools. Although the web GUI of DSM does not offer a good support for developer tools (like versioning systems, bug trackers, project management applications …), the underlying Linux system does. And what is great, Synology does nothing to prevent users for accessing the power of this underlying system. All that is needed, is activating SSH support and connecting with the SSH client of your choice. When this is done, you have access to a full blown ARM-powered Linux system.
If you have no Linux or UNIX background it can sometimes be difficult to find your way. I personally am a Windows and .NET developer and although I am not scared from a command line or the PowerShell, it was sometimes quite difficult to find the location of configuration files and applications.
Not all users seem to have issues finding their way around on the DSM using SSH and numerous tutorials and forum posts are available explaining how to install various pieces of software like GIT, SVN, Trac, … The official Synology wiki also contains some valuable information to get you started.
But in a perfect world, setting up a GIT server should be possible with a few clicks in the DSM GUI and using some screens to configure users and create repositories. The same for packages like Trac, Bugzilla … I hope Synology is reading this or some brave developers who are willing to create the necessary 3rd party packages in their free time
Let’s maybe start with looking to what is supported through the web based GUI. Activating MySQL support is a matter of selecting the necessary checkbox in the Web Services screen. The package center allows to additionally install phpMyAdmin. A web based tool for administrating MySQL databases. The only thing you have to know (but it is explained on the Synology website) is that the default username for phpMyAdmin is “root” with an empty password.
The MySQL database on the DS212j is both accessible for applications running on the NAS and for applications running on another computer. The simplest way to do this from .NET is using NuGet to get the ADO.NET driver for MySQL
I took the opportunity to develop some complex app, during this review to test out this feature
Performance varies based on the specs of the hardware, so do not expect to run the MySQL databases of your small enterprise on the DS212j. Nevertheless, if you are a computer geek it can be quite cool to have your own fat client apps connect to a centrally hosted database on your home network.
IPKG (Itsy Package Management System)
Linux distributions mostly rely on a package management system to ease the installation of additional software packages and components. IPKG is the package management system most frequently used on the DSM. In order to use it, you must download and install the correct version for the CPU available in the NAS (the DS212j is powered by a Marvel Kirkwood mv6281 ARM CPU). The following wiki pages on the Synology website explain how to determine the correct version:
Subversion support is not available out of the box or installable trough the package center, but the IPKG repository contains it. Installing and setting it up is quite simple if you follow this article on the Synology wiki (http://forum.synology.com/wiki/index.php/Step-by-step_guide_to_installing_Subversion). Although, I would prefer an integrated solution trough the package center.
I found it very convenient to host my own repositories on the local network
Small recommendation: due to limited CPU and RAM resources on the DS212j I recommend to use the inetd method as explained on the Synology wiki. This method will only consume resources when required.
I the past I was a big fan of SVN, but more recently I became fund of GIT. Just like with Subversion, it is not supported by DSM trough the package center, but the IPKG repository contains it. Ryan Helco (http://www.bluevariant.com/2012/05/comprehensive-guide-git-gitolite-synology-diskstation/) took the effort to write down the necessary steps to set it up.
Just like with SVN, I have the same remark: it is not super complicated to set up, but it could be done a lot more integrated and user friendly.
Installing Trac is similar to Subversion and GIT, the package is available in IPKG (search for “py26-trac”). The official Trac documentation contains all the further documentation necessary to further configure the NAS: http://trac.edgewall.org/wiki/TracInstall.
But again, why not making this available either officially in the package center or by some brave 3rd party developer?
NuGet Package Repository
Nowadays, NuGet is big in the .NET world. It is a package management system developed by Microsoft for .NET assemblies that simplifies adding them to projects and that helps tracking down dependencies. An official repository feed exists, but it is also quite easy to setup your own feed.
I tested the default NuGet server, but unfortunately the Mono version currently bundled with DSM is 2.11.1 and this prevents the default NuGet server from running. I hope Synology will upgrade to a 3.x version of Mono in the near future.
Like I already expressed in the introduction of this review, I found it very hard to rate the developer experience of the DS212j. Yes, most developer package can run on the DS212j and a lot of people have already done this successfully. Combined with its low power consumption, this makes it a great device to have in your local network.
Unfortunately, installing and configuring the necessary packages and tools is not always that user friendly. Though, either Synology or the 3rd party ecosystem could change this quite easy in the near future by adding a number of these packages to the package center. The bundled MySQL database and phpMyAdmin are a good example. Both are officially available and setting them up is a piece of cake.