Recently, I’ve been hitting an actual use case that made me thing about putting data “in the cloud”. Actually, being an old-school guy, I wasn’t thinking “Cloud” at first, but looking for a mechanism to easily synchronize data between several devices, Linux, Android, even a Windows box. But looking at the available options, it was apparent that using some form of “Cloud Service” was the way to go.
But being old-school, confidentiality is part of the picture as well and like Fox Moulder says, “trust no-one”. So using some public Cloud service for customer-related data was ruled out (unless the clients support a strong auto-encryption scheme) and I was facing the task of providing our own company-run Cloud service.
Fortunately, I did not have to search for long: There’s a nifty open-source software called OwnCloud that perfectly matches our requirements: It can be run on a Linux server, we can have the source, and clients are available for all our platforms. And it promised to be up and running in a breeze.
We’re able to set up services that can be reached directly from the Internet, and have the servers under our administrative control. So setting up new software does not rely on any service agreements, nor does it require specific service from some provider.
To install the OwnCloud service, you have the option to download an installer from the OwnCloud download section. Additionally, there are pre-created packages for various distributions, which will likely help you to both install any prerequisite packages in the required versions, as well as keeping up-to-date. We still decided to go with the downloadable installer, which we put into the web server’s target directory (within an HTTPS server instance) and ran the installation through the web browser.
The installation wizard will check for the availability of required PHP extensions and that it has write permission to the current directory. Any missing prerequisites are clearly stated, you you’ll have an easy time fixing any issues. Once everything is set (and you have decided on a probable sub-directory to install to), the wizard will download the actual software and prompt you for the credentials of the to-be-created admin account.
What’s easily overlooked is the chance to set up a non-SQlite database – there’s a prominent warning that SQlite is being used but not optimum for larger installations, but on top (in other words, right above the warning) is an action item “Storage & database”, where you can change both the data directory and the database connection.
After pressing the button to finish the installation, you’re already done. That may well take less than a minute, if you go with the defaults or have the database credentials at hand.
Once you completed above installation steps, you already have a working OwnCloud server at hand. Granted, you’ll usually want to add a few users, too.
But on top of that, there’s some fine print to read, that will help your server to be more secure, more responsive, and will make it fit better into your overall infrastructure:
A good starting point is presented to you when you log in to the site as the admin user and select “Administration” from the upper right menu. OwnCloud checks for sub-optimum configurations and prints recommendations on how to correct the issues.
Another good source of information is the manual (for my younger readers: That’s the longish text stating how to use a product to receive optimum results, usually even structured now only into paragraphs, but chapters and sometimes individual documents, like “users guide” and “administrators guide”). There you’ll find a complete chapter on making your server more secure, another one telling details on what to backup, etc.
Another aspect I consider part of the initial configuration is integration with our backup scheme. Actually, that is fairly easy, as there are just three areas that need backup:
- The database, containing users, file permissions etc., is already part of our regular backup, so nothing special had to be done for this.
- The server installation, mostly code and a few configuration files, are all in the directory tree where I started the installation and will be backup up regularly, to make re-installation easier (any updates applied to the server, via the built-in web UI, will be in the backed-up version that way and available for restore).
- The user files, which I have decided to separate into it’s own file system, can become a rather big chunk of data, but probably need the most attention, in other words “shortest backup interval”.
And what about the clients?
Cloud Computing, in the sense of storing data in the cloud, is little more than traditional file services with an extra layer of granting access to the so-stored content easily to others. If you mostly want to use “Cloud Storage” for personal or team-internal data, you could actually use an FTP server, if you had access to a client helping you with more or less seamless integration into the various client platforms.
We have tried the OwnCloud-provided clients for Android and Linux openSUSE. Both provide a fair level of integration into the corresponding operating system, but on both platforms they are missing an essential feature: The native application cannot configure sharing, you have to use a browser to log on to the OwnCloud server to do so. Which in case of smart phones can become rather tricky. (There are plans to add this feature to the OwnCloud clients, and everyone’s holding their breath for OC 8.2 to have the API changes required for this to work).
On both Linux and Android, the client basically syncs the server-side folders with local copies. You can select which server-side data to follow, and even can have exception lists (i.e. to avoid synching back locally generated files to directories you only have read access to.) For Android, the client also integrates into the “share with” functionality, so that you can i.e. select your OwnCloud account when sharing photos. One places this doesn’t work with is the Android LibreOffice implementation – but that’s no show stopper, as you can simply open the local copy of a shared file via LibreOffice and once it is saved back into the local folder, the OC client will automatically send the update to the server.
All in all, OwnCloud has been the ideal solution to the problem I had at hand. It keeps my data synched across a number of clients (Linux, Android, even a MS Windows machine) and I can share the files with other users of our server. There’s much more that I could do with our OwnCloud server and playing more with it will show many more options, but for now I have what I need and can focus on more important problems…