published: 2026-04-20 16:48:28
updated: 2026-04-20 22:05:51
I’ve had a problem I’ve been trying to solve for at least two or three years now, in reality probably much longer, but it only became something I was actively trying to solve back then, at least. Said problem is syncing files on a phone with a server, one of those bafflingly annoying things that should be simple but every solution which comes up seems convoluted. Now, I’m not opposed to just rsyncing from termux every now and then, but the reason it became a more active problem was because I needed to solve it for my parents, one of whom was running out space on their free cloud storage, and the other being accident prone.
Things I’ve tried
If you’ve been around the open source world for any length of time you’ll know of owncloud1 or nextcloud2. I really don’t like them. They’re annoying to set up no matter what way you go about it, they both, for no obvious fucking reason, really, really want you to use https even though all you’re trying to do is host it on your local LAN where getting https is a pain in the arse and going with self signed certs never seems to work. Nextcloud also runs pretty heavy, owncloud’s newest iteration seems to be much lighter at least, but both do far more than I wanted regardless. I did recently come across opencloud3 but it turns out that’s just an owncloud fork with all the same problems.
I eventually gave in and just used immich4, despite it also being far heavier, having more features than I care for, and extra-annoyingly requiring containers to run, it did work. However, I was never satisfied with it. It updates far too often, and when it does you can be sure it actually updates no less than three times, sometimes in the same day.
It was immich’s update cycle that actually triggered me to start looking for other options yet again. Though my other problems with it include the fact that it runs in four fucking containers, and that’s actually reduced from what it was when I started running it, which comes with all the annoyances of containers, especially when it comes to permissions which makes taking backups a ballache. It keeps libraries all over the place in helpfully named locations such 2e2e2e2e-3e3e-4r4r4/00/8f/a8a8a8-c7c7c7-b3b3b3b.jpg. Yes, I know the external library function exists, it was very new when I started this and I wasn’t sure whether to use it, that might be on me, I was somewhat rushing through, but that default behaviour is still absurd. Oh, and because of the way it works, you need to open the immich app specifically to delete anything, otherwise whatever you’ve deleted remains on the server, that is or isn’t a feature, depending on your viewpoint, but it adds an extra layer for my parents to think about.
I know syncthing5 is going to come up too, it was one of the first things I tried. I tried it many times over the years actually, I just don’t like it. Besides for the fact that it no longer even has an official android app (there’s a fork I know), its interface is cumbersome, and I’m usually fine with jank but it’s wrong kind of jank for me. I also despise the way it tracks what directories to sync by leaving hidden files in them, which is admittedly a small thing but it still bothers me.
Before I continue, I would like to stress, if these projects provide what you need, they’re probably great. I’m always in favour of many projects doing the same thing but slightly differently because I believe generic solutions made to suit everyone always end up suiting no one, I’m mostly expressing frustration and in search engines, and myself really, for not discovering my final solution before this.
Enough nonsense
What I actually want is something that just syncs a list of directories to a specified location on my local server. It needs to do this on my local network, without SSL being forced and just be a regular list of files, not shoved into stupidly named subdirectories. It should delete things on the server when they’re deleted on the phone so no special app is needed, you can use a file browser or gallery or whatever! Ideally it’s also basically invisible and something my parents never need to see. Fucking drop dead simple, yet seemingly impossible to find.
Finally an answer
I abhor phones, I spend as little time with them as I can, so I acknowledge that I probably spent less than I should have looking in the first place, but if you ever try looking yourself, you’ll see almost nothing but these bloated, overengineered, solutions come up. However, my search was finally ended when I randomly typed “sync” into f-droid and I seen EasySync6.
EasySync is webDAV client. Oddly, this is the second time7 that webDAV turned out to be a solution for me, despite never paying attention to it before. You can use basically any webDAV server with it, some of them don’t support preserving timestamps though. There’s a little table in the git repo showing a few examples and wouldn’t you know it, both owncloud and nextcloud are there, turns out they just use webDAV for syncing anyway, then overcomplicate it.
Setting it up
I already had rclone installed and it can run a webDAV so I just used that with the following command: rclone serve webdav --user webdav --pass mypass --addr 127.0.0.1:4545 /path/to/directory/to/use/ which I stuck in a systemd service and enabled. You can use whatever server you want though. This will allow access to everything with a single login which I’m fine with for my use case but I’ll point you to rclone’s serve webdav8 page where you can see how to set up multiple logins with restricted access using a file if that’s more your style.
The rclone server actually also runs a little webserver accessible from the same port, nothing fancy, just a nice directory listing of files with a little icon on each directory that lets you download a zip, which is a nice bonus.
After installing EasySync from your preferred location and opening it you will have to go through a couple of screens to allow the relevant permissions, this is an android problem which I won’t hold against it. Then you enter your server details, it gives a little message on why you might want to use https if you supply an http location but that’s it, and that’s fine, it doesn’t force anything and you’ll never see it again. You also put your username and password here if needed then set the path (server side) that you’re syncing.
After that you’re left with the very basic default screen. It tells you how many files you have, the percentage of synced files, whether a sync is currently running, and a button to manually sync.
There’s two settings pages, one that lets you change the connection details if you ever need to, and another where you can set sync options. The sync settings are basic, the first two are just switches for setting if it will sync on mobile data and on battery. Disabling syncing on battery means it will only sync when charging, which is what I was initially going to do but it really doesn’t seem to drain battery at all, unlike everything else I’ve tried, so I actually left it. The next option just decides what to do if there’s a conflict. I can’t imagine this will come up for my use case but your options are to ignore it (the default) or pick whether it takes the local or remote file as priority. Finally, under “Advanced settings” for some reason, is where you can pick which directories to sync which is just a list of toggle switches.
There is the one slight problem in that since it’s keeping the phone and server in sync, at some point the phone’s storage won’t contain what the server can hold, at which point I’ll probably move the really old stuff to an archive directory or something, it’s fine.
That’s it… that’s all I ever wanted, truly, I have experienced joy.
Fuck phones.