Hello all! I would like to address an issue that I find it a bit too little discussed: self-hosting your stuff without relying on any central services, whether you own them or not. Why go with this instead of choosing a cloud provider or a hoster or even a personally owned PC (desktop PC, laptop etc.) to host everything you have?
A good argument is money. You basically pay nothing to host everything on your own devices, as many of them as you want. While storing stuff on cloud services costs you money (or data), and having your home server is still somewhat of a hassle (you have to keep it running all the time, plus the electricity bills associated, plus the fact that you pretty much need to take care of an entire extra computer), relying on your devices only to do your stuff has the added benefit of a smaller learning curve, while also maintaining your privacy. Then you might simply not have an income source of any kind (for example, if you’re a student). Not everyone can have the ability, time or money to set up their own server.
Or if your physical space does not allow you to comfortably have a home server in your house, this is also a great option that can increase your privacy.
I wanted to create this post, so I can list all the tools I’ve used for this purpose over the years. Some of them can be used with a centralized solution as well, so here’s what you can do without a server:
Sync Contacts and Calendars
There are several solutions for this, not all open source though, but which have proven pretty reliable for me. This is one of the areas where a dedicated solution is needed. Here’s what I’ve used over the years and I can recommend:
- GeneralSync: This is a neat little solution to sync your Contacts and Calendars with devices on the same network. It supports Android, Thunderbird and Microsoft Outlook versions from 2013 onwards. On Android, it creates a dedicated calendar and a dedicated contacts section where you can store all your events and contacts respectively, while the program will do the rest. It is currently free to use, and the dev said he plans to do away with accounts entirely (you needed a license when it was first launched). Right now there is pretty much nothing you need an account for. The app is not open source, but is literally just the work of a single person. If you can, do donate him money so he can keep the project running.
- MyPhoneExplorer is also a proprietary solution but more up-to-date and with more functions. I personally used it a lot when I was using Windows and is one of the programs I missed after switching to Linux (along with Foobar2000 for my music). It can sync to more programs, along with its internal database. It can also sync notes, to-do lists, even your clipboard, browse your phone’s file system and retrieve any file from there, send and receive text messages or phone calls, get various device information or mirror your phone’s screen. It can use LAN, Bluetooth or a cable to connect to your phone. The program is available for Windows and Android.
- KDEConnect - this is the last entry on this list, and the last such solution that I’m aware of. It has a similar feature set (okay, I don’t see calendar sync support fwiw) but a larger OS support (Linux, BSD, Android, Sailfish, iOS, macOS, Windows etc.) As it’s developed by the KDE team, it does have quite some support as of this post, so it has the less chance to go abandoned any time soon.
Sync files
Over here there’s a certain solution worth mentioning:
- Syncthing - this is a serverless file syncing solution that allows you to sync two separate directories between devices. This allows you to sync various files and gives you access to more services.
Some other services that syncthing allows you to use:
- You can (obviously) backup your photos, music, videos, documents and other files and also keep them in sync if you want (replacing the need for Google Photos for example);
- You can keep your passwords and OTP secrets in sync between devices with Keepass (Alternative clients). Pass is another option to consider, with apps on pretty much all the most popular platforms;
- You can sync your to-do list with todo.txt;
- You can keep your notes in sync, in Markdown format. There are plenty of apps that allow you to store notes in Markdown, the most popular one being Obsidian. What I am aware of that work together well (at least for basic functionality) are Notable, QOwnNotes (cross-platform, but only on desktop) and Notes. Org-mode is also an increasingly popular other option for storing notes in plain-text;
- Talking about Markdown, there’s also a neat little app called Markdownr which saves any link in Markdown format. Perfect for saving articles for reading later (like Pocket), and seeing them in any reader supporting Markdown;
- You can even sync recipes using Gourmand on Desktop, and Tournant on Android respectively;
- Last but not least, you can encrypt all these with a Veracrypt container and keep that container in sync.
File transfer
- BitTorrent. Yep, that’s the most obvious option. In fact, nowadays, it’s not only transfer, but also sync. There’s a tool called Resilio that uses BitTorrent to sync files, similar to Syncthing. But if you want to simply send some files to someone all you need to have is a Torrent client (like qBitTorrent, Transmission, Deluge etc.) and a tracker. Here are some instructions for using qBitTorrent with the embedded tracker, but I also used this as my tracker in order to test it out with somebody, and it worked just fine.
- Pairdrop touts itself as a a sublime alternative to AirDrop that works on all platforms. It’s a Progressive Web-App (basically a website with a few more features) that uses your local network to transfer files. You can optionally transfer the files online as well, directly to other people (files are not stored anywhere). Pairdrop is a fork of Snapdrop, a tool which provided me some mixed results.
- Warpinator is a tool created by the team behind Linux Mint, but can be used on pretty much any of the most popular OSes. In order to use it, the devices must be on the same network.
Communication
- Here, the most obvious option is to use your phone for regular calls and SMS messages. Of course, calls and messages are only as encrypted as your carrier wants, and this option is obviously generally not available on desktop. So depending on your needs, you might need a different option.
- Briar is a messaging app that uses no central server to communicate with others. The messages are encrypted and sent directly to the other user through the internet via TOR when available, but it can also use your LAN network (if you’re connected to Wi-Fi and the other devices are on the network) or Bluetooth. As it has no central server, users must always be online to communicate, but you can also install their Mailbox app to receive messages while offline. It kinda works like a server, indeed - though not really defeating the purpose of the current guide - as you only need to keep one spare phone turned on and connected to your Wi-Fi. As long as the device where you have the main Briar app connects to that mailbox, it can receive messages. Briar is also available on desktop, but there doesn’t seem to be a way of having the same account across devices (any time you’re creating a different account, basically). I also tried adding my phone to Briar on my desktop, but couldn’t add the two contacts. Phone-to-phone communication worked flawlessly, though.
Disadvantages and closing words
As you might have already noticed, most of the options listed here use LAN in order to work. For many people, including me, that means connecting to the same Wi-Fi network and turn the router into a middleman. This might be a limitation for specific cases when you cannot connect to any network to sync your files over. There are also issues on the colaboration side. There’s no easy way to give someone access to a certain file, then have the edits in sync with you. The other person must also set up Syncthing, Resilio or some other solution locally in order to sync the changes. Otherwise, since no central server is involved, there’s no way to use the browser to sync a file, at least that I’m aware of. I’m also not sure how well that file would stand being edited by multiple people without getting corrupted.
Last but not least, it’s harder to shut access to a device if it ever gets stolen. You can change your password to your cloud account and shut the device off it, but if you use a solution like Syncthing, for example, there’s no easy way to cut access to all the sensitive data you might have in sync. There are all sorts of stories (sometimes funny) of people being able to locate and recover their devices by using cloud services.
On the flip side, for people who like tinkering with their devices and not being so much on the move, as well as being the sole users of their services, I believe this approach is highly feasible. What do you think of this? Did you find any other serverless solutions that are worth giving a try?
Thanks for the detailed writeup! I’ve been troubled by the way that the server required for self-hosting is such a huge hurdle to get over at the beginning. Once you have one, doing more with it is easy, but I’ve often talked to friends who might be interested in hosting something who get stuck at that point. I hope things like this could help!
Of course, as you noted, many of these only really work on the same network. I still wonder if some clever new method of NAT traversal will come along that could help solve the problem.
I also wanted to mention, your comment about “…as you only need to keep one spare phone turned on and connected to your Wi-Fi.” really got me thinking. Usually when someone is going to get started self hosting, they do it with a Raspberry Pi or maybe an old computer. But, could a phone do it?
A phone without a SIM card but on the Wi-Fi, old and so likely has a worn-out battery anyway so it’s fine to always leave plugged in could maybe be a gateway to self-hosting for some people. I’m definitely going to think more about this!
As for your main question about using serverless systems, I’ve always found it to be annoyingly limiting when I try, but I would love for the tools to improve, because it feels so much more robust.
@epw
I was thinking about the same thing - using the spare phone as a server for other things that Briar. If you’re on Android, I know you can install Termux and basically get access to a bunch of Linux commands and tools, but I’m not sure about its limitations.
Maybe someone can make a similar guide or list about this? Idk 🤔