Will try our and will add it to our FOSS donation plan this year in addition to Duplicati.
My company built our SaaS apps on FOSS so we donate to 1-3 projects every year to give back, but obviously a reoccuring income is neccessary if one should be able to live of it.
I have unfortunately not written a single line of .NET code in my life, and would be useless in that regard. Can’t say I have an abudance of cash either (But will happily use company money )
But what Duplicati is lacking for me as a sysadmin / DevOps Engineer is a centralized server so I don’t havbe to go to our 12 web portals every morning to double check that backups have ran properly.
If I were to monetize Duplicati I would start by offering that behind a pay wall - and later perhaps offer a free version that’s good enough for small scale, and a “pro” version for better needs with included support.
I DO HOWEVER have compute hardware and datacenter space in abudance (Once again that company cash) - perhaps I can take a load off @kenkendk’s back / costs by hosting that for free?
Donations has information. Anything helps, but it’s not clear it’s enough for anyone to quit a day job. Open source (especially GPL) makes it tough to monetize. Some value-add might offer a path, BUT
Duplicati has an ecosystem of free or donation based third party monitoring tools that fill some spots.
I don’t want to get in deep in that, but the point is that monetization faces challenges of free software.
Anyway, something to think about to see if money is possible. For now, Duplicati relies on volunteers.
Thanks for the hosting offer. I don’t know what kenkendk actually sees here, but I’ll keep that in mind. Some of the low-cost hosting now used is a bit flaky. If we find test people, they would need gear too.
The user community eventually hits them but can’t provide good debug info. Formal beating on lots of systems equipped with good logging, etc. would be one way to help track elusive intermittent issues…
Once again, volunteers are needed. We need to recruit a broad base of community support somehow. There are lots of different components to making a software product. There’s a lot more than coding…
The solution I came up with for this is to have Duplicati report to my Zabbix monitoring server every time a job runs. In addition to logging both successful and failed jobs, it will alert me if too much time goes by in between completed backups. This is useful in cases where Duplicati ends up “stuck”, and neither succeeds nor fails at the job.
I have found in my experience as a sysadmin, that “Nothing happened” can be even more dangerous than an outright failure, as it tends to not trip any alarms.
You mind sharing how you did it? We use PRTG and I was thinking of doing the same thing, but I’d rather not have to reinvent the wheel if you’ve already came up with a good solution.
Duplicati can report the success / failure of a job through http. You could try to use a PRTG http push and set the scanning interval to fit the backup plan.
I’m not sure I would call my solution good. It works, but was cumbersome to set up.
I wrote a batch file that is called by Duplicati’s run-script-after option when a job runs. This batch file gathers some information from the environment variables that Duplicati sets when it runs and submits them to Zabbix by the zabbix_sender application. I then wrote a Zabbix template that accepts the inputs and populates the various monitors in Zabbix.
If the run-script-result-output-format setting is set to JSON, it will also submit additional data that I can use to track other things, such as the size of the source and backups, size of uploads and downloads, and various other helpful pieces of data.
I wish I could have Duplicati submit the data directly to Zabbix via http, bypassing the need for a batch file and run-script-after setting, but Zabbix doesn’t support accepting inputs that way.
I’m not sure how this would translate to PRTG, but I’m sure a similar solution could be put together.
Because Duplicati is now a company I am able to spend time developing features and maintain the project.
I have started the laborious task of upgrading to .Net8 as the current tools are becoming stale.
I have many plans for things to come, and some of those will be revealed soon .
I can reveal that we will hire people to work on the project, and the details will follow.
Setting up a build environment is a real pain as it requires keys from multiple companies (some non-free), tools, paths, etc, but it is and always has been possible to run the builds from any machine.
I have been working on a new way of building the releases, so it is (hopefully) less obscure how to set up a machine. The build chain tool also supports building packages without any keys at all, and with some flexibility in not having various tools (i.e. a Windows zip file requires just dotnet SDK, a Debian package also requires Docker).
The most generic method for Duplicati is the “webhook” method. Simply set send-http-url=https://example.com/path and you will get reports sent. The method does not currently support headers, but you can tweak the format, Feel free to register issues for supporting your favorite method, or submitting PRs that add the needed features.
I have looked into the webhook method before and while it’s exactly what I want my monitoring backend (Zabbix) doesn’t support gathering data that way. Supposedly in the next version they are adding a HTTP data-submission API, but I’ve read the specs and it doesn’t look promising. They require several header items to be set in order for it to work, and as you said Duplicati doesn’t currently support that.
My C# is pretty rusty, but I may look into making it work nonetheless.
Adding the headers is fairly trivial. It is a matter of adding an option to input the headers, and then setting them on the request in the HTTP report module.
I looked briefly at their json-rpc method and the hard part there is figuring out how to map the data. With the current code, it would be fairly error prone to mangle the report template into valid json-rpc.
A Zabbix module would be easy to implement for anyone who understands C# and the Zabbix protocol.
That would be neat. Right now I set the run-script-result-output-format to JSON and send the entire contents of %DUPLICATI__RESULTFILE% to Zabbix via zabbix_sender.exe, and it makes it pretty easy to digest on the back end.
I’ve spent a while thinking of how I might adapt this approach to use their json-rpc method, but haven’t come up with anything yet. I haven’t put a whole lot of time into it yet because Zabbix 7 is still in beta and I’m not convinced that they have it all set in stone yet.