Monday, 26 May 2014

Personal cloud storage alternative to big names

I have been a loyal customer of Dropbox for about 4 years now. I have been using in mostly to have a copy of important school work and projects, as conservative as I could be without deleting important files, I ran out of the 2 free GB. Now there are alternatives which give more space, namely Google Drive with it's free 15 GB, but instead of just switching, I decided to take another route.
I have decided to create my own cloud storage, which closely emulates the big names. I decided to make this an Open-Source project, like the rest of my projects for anybody to use and follow along thought the projects life. 
As expected, there are some requirements but the user will break even quickly. Lets crunch some numbers:
Dropbox(for a year): $99.00
OwnBox(For life): 

  • Rasbpberry pi: 35$
  • 16GB storage card: ~15$
  • Electricity: ~5$ (yearly!)
  • Managing your own cloud storage: Priceless
There are some other wires and cables that are needed and you could even go wireless, but since you are still reading this article it would be a fair assumption to think you probably have those already lying around somewhere. Also internet, if you are like me and have limited bandwidth, then you might run into some problems with that, but those are some excessive cases here. 

All in all between upgrading the Dropbox plan and going the rogue route, the choice is pretty straight forward. Lets no forget that any other increase in size afterwards (adding an external HD) would be a lot cheaper and the alternatives. 

Now a bit about the technical details of the project:
The program program consists of 3 separate parts each playing an important role not only in debugging but making it easier to add new features to the program. Starting from the backend, there is a program that is running only when necessary in order to create transfer reports and check what files are currently present on the server along with what version of the file is there.
The client side is a bit more complex, there is a deamon which is always running constantly checking the selected folders for any changes. When some changes are detected, the client program is called which deals with the transfer of files.

I have implemented a system of reports that ensures the server and the client are in synch. Each report contains the names of the files that each party holds along with a file version. The file versions need to match, and the user has a choice if they want to keep a file on the server after it has been deleted from the client.
To increase transfer speeds and make the synchronizations smoother, it is those reports that get passed back and forth, then if the server sees that some files are missing, it will proceed to request them. 

All transfers are done using the Open-Source OpenSSL methods. This has given me the flexibility to have more remote control over the server, allowing me to run custom commands and last minute debugging. 

Future plans:
- The plans for the future of this project include being able to have more than one user synchronizing to the same server.
- The ability to connect and interact with the database though http, making the interface more user friendly and easier to access from different locations.(Done, it can be accessed though the private section of www.cristianfrincu.com)
- As a continuation to the previous point, ability to send files to somebody though a link. 

I am very pleased with the progress in this project, I am constantly using it and I hope you will too!

All the programs have been fully written in Java. 
You can access and use the source code https://github.com/cristian-frincu/OwnBox

No comments:

Post a Comment