232 comments

[ 4.0 ms ] story [ 82.0 ms ] thread
only if I can filter what to sync locally
Syncthing works brilliantly! The web UI is excellent, warns you when you're about to do something ill-advised, and stuff like QR codes makes adding clients and folders fairly easy. The separation between folders and devices is handled well. You can easily have half a dozen shared folders between several computers with any mix-and-match combination including which one is 'authoritative' and so on.

I used to use it on Android to keep my 'camera roll' synced to my desktop. I preferred setting the ignore file to exclude android's thumbnails directory, but otherwise it worked great. I'd take a photo with my phone and almost before I could open the shortcut on the desktop, boom, the photo was there, since the android client detects changes in the filesystem.

I also used it to sync my password database, and a cross-platform notebook app's database. Worked flawlessly for all of them.

Ditto for a folder shared between my MacOS laptop and Windows desktop.

Lots of controls, especially in the forked android client. Don't want the sync client to run on any network other than your home network? Done. Don't want your syncthing clients to try and do NAT transversal / discovery outside whatever network it's on? No problem.

The biggest bummer is that there's no iOS client. Had to switch to Nextcloud, which so far has been working OK, but the number of people that have problems with the iOS client is quite high (problems such as syncs being so slow it takes days to sync a camera roll), and it's generally sluggish and doesn't work in the background (yes, I know, Apple's fault.) However, Nextcloud does allow me to sync contacts and calendars (I think. I haven't tried to set it up yet.)

One warning: Sycnthing really does not like it when you delete the dotfile folder inside the shared folder(s). Don't do that :)

I would not qualify the web UI of "excellent" : understanding the relations between paired devices, remote devices, folders you want to sync, and so on is harder than what it should be.

Likewise, the android application is so bad the best way is to open the web UI on your phone to do stuff (and sometimes, it's the only way to achieve some goals).

There is definitely a lot of room for improvement for easier adoption, yet, this is one of the few sync app that work for me, even behind NAT, with closed ports, and so on.

The first thing I really like about syncthing is that it does what it is supposed to do very well (besides very seldom glitches), while not being dropbox, nextcloud, owncloud, etc. but p2p and entirely independent of any external tools/devices/etc.

The second thing I like is that it is a successful FOSS project, meaning it works and is being regularly and often improved by its users.

Your comment, as helpful as you may feel it is, is contradictory to my second - very strong - feeling.

I really think to UI works quite good, and by god, if a better solution is so obvious to you, why haven't you proposed it yet, or - god forbid - made a merge/pull request??

> and by god, if a better solution is so obvious to you, why haven't you proposed it yet, or - god forbid - made a merge/pull request??

Because there isn't any obligation to? Why do you think you would be entitled to ask for that?

Aren't they just suggesting to open a bug/issue in place of complaining on HN? Seems a fair, small ask to me.
There is a discussion being had. This guy was sharing his opinion about syncthing. That still doesn't obligate him to open a bug or do any work for the project.
"Entitled to ask"?

I think freedom of speech allows for it.

Can I have a million pounds, from you personally, please?

Also, that might be the small nudge which potentially has a user actually contribute in some circumstances.

I'm not sure your question is fair.

Perhaps "entitled to ask" is a poor choice of words. Yes, freedom of speech allows bipson to ask about contributing. It still comes across as entitled. The question was clearly laden with some expectation that Reventlov should go do work for syncthing instead of sharing an opinion on Hacker News.

We're just here having a conversation. The expectation that a user MUST do something for an open source project because they have an issue is a tired take. It's not as though Reventlov is blowing up Syncthing's development team with demands about how to make it better. And, for all any of us know, Reventlov may have already submitted PRs or opened issues for Syncthing. Or, it could be the case that there's a different piece of software suiting their needs better, and that's fine. Or, Reventlov maybe just doesn't possess the technical skill to contribute in that way. And that's okay too.

Bludgeoning people with an open source virtue-stick for sharing an opinion isn't helpful.

Hmm, fair point.

But just as much as you consider an "expectation that a user MUST do something for an open source project" is a tired point, I consider the endless ranting by entitled FOSS users an obnoxious trend.

And btw. I never said something about "must", I asked why not choosing - OK, maybe strongly suggesting - another option.

Maybe you took my question the wrong way, but (maybe just as much misguided) I took the "opinion"/"discussion" not as opinion, but for the lack of any helpful suggestion as merely a rant.

I was raised not to needlessly complain about free things, without considering to take things into my own hands.

And even if you don't know how to code, suggestions and discussions are better had in an issue tracker, right? Otherwise, what's the point?

If one is not a user, and considers something else to be better, why voice such a strong opinion?

> I consider the endless ranting by entitled FOSS users an obnoxious trend.

There is a massive difference between voicing your opinion about something in a public discussion forum and hounding the developers of a project because they don't fix bugs or implement new features on your say-so. One of those is making conversation, the other is entitlement.

> Maybe you took my question the wrong way, but (maybe just as much misguided) I took the "opinion"/"discussion" not as opinion, but for the lack of any helpful suggestion as merely a rant.

Sometimes, you can recognize that something is bad without knowing the best way to fix it.

> I was raised not to needlessly complain about free things, without considering to take things into my own hands.

Okay, so that was how you were raised and how you operate. I don't see the reply as needless complaining. It is a critique of some specific issues. It was constructive criticism, because it presented a specific set of things that could be improved upon. I happen to agree with those criticisms, even though I generally think Syncthing is a great piece of software.

> And even if you don't know how to code, suggestions and discussions are better had in an issue tracker, right? Otherwise, what's the point?

What's the point that any of us are here talking about anything?

> If one is not a user, and considers something else to be better, why voice such a strong opinion?

Because people make conversation and have opinions. Are you familiar with socializing? It's okay to not like something. It's okay to not like _parts_ of something.

Never really had any problem understanding the relationships, and haven't met anyone that has so far. Then again I'm a programmer.

How would you make things clearer?

The thing with the .stfolder file is annoying as hell. I use it to sync the build output folder for my Android builds but sometimes I need to run a clean and it wipes out the folder. Syncthing's developers for whatever reason just can't seem to grasp that sometimes I could careless about a folder's history and just need my files synced.

My fix it to run `touch .stfolder` in the build directory which fixes it but seriously Syncthing? Just put in some reasonable defaults and call it a day.

Otherwise it's perfectly fine.

(comment deleted)
If you put a non-empty placeholder file in that folder, it won't be empty any more, so it shouldn't be removed.
Yea but it doesn't matter. The clean from gradle deletes the folder entirely and creates a new one in it's place. I don't care. Just sync the path. That's all I need. Instead Syncthing literally stop syncing ALL folders because "oh no something went wrong".

For whatever reason open source software always has these weird edge case engineering "solutions" that really aren't that great. If someone was actually a paying customer and asked for this the engineers would just figure something out instead of making excuses for why it is the way it is.

It's easy to open a pull request instead of complaining
Commercial products usually aim to satisfy its paying customer's needs. FOSS is, not always but most times, about satisfying one's own needs. So it won't be that easy to change a developer's mind who is determined about their way of doing things even if it is not the best way for others.
It's also kind of arrogant of FOSS advocates to say "just make a pull request" whenever there's criticism of anything FOSS. You could spend weeks working on something only to have the maintainer say no and I've seen this happen and every time it does I just think to myself "welp there's another person who will never make another pull request again".
As a FOSS maintainer I always try to make it clear that before trying your luck with a PR, you should always first engange in a conversation with me.

Seems kind of obvious to my eyes, asking, talking, discussing about some change before doing the actual work. But as it seems, "obviousness" is in the eye of the beholder...

That's fine and all except that the typical refrain from internet folks is that if something is free then you are not allowed to critique, comment, or request changes. If you really care about freedom you can handle a little bit of online banter.
No one is saying you're not allowed to critique the software. You're critiquing the people who create that software for free
Then fork it? No one is stopping you.

I assume you don't care about missing out on updates since that's the free work you're complaining about

> The clean from gradle deletes the folder entirely and creates a new one in it's place.

Maybe it's possible to .. not do that?

You expect me to not use a basic feature of a compiler?

o_O weird take but k

If a build system produces an adverse outcome, it is often possible to customize it so that it does not delete things which you would rather not have deleted. (I've no idea whether this is specifically easy or not in gradle)
> The clean from gradle deletes the folder entirely and creates a new one in it's place.

That's really bizarre behavior. If the folder has no files or zero byte files then it might make sense, but if gradle's deleting non-empty files that don't concern it, that seems to be more of a problem with gradle.

I get the point though; if there's no versioning, why bother having an empty folder?

yes the .stfolder is a minor nuisance most of the time, but it's a lifesaver if for some reason or other your folder gets removed or a mounted device is no longer there, or one of a hundred other things that can go wrong with a folder.

then you _really_ want syncthing to stand back and hold its hands up, instead of syncing deletion events to all connected devices or sending all your friends your entire home directory or something like this.

imo, it's a good safety tradeoff, and like so many of those (e.g. short vs long passwords) they might seem annoying most of the time, but prevent incredible damage that _one_ other time.

I understand all these things because I've done this professionally for quite some time. However I've just explained that this is my build directory which means it can be deleted and I won't care. Every build quite literally overwrites all the output files so it's destructive by it's very nature. Syncthing already has an option where it won't sync deletes as well. I just don't understand why it must absolutely have an stfolder path. There should be a destructive sync option where it won't care and will just sync.
I suggest you put your build folder inside a synced folder, instead of syncing the build folder directly.
This is actually exactly what I started to do. Was just kind of annoying :)
>The biggest bummer is that there's no iOS client.

https://www.mobiussync.com/

Second this.

Works flawlessly, is rather cheap, and the developers encourage donations to the main SyncThing project.

How is "you have to manually copy files around every time you want to use them" "works flawlessly"? Have you not seen how stuff is supposed to work with cloud storage providers in iOS? Because it's indistinguishable in function from local on-device storage.
My use cases may be simpler than yours, but I don't copy files around.

I usually sync PDF and epub files to my iPad and open them directly from the sync folder in Apple Books.

Maybe it works flawlessly inside the limitations that non-Apple iOS sync apps have?
Yes this. Best money I’ve ever spent on software
Okay, I guess I should qualify that and say that there's no iOS client that is actually practical to use.

NextCloud integrates into iOS's Files app pretty tightly as a 'storage provider' or whatever Apple calls it. End result is that my password database is magically up-to-date whenever I go to use it in my password manager, probably because Files sees an app trying to access the file, pings NextCloud to say "yo, is this shit up to date?", and then my password manager opens the file. I don't have to worry myself about background sync and such.

I didn't have to do jack shit to open the database the first time; the built-in iOS file-picker that came up let me select nextcloud as a source, and then my password database. Done. It is two taps to get that database open now - one to hit "passwords" in the keyboard area, and the second is me TouchID'ing to unlock the database.

Looking over the Mobius faq, it appears to be vastly inferior, with no guarantee your files are synced at any point in time, and you have to manually push files from Mobius to Files, and then access them in apps from there:

> iOS apps cannot access each others’ files. This means you will need to copy files in and out of Syncthing using the Apple Files app.

I wouldn't do that even if the software was free. And they want me to pay for that? No?

I sometimes have the same problem with Android apps that store their files into their private folders, protected by the OS. I can't use Syncthing to backup those files to my computer. Either the app lets me configure the storage location to something that the other apps can access or I uninstall it and use a different app that lets me do that. If the OS gets into the way of what I want to do, oh well, that's one of the reasons why I'm using Android and not iOS. Android gets in the way but not at much as iOS seems to do.

A better way should be creating a whitelist of apps that can access the storage of other apps. Gpx tracker app? Add Syncthing to its whitelist, and the file manager I use instead of the system one.

It's Apple. You are of course welcome to pay their exorbitant development fees yourself, go through the insane review process and publish your own competing app!
You can't publish your own competing app. The desired behaviour requires running a background service (not allowed) that watches arbitrary folders (not allowed).
I guess I'll just have to pay $49.99 a year for iCloud!

Why isn't this a lawsuit yet?

Be the change you want to see in the world.
Lawsuit for what? Not providing an API for a feature you want?

It's not like Apple specifically advertised background services, then lied about it.

The device is specifically built like that, and you can buy a different phone if it's that big of an issue.

It feels like complaining your toaster doesn't have a dark enough toast setting that you want. Is there a lawsuit in that?

> you can buy a different phone if it's that big of an issue.

- I can't change my car's satnav. You can buy another car if it's that big a deal.

I think we can agree, the above statement reads silly.

Sometimes, no matter the deal size - buying a new thing isn't always a reasonable option.

There are cars where you can change the built-in sat nav?
Nearly all of them. Changing the media center is a well sypported third party customisation for most vehicles.
Yup, almost every single car has this ability, sat nav or not.
Full agreement the above sounds silly. So really it comes down to line between the responsibility of the consumer, and the duty of the product creator to say what the product can or can not do.

If you really care about replacing parts in your car like the satnav, should you need to do research before buying instead of assuming it works that way?

Or should we have rules that all sat navs need to be replaceable so consumers don't need to do that?

I honestly can't draw the line myself, I just try my best to identify what I want in a product before purchasing. Especially huge purchases like a car.

For engaging in anti-competitive behavior. Forcing a single App Store on an os is much less draconian than offering a broken interface to basic OS functionality in order to prop your own product above others. Imagine if Windows downclocked whenever you wanted to use an office alternative. This is not much different.
I think you lost the plot - you can publish a competing app that uses the Files app for sync, just like NextCloud does.
That is a somewhat combative thing to say.

We see a NextCloud dev explaining that background uploads don't work herehttps://github.com/nextcloud/ios/issues/215

And we can see syncthing devs lamenting the many issues with an iOS client here https://github.com/syncthing/syncthing/issues/102

It may be the case that file eventing now works, but a quick check with an iOS dev friend suggests that the filesystem sandboxing is too restrictive to be meaningful anyway.

Further on this issue, consider that a functioning syncthing client is a node in a p2p network, so must be able to advertise and listen to requests in the background as well as the background jobs that NextCloud requires (as NextCloud is centralised it doesn't need node level co-ordination) - so a partially working NextCloud client is good enough, but a partially working Syncthing client is woefully broken.

Third party iOS apps do in fact have access to background tasks. There’s even a variant dedicated to longer-running tasks, like lengthy file syncs.

The difference is that instead of having an ever-running daemon, the developer schedules tasks with the system, and system decides when to run them based on network availability, battery charge, etc as well as the app’s behavior (badly written/inefficient background tasks and frequent high intensity task requests are penalized).

$99/year is hardly exorbitant.
Plus ~30% of your revenue.
correction: 30% of your revenue for certain business models. Still too much, but let's at least be somewhat accurate. Plenty of apps make tons of money on the App Store without every paying a dime to Apple beyond the $99.
Files sees an app trying to access the file, pings NextCloud to say "yo, is this sh* up to date?"

What does it do if you're not connected? Don't mind it checking whether the local copy is up to date, but I'd be concerned if the sync trigger is you opening the app.

My iOS Nextcloud is stealthily paused when in the background (a few kb/s e.g. just enough for notices) as I think most iphone apps. So it is not competitive with apple backuo.
> Lots of controls, especially in the forked android client.

Here's that fork: https://github.com/Catfriend1/syncthing-android

You can also search up Syncthing-Fork on Google Play.

Yes that was annoying to me at first. The official client seems to still get updates, so you don't immediately see anything wrong with it, but has a couple really annoying issues that have been fixed in Syncthing-fork for years.
I tried Syncthing, then I tried Nextcloud, and for the goal of just syncing camera roll and backing up my password manager, they were both a bit of a hassle.

Now I use Minio with FolderSync (Android App, I use the paid one, but the free is perfectly capable) to backup my camera roll and I wrote a very simply WebDAV server in Go to backup my (Android) password manager DB which only supports WebDAV, I sit NGINX in front of them both to terminate TLS and to handle basic auth for the WebDAV server, though I could easily implement basic auth in that too (again, my password manager only supports basic auth).

If someone can suggest a better password manager for Android with a good UI, good integration (e.g. auto-fill), has a Linux desktop app and can backup to WebDAV or Minio I'd jump in a heartbeat.

I considered Bitwarden, but I don't want to run the Mono/Windows server container, and I don't want to rely on the Rust port which is behind in features and is susceptible to the upstream breaking APIs.

Keepass2Android/KeepassDX with Nextcloud? I don't understand how running Minio with a custom built webdav server is easier than Nextcloud has integrated WebDAV access.
I used to run Nextcloud. Nextcloud did a bunch of stuff I didn't need, is a larger attack vector and usually took an entire afternoon/evening every time I needed to do an upgrade. So far I spent less time setting all this up, and writing a WebDAV server than any one upgrade of Nextcloud took me.

Minio is zero-maintenance, if it needs an upgrade I just pull a newer Docker image. My WebDAV server is fewer than 100 lines of Go and extremely easy to maintain.

I run Nextcloud in a docker image (on unRaid). Upgrades are a docker pull away too, never had any issues.

I use Nextcloud on my phone (Android) to backup my camera too, the automatic sync is wonderful and works well. It does stuff I don't need too, but it's pretty easy to use and setup and it integrates well with the OS (Windows and Mac at least).

> I considered Bitwarden, but I don't want to run the Mono/Windows server container, and I don't want to rely on the Rust port which is behind in features and is susceptible to the upstream breaking APIs.

"The server project is written in C# using .NET Core with ASP.NET Core." https://github.com/bitwarden/server

Seems like alternative DB providers is in alpha stage right now.

Mono and netcore is not the same, netcore is one of the more wonderful things I've worked with if I'm to be completely honest. Then again, I also kinda like PowerShell

> The web UI is excellent

The web UI is perhaps the only pain point of syncthing. It's very confusing around folder paths VS IDs, especially around the "Default Folder".

Functions like Actions > Show ID are presented poorly.

Importantly, the UI is not intuitive at all. You need to read the docs to understand what you are supposed to do.

To add there is also Syncthing for Android TV, makes so much easier transfering files between devices, like to a seedbox.
Oh really? Didn't know that.. very handy!
I could never get this to work on my home network. ¯\_(ツ)_/¯
You have to force it to use wlan or wireless. It solves the problem. Also, wait for a few moments for it to be able to detect your other device.
If you're using Windows, make sure Windows doesn't think your network is public. My dad's computers thought they were on a public network and so wouldn't see each other directly (they were syncing though, very slowly via an external relay).
Is there an obvious way to use this with rclone?
What are you trying to do?
I guess it is more one or the other depending on the use case.

I've been synchronizing local data to remote data using NFS and Syncthing for a while now instead of doing batches of rclone, if you were referring to this use case.

... I actually use rclone mount _instead_ of sync for cloud storage. Tried syncthing a long while ago after finding nextcloud unreliable. Then stumbled acrosss a comment somewhere that talked about the mount feature in rclone (https://rclone.org/commands/rclone_mount/). This is probably only practical for me now because we've got a 1G/1G pipe to the Internet. On the internal network I'm back to using nfs mounts (or samba for the Windows machines). Syncthing is good, but over time I've found all sync solutions to fall short. For backups I use a combination of rsync to the file server on both Linux and Windows, and then rclone out to the cloud.
It's sufficient enough for my needs. I use Joplin with it as well as no-frills file syncing across my home network. Just a note on revision history: it's better to configure this feature on the notetaking app alone while disabling it on Syncthing.

My only gripe is that this utility may soon become deprecated as Android continues to update their convoluted storage schemes.

Can you share a reference wrt evolving Android storage schemes?
Syncthing has been working for me flawlessly over the last year. Very impressed by it, especially compared to Dropbox, which is a CPU hog and has become a nagging salesperson on my computer.

Highly recommended.

Nothing but good things to say about SyncThings. I'm only using it on a couple of computers to keep a small about of things in sync, but it always works flawlessly.
I recently started using this to sync a few folders full of some code and documents between three of my computers. So far, it works very nicely, to the point I don't think about which machine I sit down at, because I know it'll already have the stuff I'm working on, all ready to go, without any fussing around or needing to running `git pull` in a bunch of different folders to get caught up to where I left off. I like that there's no cloud dependency and no single point of failure.
I have switched from Nextcloud to Syncthing. The former was a resource hog that was eating up too much everything on my modest VPS.

I share the files on my local network at home between phone, laptop and desktop. My only issues so far:

- I need to manually start Syncthing on the devices, whereas Nextcloud was always running on boot. Not sure if I should start it every time, especially on the Android phone which cannot sync while away from home. I do not want to empty the battery while outside of my LAN, + the persistent notification "Syncthing is running" is annoying.

- I need to power up at least the laptop or desktop to backup my phone data. One solution that I will try is to install a headless Syncthing instance on my NAS. This way the phone can always sync to the NAS every time, and then laptop/desktop can sync from NAS when needed.

The joys of peer2peer! At least, I am sure that my moderately sensitive files are not leaving my local network to be stored on my VPS, which can be hacked someday.

I also need to figure out how to install Wireguard on my router to allow to access my NAS from my phone while on a trip, but that's another story.

I have a hybrid, where I don't use the sync features of next cloud, but do use the contacts and calendar. Syncthing is setup to sync to the Nextcloud files folder, and a nextcloud config option (forget the exact option) allows Nextcloud to immediately pick up the files that syncthing dropped.
For the contacts and calendar I still use the VPS, but with radicale [0] instead of Nextcloud. The resource usage is minimal, probably the attack surface too. And I like the do one thing and do it well mantra (in this case, CalDAV/CardDAV).

[0] https://radicale.org/3.0.html

Another alternative for contact, calendar, and task syncing is EteSync, which is end-to-end encrypted:

https://www.etesync.com

I access radicale via an nginx proxy with proper HTTPS (LetsEncrypt) and an HTPASSWD over that, so the setup is secure. However radicale default setup is not secure, I agree.
Radicale is a great FOSS solution for syncing via the CardDAV and CalDAV protocols. I simply prefer using end-to-end encryption for extra protection where possible, which is why I think EteSync is a good alternative. E2EE means that even if the server is compromised, my contacts, calendars, and tasks won't be.
try out Synctrayzor for the laptop and desktop. it lets you set it to auto start on boot.
Thanks for the suggestion. This is an app for Windows [0] but everything I use is Linux, so the setup to start SyncThing it at boot should be straightforward.

I am more worried about the Android part. The best solution would be to start SyncThing when on my LAN via matching SSID, and disable it when I am out of range.

[0] https://github.com/canton7/SyncTrayzor

Honestly, that my bad, I didn't check before suggesting it and had it in my head it was cross platform.
I've dealt with the Android issue by configuring Syncthing to only run when the phone is charging. I'm in the habit of leaving my phone to charger every night anyway, so I'm regularly synced. It would be great if there would be a 'Sync now' function though, that would run the sync and then go back to ordinary mode afterwards, for the rare case that I need my folder synced in the instant.
On Ubuntu (and probably other distros that use Systemd as well) you need to enable the user service manually once for your user:

    systemctl --user enable --now syncthing.service
This will start syncthing whenever your user session is active. By default that means when you login. If you run this command:

    sudo loginctl enable-linger $USER
Then your user service manager will be started at boot and run regardless if you are logged in or not. (The default behavior makes more sense on desktop and laptop computers.)
More information: https://docs.syncthing.net/users/autostart.html#using-system...

The Debian/Ubuntu packages ship all the needed files. You only need to activate them.

Thanks! I will use the enable-linger on the NAS running 24/7, and configure it using a remote browser (probably via SSH tunnel). This way I can always sync to NAS even if everything else is off, and the laptop/desktop will sync from the NAS when required.
I saw just now that there are also system units (started with "systemctl enable --now syncthing@USER_NAME_HERE.service", note the lack of --user). If you use those then you don't need to activate linger. Using those is probably considered the more standard way of doing things on an unattended server.
Nice catch, this usecase seems common enough.
> One solution that I will try is to install a headless Syncthing instance on my NAS

I've got an old computer which I run things on occasionally. I installed syncthing on it for a while and it worked well. Stopped leaving that computer on so now when there's something that needs to be synced between my desktop and laptop I just use my phone as the middle always on server.

Are you using Mobius Sync for this? I'm tempted to try it for the above reasons, but I wish it was open source.
> [Nextcloud] was a resource hog that was eating up too much everything on my modest VPS.

I've seen comments like this in multiple occasions. Is it really that bad? I guess if there was a flagrant performance bug, it would have been sorted out with time, so the only remaining explanation is that the code is really poorly laid out, or with design flaws that cause so many performance problems for users.

However next to each "it's a resource hog" there is always another comment saying "it works fantastically well", so I never know what to think (sort of trying it myself, but I'm not that interested in the issue)

I tried both and stayed with Nextcloud because of some features (especially sharing and specifically private links).

I have a ~5 years old server (Intel Skylake, 8 GB RAM) on which I run a bunch od docker containers (about 30). One of them is Nextcloud and the load average is 0.8-1.0. This is for an average of 2 users (me and the rest of my family that in total uses the server as I do myself).

Not a very scientific comparison, but I never had any performance issues.

The Nextcloud Windows desktop client is very poorly written. We needed an in-house file hosting solution to replace really old Samba shares and Nextcloud seemed like a great option because we also were looking for a non-Google alternative to Google Docs/Drive (one of our clients has anti-Google policy).

After moving all files to Nextcloud server everyone (company of 20+ people) installed Nextcloud Windows Desktop client and connected to it with only virtual files option set (nothing is transfered until opened/edited). The initial "sync" after first seup took about 2-3 days to complete for everyone. Reason? Probably too many small files. The share contained about 300+GB of data in around 500k files (not sure about that number only a guess). Nextcloud checks every single file with server which computes hash for it which is stored locally. You can find threads on their community forum or reddit by people experiencing same slow behavior when they have a lot of small files. There were some promises from devs to resolve it with the latest client update but we didn't verify it yet.

The hogged resource for me is disk space. The more recent versions are bundling more and more features like a web-based word processor etc. that are just useless baggage for me. (I do like the calendar and contact sync.) I have a small hosted site with a tiny personal Nextcloud instance, just for sharing a handful of files, plus a small Wordpress site, and I had to upgrade from 500 MB to 1 GB to fit it in and also be able to run the upgrader.
If you just need to access your NAS from outside your home network so your phone can syncthing to it, you can use syncthing in global mode -- it will use public relay servers to sync between phone and NAS. But maybe you need more than that / knew this already.
> I also need to figure out how to install Wireguard on my router to allow to access my NAS from my phone while on a trip, but that's another story.

I can recommend https://tailscale.com/

It just works.

A couple of questions.

* Is there an iOS app on agenda?

* Can I choose something like S3 or even Dropbox (yes!) to be a central server (more precisely a peer)?

* There doesn't seem to be much progress on an official iOS app, but it is something that users are asking for.[1] An unofficial closed source app called Möbius Sync does exist for iOS.[2]

* S3 and Dropbox are not officially supported,[3] but you can always sync one of your Syncthing nodes to cloud storage on your own.[4]

[1] https://github.com/syncthing/syncthing/issues/102

[2] https://www.mobiussync.com

[3] https://forum.syncthing.net/t/how-to-sync-files-with-aws-s3-...

[4] https://news.ycombinator.com/item?id=18135903

...the whole point of syncthing is that you avoid "the cloud" and all its privacy nightmares. I'm baffled people do this.
That’s why I put “yes” in parenthesis.

Synchting supports end to end encryption. So you can use cloud storage with encrypted folder, for connectivity (no need for relays NAT traversal etc). Clients sync through an always-on peer.

Syncthing is great, but bear in mind in the default configuration (unless you set STNOUPGRADE=1) it will automatically download a replacement binary and exec it, granting the developer remote code execution on your machine at any time, Solarwinds-style.

https://news.ycombinator.com/item?id=27933308

No-interaction autoupdate really should be opt-in. It's super dangerous software otherwise. Anyone with release credentials could own many many thousands of machines with a single action.

Not on Debian though.
...if you install via apt. Binaries downloaded from the website still have this issue.

PS: Thank you Debian maintainers.

Is this something to worry about if installing via the package manager of a different distribution?
I use this for syncing game files (like MMO extensions, ui files. WTF folder when I used to play WoW or the FFXIV folder in my documents) and my code workspace folder between 4 devices, one being a homelab server.

For the game files it's just my gaming laptop and gaming desktop

I setup a connection for the folder from every device to every other device. Syncthing has a unique ID for the share, so they all share the same ID for that folder and it does all the work syncing. none of my project files are ever out of date on any device. Lets me sit down on any device and just work. (Desktop, windows laptop, Linux laptop, or ssh into server)

Another great thing is is you set it up in WSL2, it just works, and all it has to do is be on a different port. Lets me sync my workspace files into there and get full Linux filesystem file watching ( the \\wsl$\ path doesn't work well from windows side)

It refused a few files with unusual characters in their file name, so you’ll want to periodically check the logs, as it is stricter than the host OS. Apart from that, all good
Do you happen to have a list of these unusual characters ?
It seems to be anything which isn't either ASCII or UTF-8. My father's PC had files written by old versions of OpenOffice (when it was called StarOffice), with "native" names but before his PC was set up to use UTF-8. Early versions of Syncthing didn't have problems with those files, but later versions refused to back them up. I had to rename all those files one by one to get it working again.
If you ever have to do to this again checkout convmv - this can convert for example latin1 encoded file names into utf8 encoded file names.
wish I'd known about this sooner - thanks
I stopped taking them seriously when they wrote - “ I saw that it complained that the .stfolders did not exist. So I went ahead and created them, but by mistake, I created empty text files instead of empty folders. Did not realise it and left it to work in the background.”

First, backups! Never trust any software to not have a bug.

Secondly, if you don’t know what you are doing, may be don’t create random config files and hope the software deals with it. That’s in the “neither power user, nor dumb user” category that most software will not be designed for.

> Secondly, if you don’t know what you are doing, may be don’t create random config files and hope the software deals with it.

This sounds like a variant of the old "you're holding it wrong" blurb.

The problem you're commenting on actually describe a multitude of problems with the application, specially how it causes data loss if it's config happens to get corrupted.

The comment about the need to back up data also seems to not take into account that the service is already used to back up data across multiple devices.

It may have already been used as a backup system, but it was not made for that, and they even answered that in their FAQ. It was this question that stopped me setting it up, because it made me realise I was after a backup solution, not just a synchronisation tool

" Is Syncthing my ideal backup application?

No. Syncthing is not a great backup application because all changes to your files (modifications, deletions, etc.) will be propagated to all your devices. You can enable versioning, but we encourage you to use other tools to keep your data safe from your (or our) mistakes. "

https://docs.syncthing.net/users/faq.html#is-syncthing-my-id...

this is why I prefer the 'conservational' sync option from Google. If you delete a file it prompts you if you also want to delete remotely. Sure, it doesn't prevent bad overwrites but that's what git is for.
No, I wasn’t saying the thing about creating config files in the same vein as “you are holding it wrong^tm”. Any software would crap out if you manually give it wrong/empty config files - that is only reasonable. Sure, if you’re worried about the config file getting corrupted without user interference, that’s a bug. I’d also be pissed if I were the author of the project and someone complained by saying - “I deleted the config file your software uses, and I am not a fan of your software because it doesn’t magically heal itself and protect against users such as myself”.

No! Syncthing is _not_ a backup system. They explicitly say so, and it should also be obvious that a “syncing system” may try to backup some stuff, but you cannot rely on anything that can _delete_ stuff to be called a backup.

I'm the author of that blog post. So,

- I did not use it as a backup system. Due to circumstance, my backups were borked and I was too busy/poor to fix them up. Syncthing was used to sync my passwords, Org mode notes, and a specific two-way sync folder with the phone. Importantly, the first two were read only, i.e. the phone only had read access. Regardless, stuff on the remote, i.e the computer were deleted.

- I don't blame Syncthing because I lost my stuff or I had no backups. I blame them however because their software failed destructively. It should of course fail when the config file is weird, but deleting files on two devices despite permissions only allowing readonly access is tho unacceptable. This is kinda equivalent to nginx deleting your htdocs because a symlink in sites-enabled was broken or /.../sites-enabled was a file instead of a folder. If you don't have a backup of htdocs, that's your fault, but that doesn't mean it's a sane way to fail. The best way is to panic and tell the user: "I'm not touching files before this is fixed". Even rm(1) in coreutils has this sort of precautions, not allowing you to run "rm /" willy nilly.

- I should admit that I don't really make that distinction very clear in the blog post itself tho. It was written with anger after the incident, so I was not as nuanced/clear as I could've been.

- The point of the blog post was to advice against relying on Syncthing and to point out that its failure modes were coded sloppily. Tbf it was more like a note to self because never had analytics on my website so I had no idea if anybody read them with any frequency. I've seen it be linked from a couple places recently tho, and I haven't changed my mind, partly because I haven't been keeping up after seeing attitude like https://github.com/syncthing/syncthing/issues/4345

Afterwards I did go back to using syncthing for a while to sync files b/w laptop&phone but confined to a specific share folder only. After that brief period I've been relying on KDE Connect to push files between a Linux laptop and an Android phone. I botched backups a couple more times tho, as the big banner on the website testifies to.

Something that interests me even more is that the company behind, Kastelo Inc., possibly bears its name from the esperantoan word for 'Castle'.

Can anyone confirm?

Syncthing is not as good as Resilio Sync at syncing huge folders quickly. Resilio Sync can sync 10 MB/s on my wired home internet, but Syncthing usually uses only about 1-8 MB/s. Not sure why.
I started using Syncthing a while ago and its blazing fast. If you do LAN syncs, try setting fixed IPs to your devices in your router and when pairing them in Syncthing use their ips in the address field instead of using Dynamic.

So in my case my server would be 10.0.0.1 and I have two devices, let's say 10.0.0.10 and 10.0.0.20, I would putmy servers IP in as tcp://10.0.0.1:22000 in the settings page.

You can then even disable most of the doscovery options (if not all). Curios if you will see improvements!

I really like Syncthing, I have it installed on my computer, phone, and VPS, but it's definitely not made for non-technical users. I have a "family" folder with a few important documents that are also shared on my girlfriend's computer and phone, but I use Resilio Sync for those.

While Resilio is slightly less secure (debatable) than Syncthing, their UI and UX are vastly better, and virtually no different than something like Dropbox or Google Drive. I fully understand that Syncthing's developers have different priorities than UI and UX, but I'd love to see it become more mainstream.

I repaced Dropbox with it a year ago and I'm satisfied, it's a great project. But atm I couldn't recommend it to even knowledgeable friends, let alone family members:

- Sometimes long-deleted folders pop up when older version clients connect

- Syncing or connecting takes sometimes ages to start for no obvious reason, client not giving enough info on what is happening

- Relation between clients is not obvious, the powerful configuration options are hard to decipher after some time

- The project could start a (freemium?) cloud client option, maybe leveraging other providers for storage. Most people will not be able to set up a server, and without that it's just way less practical for the layman than any mainstream option.

Sometimes long-deleted folders pop up when older version clients connect

What causes that?

With Android 11, I think this breaks my use case. Android 11 apps, with a few exceptions, can only access files they create. You can add in a "grant all" access, but google limits that to certain apps, like file sharing apps.

My use case is I want to "de-cloud" my life, and use syncthing to push things like wireguard keys to my phone, along with backing up photos and pushing down audiobooks and music. I bought a fairphone 3+ with the idea of it being a forever phone, but I couldn't get things working on liniageOS 11 or /e/ os on android 11. I could stay on android 10, but things will eventually migrate to target the new SDK.

I also have the issue with syncthing not being able to write to an external SD card, which was one of the selling points for me for the Fairphone.

I would love a solution to this, because I'm really stuck in the water on this.

What if you use termux and backup from its storage?
Since recent Android updates my termux setup hasn't been able to access other application's data. I use rsync via that for backing up content, it still works for things like camera output, but not things like the files & config from my podcast app.

Though it turns out I've been negligent and not noticed the Play installed versions are no longer maintained, so they may have worked around whatever the issue is. I must get around to reinstalling via f-droid...

I can confirm that the F-Droid version has fixed this issue a while ago.
Hmm. Removed and reinstalled from f-droid and android/data is still inaccessible. Will do a bit more research and see if there are known problems with it on my device...
Maybe I'm not reading it right but I've Android 11 and can see with my gallery app all image files saved to sdcard from all sorts of programs which contradicts your statement. There is still a lot of shared space on the file system.

It's a good thing in general that other apps cannot access other's app internal files.

I'm not an Android dev, but IIUIC your photos and images are made accessible to the gallery app through the ContentProvider API, i.e it does not have direct access.
Only specific apps will get approval to offer full access to the disk. Gallary app, maybe. Audiobook app from some unknown developer? Maybe not.
I wouldn't expect apps to require android 11 anytime soon (years). Android 4.4 was supported forever. Things get ugly when 10 doesn't receive any updates anymore.

But even with the versions before 11 things were a chore with many vendors putting aggressive power saving features in their phones that are hard if not impossible to disable for some chinese brands, sometimes the app not restarting after the app store pushed an update, etcpp.

I tried to de-cloud my dad with it, but eventually the app would stop running for some reason after a few days or weeks and nothing would get synched. Because otherwise, the technical foundation, especially the nat traversal is superb. I ran a mini pc in his home with ST that would receive all the photos from the phone. Zero maintenance, no port forwardings that I would have to re-do if the provider switches routers or the settings reset or what not, no dyndns for reachability. He was travelling in thailand, vietnam and elsewhere and the pictures just kept coming in. A reliable version of PhotoSync that uses the syncthing protocol under the hood would freaking kill it.

I don't think the changes in Android 11 are catastrophic. I'm using Syncthing on Android 11, and Syncthing can read/write to any directory in the filesystem under /sdcard, with the exception of the /sdcard/Android/data directory (private app data). Syncthing does request the "All files access" permission that gives it access to most of the filesystem.

I'm not sure about external SD cards, though, since I haven't tested this.

Thanks for the tip. I was using that data directory, assuming it was representitive of the full access.
Lack of an iOS app is a dealbreaker.
Switching to Android, then?!
I used to be a user of both Syncthing and Resilio Sync, but i've replaced both with regular cloud storage with Cryptomator or rclone+crypt instead (Cryptomator for clients).

It turns out that the power consumption of keeping redundant hardware running at home is about twice as high as just buying the same storage in the cloud, and then you need to figure in the cost of hardware as well.

I.e. Microsoft Family 365 can be had for €60/year (with HUP), and offers 6x1TB OneDrive storage. With power at €0.44/kwh, you have a power budget of 15W before your home server costs more than the cloud offering.

I use far less than 15W using an old laptop or RasPi their cost is negligible over their useful lifetime
The 15W doesn't account for hardware. As soon as you add in hardware (and redundancy), you're looking at a lower budget.

If i was to self host something similar, i would use a server (could be RPi4) with a set of 2x6TB drives in RAID1(for availability), and a remote backup somewhere (so another 6TB drive). The hardware cost of a single 6TB (Seagate Ironwolf 6TB, €202 at Amazon) harddrive could pay for 3 years of Family 365.

So we're looking at 6 years of Family 365 to buy the harddrives alone (and 9 months more if you buy a RPi 4). I'm not counting the backup drive as you'll need that as well even if running in the cloud.

Assuming a lifespan of 5 years, and an operating power of 5W average, you're looking at 44 KWh per harddrive per year, so 2x44x5 = 440 KWh over 5 years, or €194 (at €0.44/KWh).

So the total cost of running your own setup over 5 years would be:

€404 2 x 6TB harddrives

€194 power consumption (not counting server power)

Thats €598 for 5 years, or €119.5 per year, and that's also assuming no hardware breaks down.

Compare that to the €60 that Family 365 costs per year.

I run a NAS with syncthing and a dappnode at home. The dappnode runs Storj, which I allocated about 2TB. It is paying me now about 6€/month, which is barely enough to cover the electricity costs and the cost of the drive. It certainly hasn't helped to cover any of the cost from the NAS.

Decentralized solutions are always going to be less cost-effective than central services. We still should do it anyway. Optimizing for cost is a mistake. It makes us overly dependent on the big companies. It makes us fragile and susceptible to any change in their terms.

> It makes us fragile and susceptible to any change in their terms.

Which is why you should backup your data locally (or somewhere else), but even if self hosting, you should still have a backup of your data.

I personally backup everything at home, and if/when their terms change, it's simply a matter of restoring data onto the new solution (local or remote), and i'm up and running again.

Yes, of course. Syncthing is not a backup solution. Luckily the amount of data that I have that is considered private and valuable is not that much (~100GB of family photos and videos, some scanned documents) so my backup strategy has been good old SneakerNet. I have a couple of thumb drives that I leave with family, and occasionally get them back to check/refresh.
I keep my data in the cloud, a local (versioned) backup, and for irreplaceable data like photos, i also burn identical M-disc media at least every year. One stored at home, another in a remote location.

While i will probably have worse problems to deal with in case the cloud disappears and my local data is gone as well, chances are that once those are solved, my family photos will not be a problem after those :)

I think for me the original comment was not just about the data, it was also about "what if the cloud disappears".

Financially, it might make sense to pay MS a few bucks an year for a service. Philosophically, the idea is much harder to stomach.

I am far from being a card-carrying member of /r/datahoarder, but I don't like the idea of supporting (much less depending on) streaming services, and I would pay for a subscription service if it was based on open source.

Are you sure that encryption software has no vulnerabilities?

What if encryption keys are stolen?

I could say that both projects are open source, but no, i haven't audited them. Cryptomator has been audited by Cure53 (https://cryptomator.org/audits/2017-11-27%20crypto%20cure53....)

In any case, i guess it depends on your threat model. I have no illusion that a sufficiently determined attacker will gain access to my files, but that's true no matter if i store the files at home or in the cloud - We're talking files accessible "on the move" here, so it's not like i can just airgap the server.

The cloud offers far better physical security than what i have at home, and if not better, at least equal network security with dedicated teams on board to resolve issues.

The (major) cloud also offers far more geographical redundancy (Google 3 sites, Apple 2-3 sites, Microsoft 2 sites), each with redundancy in power/internet/hardware, as well as fire/flood protection.

And of course, the most common reason for broken encryption is a weak password, so don't do that.

Files encrypted with rclone were actually plaintext for about a year:

https://www.cvedetails.com/vulnerability-list/vendor_id-1894...

Because a developer didn’t know the pitfall of taking a random seed from the current time.

Cryptomator takes encryption from a Java library. I don’t know the quality of this ecosystem. Searching it in HN doesn’t return much.

With cloud, you need to clarify if the provider and governments are in your model or not.

> Files encrypted with rclone were actually plaintext for about a year:

It had a severe weakness yes, but it was not plaintext. From the CVE : "dictionary of all possible passwords with about 38 million entries per password length". For an attacker to attempt to break the encryption, they also still need to defeat the cloud providers security measures like 2FA.

> Cryptomator takes encryption from Java library. I don’t know the quality of this ecosystem.

Considering that it's used by banks/goverments, i'd say that it's probably either full of backdoors, or at least somewhat OK :)

> With cloud, you need to clarify if the provider and governments are in your model or not.

I have no illusion that i can keep encrypted files out of government hands, or any other sufficiently motivated attacker. One could argue that the data might even be better protected in the cloud than in my home. Also : https://xkcd.com/538/

If storing illegal content is "your thing", you'd be better off looking for other solutions.

My personal needs are storing maybe not generally sensitive files, but files i consider sensitive, like photos of my family, tax documents, etc. It's all files that would probably not make much of an impact if they were public available, but i prefer keeping them private.

The thing about encryption is that if you don't trust it, it doesn't make much sense using it at all. That goes for both cloud and private. The threat vectors are different, but one could argue that a datacenter network is probably better protected than the average users Zyxel/Netgear/whatever router that probably has about a dozen unpatched CVEs, along with an ISP "backdoor" if supplied by the ISP.

Regarding backups... Syncthing is great for propagating changes to all devices, but does not offer much in terms of backups and previous versions of files. (And I'm fine with that. I consider that to be out of scope for Syncthing.)

I've been thinking about solving the backup part by letting one of the devices perform btrfs snapshots on its storage. Does anyone know about any write-up that describes or compares such solutions?

Setting up a cron job / timer unit that commits the synced folder to a git repo is also an alternative, but has some disadvantages: stores contents twice (once in the sync folder, once in the git object database), and pruning older versions is difficult (git is mainly built to keep all history).

> I've been thinking about solving the backup part by letting one of the devices perform btrfs snapshots on its storage.

I do zfs snapshots on my storage server (home desktop), which is in Syncthing's "receive only" mode. I use it to sync my camera roll and Whatsapp media files from my Android phone. I use pyznap for snapshot management.

> Setting up a cron job / timer unit that commits the synced folder to a git repo is also an alternative

Another option would be to backup the synced folder using a backup tool like borg, restic, duplicacy etc. They have options to prune the snapshots.

I have a script that takes a btrfs snapshot, uses borg to back up the consistent snapshot (to rsync.net), then removes the snapshot again. It then instructs Borg about which snapshots to retain, so my space shouldn't grow without bound.

For extra extra snapshotting fun, rsync.net then takes ZFS snapshots of the borg backup. So even if my snapshot cleaning gets over-enthusiastic, I'll still have a snapshot of the snapshot.

I’ve set up a single always on desktop computer as my backup hub. Syncthing is used to sync everything I care about to that machine, and backblaze pulls everything to the cloud as versioned backups. I use a .stignore file to exclude some things from syncing (like node_modules) and similarly backblaze is configured to exclude some things from the cloud backup. There’s also a regular local backup to an external drive (time machine). The setup took some work to figure out, but it is effectively zero maintenance and robust.
I'm not affiliated with the channel in any way, but Lawrence Systems did a really good overview. It's what convinced me to switch to it and use it for LAN sync with my server keeping everything from my phones, laptops and desktop. It's also good for those who might have trouble understanding how it's supposed to work. I think my biggest difficulty was with the fact that normally it doesn't necessarily have the concept of a "server" per say, but once I understood this and organized it in such a way that my server WOULD behave like a server, the rest was pretty easy.

https://www.youtube.com/watch?v=O5O4ajGWZz8

And same url on an Invidious instance - https://yewtu.be/watch?v=O5O4ajGWZz8

This guy works on his channel "Raid Owl" and uploads very nicely put videos, I found the channel while searching for homeserver technology videos, and find that he does a great job (but somehow hasn't been discovered by a greater public, judging by the smallish subscribers number)

He's using Syncthing for backups (by enabling a feature that keeps N copies of each file), which while possible, I hadn't thought of as a possibility

https://www.youtube.com/watch?v=V4kWJ8JcdtM

Lawrence Systems videos are great! I've learned so much from them and have implemented quite a few things at $WORK or home due to their videos.
I really like syncthing. I mainly use it for syncing passwordstore directory and a few other small files that I like having synced. Once set up, I basically forget about it, unless I have to go check why this password is the old one, and in this case it is usually android killing syncthing due to low power more or something, which requires me to manually restart it.