I manage a large fleet of Syncthing machines over remote links often slow and high latency. Web UI became somewhat of a burden so I wrote this quick and simple CLI tool in Go using Syncthing API. For now it just displays a dashboard/status of folders and devices.
$ stc --apikey=XXXXXX --target=http://127.0.0.1:8384
Host Uptime CPU% Version
homenas 2 weeks 0.0% v1.19.0
Folder Paused State Global Local
pics false idle 37 GB 37 GB
docs false idle 4 GB 4 GB
backups false idle 86 GB 86 GB
Device Paused Conn Sync% Download Upload
office false true 100.0% 11 kB 11 kB
laptop false false 100.0% 0 B 0 B
jakob-home false true 100.0% 89 MB 447 kB
backupnas false true 100.0% 6.3 kB 7.0 kB
homenas false true 100.0% 0 B 0 B
Planning to add various actions available in the API as POST in a subsequent release.
Please send comments, remarks, bugs/issues, etc.
I like the simplicity of the output .
Just two comments:
Windows binaries need to end with
.exe in order to be executable.
This doesn’t work with HTTPS, does it? I get the following output when trying to access Syncthing.
Get "https://127.0.0.1:8384/rest/config": x509: certificate signed by unknown authority
You could add this to the contribution section in our documentation. Feel free to make a PR for this at https://github.com/syncthing/docs
Right, I forgot about that. I will fix .exes later… Also thanks for the cert info. I can add a flag to ignore cert errors.
The cert error is fixed now with a new flag
I’m trying out the new release right now, but I only keep getting the following error.
invalid character 'N' looking for beginning of value
This is under Windows 10 and happens with both 386 and amd64 versions.
Edit: I’ve just seen there are
arm64-android versions too. Is there a specific reason for limiting Android releases to arm64 only?
TBH I have not tested it under Windows yet. I probably should do it now.
As for Android and iOS I think they just built because go has targets for them. I don’t really support them and will probably remove the binaries. These are not phone apps as there is no UI.
invalid character 'N' looking for beginning of value comes up when invalid API key is specified, I need to see why it’s not saying “Not Authorized”, which comes from the REST API. I suspect that
N is beginning of “Not…”
Tested again, and that was my mistake. The API key was correct, but the GUI port was not. The current binaries do work in Windows.
For the record, the standard linux binaries can be executed in Android from the command line and they do run fine there .
Okay bugs fixed, tested on Windows too.
Stc can now find apikey and target on it’s own if it’s placed in Syncthing home dir, or you specify it as a flag
I’m also wondering perhaps instead of developing this on it’s own I should be adding this stuff to syncthings own
Congrats on the v1.3 release @tenox. I noticed among the commands you added, there is some duplication regarding the built-in
syncthing cli command. Could be worth aligning with that, or just leaving out those commands that are already in the official CLI? Stuff like
Ideally, one should be able to add an
alias stc=syncthing cli and use the same commands. Or just leave them out of stc and refer to the already implemented ones. Some nice additions of yours would certainly be welcome in the official repo as PRs. That would also make eventual integration into the main CLI easier.
One more nit: The
APIKEY environment variable you introduced could be aligned to the official (but undocumented!)
STGUIADDRESS variable names. So if you start Syncthing and then use stc in the same environment, things work magically when the variables were specified.
On Windows, you can install stc via
scoop bucket add rasa https://github.com/rasa/scoops
scoop install rasa/stc