First, I’d like to say, I like your product a lot! You’ve done GREAT job with client-side backup system which supports EVERYTHING a user needs. What I mostly like, is that you can use hell a lot different destinations, I personally use Amazon S3, but also OneDrive, several NAS, FTP etc.
What this product is lacking - centralized management. I’m thinking of creating one.
Since I’m not a pro-coder, I will not know all the specifics and nowadays “correct” methods of dealing something, but I am capable of programming and generating solutions.
First, centralized management needs client-side agent which communicates with central server (web-server probably, easiest to host and also probably to manage).
I have not decided which program language I should use for client-side agent. I do not want to make that mistake that it’s not possible to release client to Linux as well (I am a Windows man) and therefore I’d like your suggestion. Which programming language should I use in order to program language on Windows, but in future for Linux and other OSes as well? Something universal probably, not sure yet.
For client I thought:
- Client does all the “on demand” communications, which means client communicates with central server, not other way. Why? Because of port-forwarding. I do not want to forward any ports and therefore client opens all the connections and server just answers.
- Since I’ve never done it before, I do not know communication “standards”, but I’m capable of learning. I thought of JSON API on the server side and client-agent asks all the commands from server.
- Commands are straight forward - client-agent just asks for commands and delivers them to Duplicati REST API. Client-agent does not consist of any commands other than authentication (I guess every API needs somekind of authentication).
So, basically, process is like that:
- Client1 client-agent asks server for commands;
- Server answers to client-agent request, for example sends “update last backup time”;
- Client-agent gets the command, delivers it to Duplicati REST API;
- Client-agent gets an answer from Duplicati REST API;
- Client-agent delivers the answer to server;
- Server now has updated “last backup time” for client1;
Now, on the server side, I thought about simple PHP+MySQL. Since I’m not a designer, this product will probably look ugly.
At first, I’m probably going to make simple monitoring system (and reporting if anything goes wrong or doesn’t work) and later on, I’ll add client configuration options, group editing etc.
What do you think about it? Anyone already doing what I’m thinking of?
As I stated before - please help me to choose “correct” programming language for client-agent, for future multi OS.