Tuesday, February 25, 2014

Network File Browser front end for ChromeOS and Chromebooks

(Here, I am accessing my ArchLinux Pogo Plug ARM server via SFTP on my Chromebook)

One of the thing that the  Chromebook (ChromeOS) lacks is the ability to access local network share.
This isn't a glaring omission nor oversight on behalf of Google. As we know, they designed Chrome OS to be an Internet device that uses Google services. Chromebooks are designed and sold to access the public Internet.

However, if you are a home user who wants to access his local files on his local NAS or network file server, you are out of luck.  Maybe you are a school IT administrator who is also looking into deploying Chromebooks but want his school staff and students to access the local network file server.

Well, you can. Sort of. It requires building a front-end to your network shares using some popular open-source projects and this blog post will chronicle two of them:
Pydio (formerly AjaXplorer) and OwnCloud.

Both are PHP front ends that allow you to access file servers using just a web browser. Both have their plus and minuses. In short, you will need a LAMP stack box to act as the gateway to your file services. In other words, you'll need a Linux/OSX/Unix based web server to act as a middleman gateway. Think of them as mini, low-end consumer, small business asset management systems that works in the browser.

Read On.

This blog article will about these two projects with the idea of using them for Chromebooks. Sure, you can use them with any computer, browser but the point is to have a solution for Chromebook users to access their network file servers.

I installed both on an UBUNTU 12.04 VM with 8GB RAM and 4 cores dedicated inside my hypervisor. Installation for both is straightforward as you can just add the repo and do an apt-get.
Pydio also uses MySQL for things so you will also need to create a database schema. Installation may be straightforward but things just don't work out of the box quite yet.

You'll need to be looking at your system and apache logs to note errors. You will also need to change your PHP's ini settings to allow things like larger file uploads, extending execution time and the likes. If you are at home with a LAMP stack on Linux, this is no problem but I can see it being an issue for newbies. OwnCloud was the much easier installation as I didn't have to hunt for added PHP extensions.

Once installed, both of them will run you through the installation and creation of users. OwnCloud, to me, seems a bit more insulated and I think the general idea of it was to hosts and dictate it's own datastore.  The idea of external storage seems to be an afterthought as it isn't well thought out like Pydio. Owncloud support things like Google Drive and DropBox but I think that was just added  feature creep as you can already access those services on your Chromebook. Pydio may not have DropBox and Google Drive integration but I felt the ability to add external shares was built from the get-go. I remember playing with earlier versions of AjaXplorer (original name of Pydio) and it had built in SFTP support.

(Above, the different File Services you can add to Pydio)

(Above is the Storage dialogue for Pydio to add SFTP shares)

(The interface for OwnCloud to Add SFTP Shares)

(Here are the options OwnCloud provides for external storage)

I had both installed on the same machine where I host and run my PLEX server. So, I added the PLEX drive to both along with SFTP mounts to a FreeNAS and PogoPlug. I also added SAMBA shares to a Windows box. I have large files and both seems to be a bit problematic with large files. For example, I have a bunch of Hi-res images and with  Pydio, running it the background, would try to generate thumbnails. The indexing would bring my server down to it's knees. I had to restart Apache way too many times.

(some examples of Apache/PHP errors galore below)

CPU and memory consumption would spike and with both, I would notice server time-out errors. I think I spent more time debugging PHP and Apache errors while reviewing these two than actually using them. I should not have had them index my large PLEX movie collection.

Chrome tended to suffer and crash quite a bit as well. I guess, it can't handle a 13GB .M4V file in a browser.

Thus, I consider these low-end asset management systems. If you are a school IT administrator looking for a Chromebook File service solution, I wouldn't take my experience as a reason NOT to use them. My use case is a bit special and I doubt schools would host 500-1GB image files along with 40GB MP4 video files. For the general small business office network environment, these two will handle medium res JPEG, short video clips, and office docs just fine. Once I removed my access to my ultra large files, everything ran butter smooth. For a school installation, I suppose you can throw some hardware at this: adding tons of RAM, cores, and tweaking PHP. With enough horsepower, I suppose you can over build it to handle larger files.

I would have to pick Pydio over Owncloud and I will get into details why I prefer it. Owncloud does have some of it's pluses. For example,you can edit LibreOffice .odt files in-line in the browser if that is your thing. It also seemed more responsive in ignoring my large files. Pydio would hang for quite a bit in the initial inventory scanning as ImageMagick was trying to generate JPEG previews from my large PDFs.

However, Owncloud suffers from quite a few things. It appears to only have a file list view whereas Pydio has thumbnail, detail and long list view. Owncloud likes to show every hidden file so the views gets listed with a lot of ".__" hidden Linux/OSX files. More importantly, OwnCloud's implementation of SFTP appears to be half-ass. Maybe it was trying to index my volume. I don't know but a lot of my folders appear empty. Thus, I was seeing a lot of "Nothing in Here" messages with OwnCloud. I had none of these problems with Pydio.

Pydio, is in a different league altogether. As the former name suggests, it uses a lot of AJAX. And what does this mean? Well, it feels more like a desktop app than browsing a web site. Elements glide and animate in. There are modal sliding dialogues and things load in-line. Webspeaking, Pydio is more polished in terms of user interface. It also has a rich collection of plugins and extensions. For example, you can click on an image and have PIXLR image editor load up to edit your images a la Photoshop style.

Here is an example of using Pixlr plugin to edit a remote image off a FreeNAS SFTP share on a Chromebook.

Pydio is much more beautiful. On a side note, it looks gorgeous on a Macbook Pro Retina running OSX. I wonder why and pulled up Chrome's Web Inspector and notice they're using Helvetica Neue in the CSS. Thats why it looks gorgeous! You won't get that same level of gorgeousness on a Chromebook and ChromeOS as that font is not available. It still looks good on a Chromebook but not quite as good as on a Retina machine with Helvetica Neue font installed.

Neither of them actually allow you to do office editing in-line. OwnCloud edits .odt files but that is just it. Both allow you to do simple text-editing but nothing like Word or Excel. Viewing PDF is fine on both. There are also a bunch extensions and plug-ins to do extra things that I didn't get into.

Here, OwnCloud allows you to edit an ODT office doc file "in-line".

Both allow you to "in-line" edit plain text files like source code. I can see this being handy if you want to quickly edit text files remotely from your Chromebook.

For Office documents, I notice ChromeOS's built in QuickOffice will allow you to edit but the file will need to download locally first. I guess that can be the work-around. You would have to save and then re-upload back.

As for general browsing, you can navigate both easily but I give Pydio the clear advantage with its slick use of AJAX and CSS design.

Workflow wise. There are general things that both do that are competent. You can bookmark, move files around, send email links, download, and share files with others. I didn't look into users and groups ACLs much as I intend to use these for a single user. But in my short time, I notice you can do things like assigned access rights to certain users and groups. There is some granularity in access controls on both. The difference between how these two handles users may be a deciding factor in your deployment.

(Here, you can upload files from your Chromebook to a remote File Server)

The problems I see with these two are performance on how they handle large files. Do not expect to stream large movies off either. Use PLEX instead. Hence, I would not use neither as a solution to watch movies off your file server. You can use them both to download files to view locally. Do not expect to use these as asset management systems. Rather, think of them as two front-end clients to access your files.If your needs are to access, upload, download files to and from your ChromeBook to your file server, then yes, you can use either of them.

At this point in time, I would have to give the Pydio the clear edge in terms of choice. It does require a bit more work to install. Both are not ideal. Sure, you can get by with using public cloud services like Box.net, DropBox, and Google Drive. However, for those who need and require private network file server access, these two are the ones to look at.


1 comment:

  1. Im the new owner of a c720 and I absolutely love it. Unfortunately bandwidth requirements combined with the limited storage capabilities make "online only" impractical for me so im poking around trying to solve some of the headaches which this creates. None of this would be as much of a problem except that I feel like my workflow is constantly being disrupted to handle some aspect of this, whether its uploading or downloading a file or manually copying and pasting things from place to place. Im slowly coming to the realization that I will end up scraping ChromeOS regardless of how well it works(and how much I enjoy using it) and going with a linux distro such as Xubuntu or something similar. From my experiences running linux via crouton, the performance of linux even with only 2GB of Ram is spectacular. Anyway, it at least makes more sense than setting up secondary servers which waste resources just to complete something that is pretty much a standard task at this point.


    P.S. I didnt even mention bandwidth caps from ISPs and while rare in the US are going to be a reality for us very soon.