The future of selfhosted services is going to be... Android?
The future of selfhosted services is going to be... Android?
Wait, what?
Think about it. At some point everyone has had an old phone lying around. They are designed to be constantly connected, constantly on... and even have a battery and potentially still a SIM card to survive power outages.
We just need to make it easy to create APK packaged servers that can avoid battery-optimization kills and automatically configure an outbound tunnel like ngrok, zerotrust, etc...
The goal: hosting services like #nextcloud, #syncthing, #mastodon!? should be as easy as installing an APK and leaving an old phone connected to a spare charger / outlet.
It would be tempting to have an optimized ROM, but if self-hosting is meant to become more commonplace, installing an APK should be all that's needed. #Android can do SSH, VPN and other tunnels without the need for root, so there should be no problem in using tunnels to publicly expose a phone/server in a secure manner.
In regards to the suitability of home-grade broadband, I believe that it should not be a huge problem at least in Europe where home connections are most often unmetered: "At the end of June 2021, 70.2% of EU homes were passed by either FTTP or cable DOCSIS
3.1 networks, i.e. those technologies currently capable of supporting gigabit speeds."
PS. syncthing actually already has an APK and is easy to use. Although I had to sort out some battery optimization stuff, it's a good example of what should become much more commonplace.
I mean, android is fine I guess, but it's being pushed to be less and less able to be separated from Google. I think for a lot of people interested in self hosting, there's a low amount of interest in it because of that.
IMO, more like Linux. Android for such old devices is unmaintained, but if you're able to run Linux on it you'll still be able to apply kernel updates and security updates for software will continue to exist. Many things are opensource too and you should be able to recompile them on the android device to make it run.
Big problem: updates for something that is directly exposed to internet
Some low end devices will stop getting security updates 6 months after launch because the OEM launches a new model every two weeks and obviously doesn't have resources to dedicate to it
In some cases, even high end devices don't get updates and are discontinued internally shortly after launch, for example the Xiaomi mix 3 5g
Yes, root and custom ROMs could solve the problem, but not as easy as regular Linux where you just use a package manager to update. First issue is needing to wipe after updates and you have to reinstall and reconfigure everything
Hmm I think my main concern would be lack of kernel/firmware updates, running something like postmarketOS could partly solve that and still be nearly as easy to set up (just unlock and flash a prebuilt image)
But firmware is still almost entirely dependent on the vendor, since it's all signed and unpatchable.
Next issue would be lack of connectivity on a lot of phones, which have gone backwards and include USB 2.0 now. WiFi is an option, but less stable, I personally decided to just go 100Mbps and suffer.
As for the battery, it would help a lot if phones were designed to boot without one and they were removable, it all worked well for about half a year until I found out I had a spicy pillow and had to replace it with direct power to the board, which made the whole setup much less elegant and required soldering.
It all comes down to how devices are designed in the end. If someone took the time to make a computer instead of just a phone, and included features that make it useful past its initial life that aren't that popular (display output, microsd, headphone jack), mainlined all the drivers and maintained firmware, that would be a different story.
But that's not a very profitable model, because it's all about reducing waste and thus selling less. A lot needs to change.
I feel like Android is adding some new power saving "feature" with every version to kill all the useful stuff I want to keep running in the background.
Last stupid thing I remember was when it removed my CalDAV synchronisation because I haven't been "using" the CalDAV app for some months.
Not to mention all the times it decides to kill something you want to use because it thinks the RAM would be more needed elsewhere. Honestly my 128 MB RAM Nokia N900 could run more apps at the same time than my 4 GB RAM Fairphone.
@Wander@selfhosted this whole “We are walking about with entirely reasonable servers in our pockets for reasonable scales - why doesn’t it feel like that?” thing is in my brain quite a bit.
Pretty cool concept actually. upcycling old tech does seem to be a selfhosting hobby. I see a lot of criticism that I think doesn't really see the value proposition. You should be able to root the device and install a new OS. I wonder how limited the bandwidth would be though, and whether it'd be worth the cost to get adapters, if they exist, to allow more throughput. I do like the concept though.
Who provides the software and firmware updates for my antique Samsung S4 and Galaxy young?
I hope you will give me some firmware for the old snapdragon.
Don't forget the loads of Exynos CPUs and loads of GPUs from different vendors.
I run 4 mail servers, 2 game servers, 3 directory/auth servers, a firewall/router, a NAS, a security system server, a media server, a monitoring server, and a couple others. Android ain’t gonna cut it.
The future of selfhosted services might includes phones yes, Android most likely not.
Think about it, those phones might work right now but in 10 years their Android versions will not support anything, they wont even have root certificate updates breaking SSL, the kernel will be missing support for whatever people need and whatnot. Maybe the phones won't even boot because some key will expire somewhere... let alone security vulnerabilities.
People selfhost on 10-year old hardware right now, but they do install modern Linux distros that are well supported and up to date. I believe the most likely scenario is that at some point the "security" of most of that hardware will be broken and you'll be able to run some version of AOSP for older hardware and/or a generic Linux.
But that might not ever happen, those phones are built like hell and we've another category of hardware with similar characteristics that was never repurposed for anything after a decade - routers. It's common to see older routers that are now too slow when it comes to wifi or even CPU and although they're way more open and primitive than modern smartphones when it comes to software we usually can't even repurpose them as dumb switches with alternative / open software. OpenWRT and DD-WRT might work in some case but those are exceptions and usually those models were already supported by those firmwares. For instance there are enough Thomson / Technicolor TG784n ISP provided routers to create a second moon and the effort to break their security and create a usual firmware is so much that nobody did it. It's just easier to pay 30€ for a cheap router/switch and move on.
Just to clarify, the the whole point is that Android makes it easy for less tech oriented people to host small single user / family services.
It does not need to be perfect, have massive throughput or allow for massive amounts of read/write cycles.
If people can host their own media server like Jellyfin or note taking apps like Joplin instead of using commercial services by simply installing an APK on an old phone they can leave connected at home, that's already a big win.
Regarding device longevity, Android 13 apparently supports / will support full KVM emulation. Windows can be run if you have root while android based VMs are expected to be possible without the need for root. Since this type of virtualization allows VMs to run their own kernel, keeping the "server app" updated should allow the user to be protected even if the host OS is outdated as long as these server-app-VMs are trustworthy themselves.
You absolutely want to remove the batteries. Otherwise they would die of old age pretty soon and then it creates danger of fire. Either a new battery for your 'server' every 5 years, or some tinkering solution, maybe supercapacitors.
Then you need an OS with long term support/maintenance. Not stock Android, because it evolves away from old hardware too fast. Maybe something like Lineage.
One problem remains: I have serious doubts about the network interface, if it can handle high throughput or many connections, like a webserver for several users, or even torrenting. A NAS for 1 person seems very possible, though.
The latest pixel devices (since 6 I think?) already provide accees to a /dev/kvm device, so maybe you could even run a normal Ubuntu server VM on your phone for hosting these services.
@Wander@selfhosted I have old Pixel phones with LineageOS installed, but I haven't found a good way to prevent battery inflation. I'd love a way to limit charge to 50% or to bypass the battery altogether.
@Wander@selfhosted Sounds like a great way to kill you phone's battery. But maybe if you created an ad-hoc stack... Have you ever heard of @veilidnetwork ?
@Wander@selfhosted This sort of setup is very attractive IMO because of the low power usage. Android phones use much less power than old PCs.
The main con I see is not having ethernet (maybe there's some sort of MicroUSB/USB-C to ethernet adapter, but I didn't look into it yet). That, and there being only one port.
I was going to host pihole on an old android until I noticed it getting quite warm while continuously connected to power. Realised I didn't know the lifespan of the battery and didn't want it tp start a fire.
I think there's some truth to it. But I imagine it will be more AOSP than what android is with google services.
AOSP is really a great operating system with very good security and built in features.
And with neural engines and high bandwidth emmc, it is mostly just lacking a large amount of storage to make it all complete, but the latest SOCs are most probably powerful enough.
Is there something like docker for android? :)
Edit: I do recognize what someone else said, which is that one big challenge would be software updates. We are not that limited by hardware when we consider servers, they can easily run for years with regular software updates.
@Wander@selfhosted Unlikely, the biggest issue android devices have is hardware support due to the ARM CPU architecture. It's just not as useful as old x86 hardware, you're stuck with old outdated and vulnerable firmware. My opinion is that one of the selling points of ARM hardware for device vendors is it's relative impossibility to get open source driver support. You may see some use of Apple M1 and M2 simply because it's a smaller FOSS support target, but android devices vary too much.