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