Syncthing v0.12.0-rc1-c6

If you’re on v0.12.0-rc1, you must manually upgrade to -rc3 to get back on track. Sorry. Turns out, release candidates didn’t think they were prerelease versions, so didn’t upgrade to other release candidates.

This is the release candidate for v0.12.0. v0.12.0-rc1 is protocol incompatible with v0.12.0-beta4. There will be no further breaking changes, i.e. this v0.12.0-rc1 will be compatible and work with all the v0.12.x releases. Please give this some testing and report any issues; I’m aiming for a “real” v0.12.0 around November first.

Upgrade Notes

:bangbang: Both the discovery and the sync protocol has changed from v0.11. Devices running v0.12 will not discover or successfully connect to devices running v0.11.

:bangbang: If you run a private discovery server, you must upgrade it to the v0.12 release. The protocol and port number is different, so old and new discovery servers can coexist on the same machine and serve their respective clients.

:bangbang: The API endpoint /rest/system/discovery has been removed for POST requests.

:bangbang: The default list of discovery servers is no longer explicitly in the configuration - instead the configuration entry “default” represents the full set of default discovery servers. If you need to edit this default set, watch the startup messages for a full list of used servers and edit to suit.

There are probably more changes to come. Do not run this release unless you’re willing to participate in experimenting.

Changes since rc5

  • Bugfixes!
  • Optimizations!

Changes since rc4

  • Don’t deadlock on config change

Changes since rc3

  • Actually does something on Windows

Changes since rc2

  • Release candidates should upgrade to other release candidates :confused:

Changes since rc1

  • Bugfixes
  • Performance tweaks

Changes since beta4

  • Bugfixes
  • Proxy support

Important Changes and Improvements

:heavy_check_mark: Connection Relaying

Syncthing now has the ability to connect two devices via a relay when there exists no direct path between them (firewalls on both ends). There is a default set of relays that is used out of the box, although private relays can be used and relaying can of course be disabled. Relayed connections are encrypted in the usual manner, end to end, so the relay has no more insight into the connection than any other random eavesdropper on the Internet.

(Thanks @AudriusButkevicius)

:heavy_check_mark: Device Discovery over HTTPS

The global discovery protocol has been rewritten to use HTTPS over the standard port 443. A number of geographically redundant discovery servers have been deployed.

(Thanks @calmh)


Minor Changes and Improvements

:heavy_check_mark: Scanning Progress Indicator

Folders now indicate scanning progress in percent in the same way as while syncing.

:books: Documentation to update

  • “GUI overview” article

(Thanks @AudriusButkevicius)

:heavy_check_mark: Device Pause/Resume

(Thanks @calmh)

:books: Documentation to update

  • “GUI overview” article

(Thanks @calmh)

:heavy_check_mark: Signed Automatic Upgrades

Automatic upgrades are now cryptographically signed and verified before an update is applied. This also goes for manual upgrades à la syncthing -upgrade-from http://.../syncthing.tar.gz, which is thus a safe way to upgrade to a package of unknown provenance… There is a new CLI utility stsigtool to manually generate and verify signatures. There is a documentation article on the subject.

:heavy_check_mark: Extended Usage Reporting

Syncthing now reports what features are in use (such as Introducer, Master Folder, etc), as well as wether default or custom discovery and relay servers are used, and the number of CPUs in the system. This provides us with guidance about where to focus efforts. As this is a change from the previously reported data set, any previous acceptance of anonymous usage reporting is automatically revoked and the question pose again some time after installation. The exact details of the new report values are here and here.

:heavy_check_mark: Relaxed Folder ID Restrictions

Folder IDs used to be limited to a strict subset of ASCII with very few non-word characters, and maximum 64 characters. Ideally, we should have separation between the folder ID and it’s label, but we’re not there yet. However, in v0.12 you can use whatever characters you like, up to 256 bytes. This means accents, special characters, Cyrillic or Asian scripts, and so on.

:heavy_check_mark: Debug Output via API

:warning: In Progress, UI to be created and API to be documented

New API methods allow setting the debug flag on all of the existing debug facilities, and getting log output. Actual debug UI to be added soon.

:heavy_check_mark: Proxy support

Syncthing can now connect through a SOCKS5 proxy. Set the environment variable all_proxy before starting Syncthing, to a URL on the form socks5://host:port. This may get a cleaner way to configure it with time…

$ export all_proxy=socks5://10.20.30.40:6789
$ syncthing

Some of the stuff (namely dynamic relay try next relay if this one fails thing) is not merged and should be part of v0.12.

Also, people need to upgrade their relaysrvs and we need to upgrade relaypoolsrv.

1 Like

Indeed. “Release candidate” here for me means just that we won’t break the protocols more in v0.12. And if it seems to work reasonably well it can be released. :slight_smile:

This one requires a manual config fixup if you were already running a v0.12.0 beta:

Change:

<relayServer>dynamic+https://relays.syncthing.net</relayServer>

to:

<relayServer>dynamic+https://relays.syncthing.net/endpoint</relayServer>
1 Like

One addition to this: Only relays are broken after the upgrade without changing the config, it at least does not instantly crash which was important for me because I can’t access the config on one device at the moment and automatic upgrades are activated (probably port forwarding was broken after a reboot, stupid router…)

1 Like

I haven’t tried the 0.12 beta/rc builds yet (my nodes are all on 0.11.26), but I have a few suggestions/ideas:

  1. For nodes that are connected through a relay server, it would be nice (if not already done) to indicate that the connection is being passed through a relay server instead. Maybe some sort of little icon or label inside the Node name on the node list.

  2. Regarding the proxy server “all_proxy=”, would it be feasible to add this inside the syncthing config file?

Any chance we could have this in the gui?

The field Address is called Relayed via in the info of remote devices when connected via relay. Not instantly visible, but the info is there.

See…

To be honest, ALL_PROXY is quite a standard way in the sad people who use proxies community, and the library we are using does not support other ways, apart from copying and pasting the code they wrote into our own library.

I feel that such a small portion of people need this, that having it in the docs should be sufficient enough.

Does Go not support setting env vars for the current process?

Not trying to push for being able to set this in the GUI, but curious…

It does, but the env var is evaluated prior the runtime is initialized, as the dialer is initialized as module variable. Plus envvars as a config in our own process is just wrong.

Ah fair enough. I guess you could do some evil evil stuff with the monitor process being responsible for setting that one, provided it’s running… But that stinks incredibly badly for something that’s such an edge case.

Anyway, Linux users can easily set env vars (systemd and the like make it easy, or there’s .bashrc and friends which are nice and accessible), and SyncTrayzor also makes it easy, so there are plenty of workarounds for those who need them.

I am not against adding it. I think it’s just a rare case that someone will need this, that it’s not worth the effort, and it’s just better to document it, and direct people to the right place when they need help.

I see that, and I agree. 80/20 and all that.

Yup I saw that message but still wanted to mention it since a simple variable set would seem like it logically would go in the program’s configuration settings rather than something coming from an environment variable. However, I don’t know how complicated it would be to have this variable in the config.

From what @AudriusButkevicius mentioned afterwards, it seems it wouldn’t be a straightforward thing.

Not a big deal, just wanted to mention it.

Hi

“Syncthing now reports what features are in use (such as Introducer, Master Folder, etc), as well as wether default or custom discovery and relay servers are used, and the number of CPUs in the system.”

Can you please explain the above statement more in depth? Is it going to report the names of the introducer, name of folders etc? This is not clear to me.

It will just report a 1 if you are using the introducer feature and a 0 if not. Same goes for the other features which were added to the report.

The result is this: https://data.syncthing.net#features

2 Likes

in rc1 and rc3 on windows x64 not update index of sync folder. For repeat issue upgrade to rc and run syncthing.exe -reset, and run syncthing.exe normally.

1 Like