Syncthing Management Platform

hi guysā€¦

does someone know, if there is a syncthing management tool, that uses the api for those guys who are running a huge amount of devices? means: a tool to have all important information of your devices at one pointā€¦

thinking of some features like:

  • online/offline status of devices
  • connection and status info
  • maybe some config info

etc.

2 Likes

There used to be a project called Metro.Thing (introduced in this forum post), but itā€™s sadly discontinued.

Maybe you could PM the author for the source (it used to be on GitHub), and bring it up to date with v0.11?

1 Like

yeahā€¦ tried to get it run some months ago and did not remember this. But I honestly thought of a online tool, maybe made of php? oO this morning I tried first really basic curl queries to my ā€œcloudā€ syncthing device - but this would take months for meā€¦

It will take months for anyone else as well, so you might as well get started :smile:

2 Likes

har har :grin: but waitā€¦ this is what I got: :laughing:

$url="https://xxx.mailify.de:xxx";
$apikey="xx-xxxxxxxxxx";
$call="/rest/system/connections";


$ch = curl_init($url."".$call);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_HTTPHEADER,array('X-API-Key: '.$apikey.''));
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);      
    curl_close($ch);
    echo "<pre>".$output."</pre>";

you are almost thereā€¦

$array = json_decode($output, true);
echo "<pre>".print_r($array, true)."</pre>";

and then pick (untested) the info you need from the array like

echo "Traffic IN: ".$array['total']['inBytesTotal'];

the rest is just selecting the right data, add a simple table, a few if to check for errors and a basic HTML document with a meta-refresh header that reloads the page every x seconds

good news guys :smile:

more tomorrow :wink:

thanks to @kreischweide so far!

yapā€¦ but this works fine for static info, which will be only updated after a change. for realtime stuff such as cpu usage, up & download rate etc I will need to use some js reload as you wroteā€¦

but what about bandwith in this case if I need to query these info lets say once a secondā€¦ :facepalm:

I was thinking of a potential feature Iā€™d like to bring up for discussion:

A Syncthing Device Manager.

For large clusters, it can be difficult/annoying to visit each deviceā€™s webpage to add a new device/folder to the cluster. With a feature like this, each device could specify a ā€œdevice managerā€. The device manager can then make changes to all devices that trust it: things like adding folders/devices, etc. Basically anything you could do locally from the device itself.

2 Likes

Yeah, thatā€™d be fairly neat. Another idea Iā€™ve floated once or twice but that I donā€™t think anyone else has picked up on is to use the CA system inherent in TLS. Normally we just go by explicitly trusted device IDs (essentially certificate pinning). But we might as well add the ability to trust any certificate (=device) signed by a local CA, thus having a potential master device able to automatically accept new peer devices.

2 Likes

need some little help: what is /rest/db/file expecting for retrieving file-info? the name does not work for me :frowning:

eg

[Aretha Franklin - Respect.mp3] => Array
        (
            [0] => 2015-07-02T14:03:17+02:00
            [1] => 3635013
        )

jap - thatā€™s what my wish is :smile: if you know to code (php?), youre really welcome :wink:

You need to pass folder and file parameters, i.e. ?folder=default&file=Aretha%20Franklin...etc.

1 Like

30 posts were split to a new topic: Separate/multiple API/GUI ports and authentication

That was kind of a tangent, and I think this discussion is valuable as is so I did some cleaning.

what Iā€™ve done so far:

  • responsive UI using SBadmin2
  • mysql-table for devices

6 Likes

is someone familar with php, angular and mysql and would like to help?

Iā€™m familiar with PHP and MySQL, and would have some time to add a few features next week. What are you thinking you need?

My two cents, but if youā€™re only storing device IDs, MySQL seems a little overkill when SQLite or even a tiny plain text file could do the same job.

1 Like

this would be great - because my php & mysql skills are little more than basic skills and I will not have so much time the next 4 weeks :smile:

my idea was to build up a platform to ā€œmanageā€ multiple devices with only the most important features:

  • adding devices to the stored devices
  • shutdown, reboot, upgrade the devices
  • showing dashboard info of the stored devices like online status, offline status, pings, down&upload rate
  • showing detailed info like connections between devices, ram&cpu usage etc.
  • managing discosrvs & rate limits

for the second ā€œversionā€ I could imagine some bulk actions, like adding discos (and folders) to all devices etc.

My problem: Iā€™m not familar with asyncronus calling the api to show some live data on the dashboard (e.g.). but every skill is welcome!! :wink: I could open a git tomorrow - if you would like to have a look on itā€¦

https://github.com/kreischweide/metrothing is back up!

everyone is invited to contribute and to upgrade it to 0.11 or 0.12 :sunglasses:

Thanks to Adrian @kreischweide ! :tada:

1 Like