9 ms·
Install postmarketOS on Android phone and use Docker as a home server
- jraph 2y agoI thought it was about installing Docker on Android, but it's about installing postmarketOS on a phone. Then yes, you have a regular Linux (although based on musl, instead of usual glibc) on which you can install Docker. If you are going to setup a server on a phone, it might indeed be a good idea to avoid Android, mainly because of how aggressive the OOM killer can be with background apps. On Android, killing a background app is not so much of an issue (caveat: [1]), they are designed for this. But you don't want your service or even your ssh deamon to be killed by Android. Now, I don't know how running the phone 24/24 7/7 plugged in is going to last in the long run, especially concerning the battery. Has someone tried this? [edit: see below comments, the post actually advises removing the battery] [1] https://dontkillmyapp.com/ https://dontkillmyapp.com/
- excalibur 2y agoThis post links to a previous post from the same author concerning removing the battery and running the device without one: https://crackoverflow.com/docs/system_administration/containerization/turn_android_phone_to_batteryless_home_server/ https://crackoverflow.com/docs/system_administration/contain...
- jraph 2y agoAh, nice. I had skimmed the article and didn't read the intro. This is pretty cool. I could be interested in using my PinePhone like this. Its battery is removable and the phone can be started without it, but the Wi-Fi / Bluetooth module won't run without it. I had the idea of faking the battery like this, but I don't have the skills to handle hardware like this.
- chainingsolid 2y agoYou could just plug the phone into a small usb-c hub and plug some usb wifi dongel or ethernet cord into it. Not sure if that would solve your use case.
- jraph 2y agoYep, it could work, and I happen to have such a hub (it came with the PinePhone). I think the PinePhone is able to receive power AND do USB OTG at the same time, to be confirmed. To be completely honest, what I had in mind was to use it as a Bluetooth receiver to play music using my dumb speakers. I don't have a Bluetooth receiver and at this point if I have to buy something I might be better off buying some off the shelf device to do this. So the status quo is to just plug a laptop the times I want to play music in this room because I don't care that much about it.
- matthewaveryusa 2y agoI've heard that it's a terrible idea with the battery still in. Curious why this is a non-issue for a UPS -- is it the scale, type of battery (lithium ion vs lifepo4), quality, charge cycle, a bit of all of the above?
- selectodude 2y agoIt’s not a non-issue. UPS batteries have a rather short lifespan.
- HPsquared 2y agoThat's surprising. My laptop battery is like 10 years old and still fine. Light usage and mild storage conditions. Surely UPS batteries are similar.
- pmontra 2y agoMy UPS manual says 3 years. They have a different chemistry than phone batteries. On the other side, they should be quite similar to car batteries which could live much longer that 3 years, but they spend most of their time waiting in a parking slot and then a few starts per day or less. An UPS doesn't work like that.
- bityard 2y agoA good UPS will perform regular load tests to gauge battery performance/degradation. They switch over to battery power around once a week and measure voltage before, during, and after. So even if the power goes out, they are still being exercised _somewhat_.
- password4321 2y agoCan you link to one of these on Amazon or your preferred vendor which you recommend for home office use?
- DCKing 2y ago> Then yes, you have a regular Linux (although based on musl, instead of usual glibc) on which you can install Docker. The OnePlus 6/6T are also supported by Mobian [0], which is just regular glibc-and-systemd based Debian, and so a pretty familiar Linux server experience. > it might indeed be a good idea to avoid Android It's a good idea to avoid Android because of kernel security as well. Old Android devices always use out of date Linux kernels even when using custom ROMs, and when running (containerized) network services you really depend on the security of your Linux kernel to keep those things properly isolated. Both PostmarketOS and Mobian do bring current mainline Linux support to these devices, so you can be quite a bit more confident in your kernel that way. It's a shame PostmarketOS and Mobian don't really support many newer devices well. Last I checked the OnePlus 6(T) were still the highest performance devices that had okay support. The Snapdragon 845 - a 2018 flagship SoC - in the Oneplus 6/6T made them real high performance device to repurpose for a long time. In 2024 though it's now beaten in performance by the Raspberry Pi 5 or RK3588 based Armbian based devices. Those SBCs of course already have much better I/O and more straightforward ways to get a supported Linux running on them (and don't require disconnecting the battery with custom soldering). So you need to be really committed to reusing your old hardware to go down this route. [0]: https://wiki.debian.org/Mobian/Devices https://wiki.debian.org/Mobian/Devices
- palata 2y ago> It's a good idea to avoid Android because of kernel security as well. Well it's "just" a matter of updating the kernel, right? Those linux projects like PostmarketOS do a lot of mainlining, which benefits custom Android ROMs. I agree that if the goal is to use the device as an RPi, then it's better to avoid Android. But I wouldn't say that Android is less secure than Linux in general (on the contrary, Android has an interesting security model).
- nurumaik 2y agoHad very old android phone (redmi go) with sim running 24/7 to forward sms OTPs for a month or two Sms forwarder app + tailscale on phone, python script on server that forwarded incoming sms to telegram bot (probably could use webhook to avoid this step though). Worked perfectly with 100% uptime
- anybody8824 2y agoWith the upcoming Android 16 Terminal VM powered by the Android Virtualisation Framework (AVF), it should also be possible to run Docker in an Aarch64 Debian VM similar to WSL2 or ChromeOS crostini. However, this may still be constrained by OEMs restricting access to AVF or by battery enhancements that make it virtually unusable.
- kokada 2y agoThis is one of the things that may make me serious consider another Android tablet (especially one with a nice keyboard+touchpad accessory connected via e.g.: Pogo pins). It would definitely be a game changer, and a high-end Android device could completely replace my current hybrid Chromebook.
- KeplerBoy 2y agoIsn't google merging chromeOS and android anyways?
- Brain_Man 2y agoHow close would this be to native performance? Will it use any hardware features to reduce the emulation overhead if both the host and the guest use the same architecture?
- ForHackernews 2y agoI guess the idea is that you'd do this with an old phone and already-dying battery. It's like having a small raspberry pi style server + builtin UPS.
- rkagerer 2y agohow aggressive the OOM killer can be with background apps This drives me nuts.
- Tade0 2y ago10 years ago I worked at a company which had a fleet of phones to test mobile browser games we were making and the batteries were in noticeably worse shape after a few months of near constant use. Nowadays in most phones you can limit charging to e.g. 80%, which is much lighter on the battery. Additionally, the battery works as a heat sink (or heat store really considering it's just a solid slab of dense material) so expect more throttling when it's not there.
- nine_k 2y agoIf you have an old phone that would otherwise go to garbage, likely its battery is not in a great shape anyway, and server-like loads are mostly incompatible with being battery-powered. I suppose it's going to be permanently attached to a USB power source. Thanks for the heads-up about the thermal inertia of the battery! Maybe a stationary phone in the server role could use a glue-on passive radiator.
- close04 2y agoThe problem isn’t the performance of the battery but the safety. A dead battery for this always-connected use case is probably a non-issue. A swollen battery that could explode or catch fire is definitely an issue. You could take it out but many phones won’t work without a battery so you need to find a way to trick them into thinking one is installed.
- grishka 2y agoYou have to play by Android rules. If you start your daemons from an app that runs a foreground service, I believe this protection would spread to the app's child processes too. Or if you root your phone, you can bypass the activity manager entirely.
- dang 2y agoOk, we changed the title in the hope of making that clearer.
- Suppafly 2y ago>I thought it was about installing Docker on Android, but it's about installing postmarketOS on a phone. That makes the whole thing a lot less interesting. Install linux on a small computer and do linux stuff with it probably wouldn't get clicks.
- jraph 2y agoIt could be about reusing hardware that would otherwise sleep forever in a drawer. This would be commendable.
- deleted 2y ago[deleted]
- greentea23 2y agoYou can run these commands to turn that kill behavior off: setprop persist.sys.fflag.override.settings_enable_monitor_phantom_procs false /system/bin/settings put global settings_enable_monitor_phantom_procs false Termux as an example supports several services that run forever. Works great, sshd and crond don't get killed for example. https://wiki.termux.com/wiki/Termux-services https://wiki.termux.com/wiki/Termux-services Battery wise you can use this app to keep it in a healthy range and temperature indefinitely: https://github.com/VR-25/acc https://github.com/VR-25/acc
- Oxodao 2y agoFor having a sshd server on my phone I do really like this magisk module https://gitlab.com/d4rcm4rc/MagiskSSH https://gitlab.com/d4rcm4rc/MagiskSSH This let me ssh into the real android instead of inside termux, which might be preferable depending on the use case
- squarefoot 2y ago> (although based on musl, instead of usual glibc) For those who never used musl and Alpine Linux (which PostmarketOS is based on), the list of supported architectures and software ported over is quite large; here's a list: https://pkgs.alpinelinux.org/packages https://pkgs.alpinelinux.org/packages Alpine is my distro of choice for very small systems and VMs once I make sure there are no compatibility issues with what I need to install/build, which can happen sometimes but is really rare. The amount of saved resources (CPU, storage) is significant, making it ideal for VMs.
- znpy 2y agothe main issue i see is musl: they have an history of not acknowledging bugs and disregarding standards last big issue i remember is they not implementing fallback-on-tcp when getting large dns record replies, so some dns record resolution would fail. the standard clearly says to switch to tcp under certain conditions, but they did not. the bug was reproduced and reported, they refused to acknowledge it and kept the issue for a lot of people for a long time (at least one year iirc). they eventually relented and and implemented the correct behaviour. call glibc what you want, but at least they don't have such dumb issues and that attitude.
- 3abiton 2y agoYou can always install incus and glibc. Went with musl for voidlinux, and for using certain appimage, I needed to have glibc. It was seemless to install incus, a debian image, and you have unlimited deb packages at your disposal.
- NewJazz 2y agoIs it just that one example? And the situation now is they "relented"? call glibc what you want, but at least they don't have such dumb issues and that attitude. I... Don't know what to say. You really can't think of one decision that the glibc maintainers have made that caused a lot of pain for users? Pretty sure the musl author has/had a blog post full of them. You don't write c library for no reason at all.
- sofixa 2y ago
- j45 2y agoRemoving the battery is ok
- sintezcs 2y agoThere is a Russian meme that instantly comes to my mind: https://images.fineartamerica.com/images-medium-large-5/bread-trolleybus-boriss-mogilins.jpg https://images.fineartamerica.com/images-medium-large-5/brea... The translation: “With the help of simple tools, a loaf of white (or rye) bread can be turned into a trolleybus… But WHY?!” The label on the wrench says: “Skillful hands.”
- tombert 2y agoI mean, in this case I can actually think of two reasons. 1) A lot of people, particularly people who would be in the mindset to install PostmarketOS, probably have an old Android phone lying around, or at least know someone who has a phone they'd give up for free because it's currently living in a desk drawer or something. This means you can get a home server for free. Android phones aren't exactly the fastest thing in the world, but they're probably fast enough for a lot of servery things, and even a relatively small 128GB internal disk can still stream a fair number of movies if they're generously compressed with H264 or something. 2) Power consumption. My phone charger that I'm using right now peaks at 20W, and idles at considerably less than that when the phone is fully charged. That's getting into "guilt-free" territory; you can leave this plugged in and not really have to worry about your bill spiking as a result.
- BadHumans 2y agoThis is barely related to the article but what is the status of Linux phone operating systems? Last time I used one, you could make calls and that was more or less it.
- jraph 2y agoFor having used a PinePhone for a year as a main phone, I would say that the biggest limiting factor for me is the hardware. I want something reliable that has good autonomy and good and reliable call quality. I would not want the phone to leave me behind in an emergency for instance. But the PinePhone is none of this: terrible phone quality, the modem on my device is unreliable, the autonomy is okayish. I also had a PinePhone Pro that died: big improvement except the autonomy was much worse and it would strongly eat. I believe that's what killed it, actually. With good hardware, I would be happy with a Linux mobile OS. But I don't use WhatsApp, I don't have a banking app, I don't pay with my phone, and have no proprietary app in general. Things like Wi-Fi calling would probably not work neither, but I don't have this with my old Android phone neither. You will have to hope mobile alternatives to Signal will work well enough for you too (and I guess that requires liking some adventure, but if that works, you also win on not being limited to one phone per Signal account).
- chainingsolid 2y agoYour last paragraph reminded me that I had to set up Waydroid so I could install Telegram(Android). Just so I could create an account, so I could then use the already installed Telegram desktop that came by default with like any mobile distribution I tried.
- jraph 2y agoOn Signal it is way easier thanks to signal-cli [1]. [1] https://github.com/AsamK/signal-cli https://github.com/AsamK/signal-cli
- palata 2y ago> With good hardware, I would be happy with a Linux mobile OS. You mention autonomy a lot, and I agree. I don't think it's a question of hardware: I can install Android on my PinePhone and see that it uses much less battery than a Linux system. Android was built for that: it is extremely optimized for battery usage. I think it will be very hard to beat that with Linux.
- jqpabc123 2y agoInteresting only if have free time and already own a compatible phone. Otherwise, wouldn't be better to invest time and money in a mini-pc with storage and power capabilities better suited for server use?
- jraph 2y agoAbsolutely, this is for hardware reuse. I wouldn't buy a phone specifically for this, there are better options.
- n144q 2y agoYes, the title is slightly misleading. It is more like "How to flash PostmarketOS on your unused Android phone with unlocked bootloader" than the Docker thing
- lostemptations5 2y agoThis is silly. It's quite simple to install Docker on any stock Android using Termux. https://github.com/cyberkernelofficial/docker-in-termux https://github.com/cyberkernelofficial/docker-in-termux I've done it successfully a few times and it works just fine.
- jraph 2y agoTermux is an option but using pmOS is far from silly. Android and Termux have their limitations. Granted, I was running a full KDE session in Termux on a 2016 phone, but I saw Android OOM-kill random processes in Termux. You probably don't have a swap partition on your Android phone. Android apps are designed to be killed when in background, and Android avoids killing the app at the foreground, but Android doesn't know some processes running in Termux shouldn't be killed. This could happen if something on your server suddenly uses more RAM than anticipated. On a regular Linux distro, you can have a swap file and/or teach the OOM to not kill some critically important services, like ssh for instance.
- lostemptations5 2y ago[flagged]
- jraph 2y agoWakelocks don't answers at all the concerns I raised. And I don't currently use these tools. And I'm not omniscient. I'm flagging you because you are just introducing aggressity here and this is completely useless. I'm not here for this, I'm here to read and share interesting ideas. Others shared ways to address the concerns I raised in a nice and polite way and didn't need to tell me what I need to do like this. Go spread your disdain elsewhere.
- lostemptations5 2y agoYou know, reading it back -- you're right. It could come across a little snarkey. My apologies. I'll try and be a little less blunt in the future.
- goodburb 2y agoFor those looking for cheap portable servers, the majority of the Motorola G series phones with Android 14 including models under 120 USD have a battery charge limiter down to 60% adjustable. At 60%, the battery will drop to 45% percent before recharging to the specified percentage for coulomb counter drift compensation. Most lithium UPS avoid this by using LiFePO4. Moto G04 with 128GB Storage (UFS - 400MB/s read/write), 4GB RAM and 2TB capable SDcard UHS-I slot is just 90 USD. ZRAM is enabled by default at 2GB and 2GB storage swap, it's adjustable under "RAM boost" setting. Disabling the app background killer is one toggle away for Termux. No root required. Wi-Fi does around 350Mbit with no buffer bloat, and supports simulatenous softAP and station mode with a dedicated DHCP by enabling hotspot without mobile data. This is useful for out of band management, e.g if Wi-Fi AP goes down, there is a small hiccup though. You can combine Speedify and Tailscale (for NAT) to have 99% uptime with seamless failover since there is a mobile modem in there. ;) The Type-C port is dual role and will charge from a powered hub in host mode. However connected devices power is disrupted for a split second if the charger is removed, so the phone isn't really a UPS for external peripherals unless you don't mind the brief reconnection. I do hope a Pi A+ or something similar and popular exist in the future at a reasonable price, considering that we have phones that are cheaper than the Pis while missing GPIO but adding camera, speaker, screen, case, charger, LTE, and a headphone jack which was also removed on the Pi 5 (USB DACs aren't consistent with pipewire). Mini PCs vary and they aren't really portable, hard to setup headless, especially projects utilizing an easy DIY approach like the Pi-hole or kit/pre-flashed SDcards. For comments comparing a new Pi with used PC: used Pis exist and are a lot cheaper after shortage.
- bloqs 2y agoHistorically, some people thought it was a cool idea to run phones as servers with a built in UPS (I looked into it myself) but the problem is phone batteries have a nasty habit of exploding
- andai 2y agoSo just encase it in a lead box... Oh, wait...
- immibis 2y agoHabit? It's been known to happen on rare occasion, but a habit?
- bohdanqq 2y agoThey tend to turn into those inflated pillows (and perhaps even rupture?) when connected to power all the time. You could disassemble the phone, remove the battery, and reassemble and use it without it (if it boots and is stable).
- jyounker 2y agoA simple solution might be to put the charger on a timer.
- rpastuszak 2y agoI so wish I could do this with my old iPhone 8. Has anyone attempted this, successfully? Has anyone attempted that successfully? My ideal would be to run *nix on with a web server and NAS. I don't care about borked camera or bluetooth, just wifi would be fine.
- raybb 2y agoNot sure about iPhone 8 specifically but that are many efforts available depending on your iOS version. https://ipadlinux.org/ https://ipadlinux.org/
- rpastuszak 2y agothanks! to my knowledge iSH is too limited for my use case (it's more of an emulated linux environment). I might give UTM another shot. I can see that there's a "proper" distro but for iPhone 7 though! btw if you're into this kind of stuff, check out MacPaint on iPad via UTM. It looks lovely! I can't find the link now, but check out Matt Sephton's blog for that: https://blog.gingerbeardman.com/2023/10/21/list-of-vintage-japanese-pixel-dot-art-software/ https://blog.gingerbeardman.com/2023/10/21/list-of-vintage-j... (ps I write about this stuff occasionally too https://untested.sonnet.io/notes/til/weekly/58/#h-interesting-articles-and-videos https://untested.sonnet.io/notes/til/weekly/58/#h-interestin...)
- nntwozz 2y agoBack in the day I used an iPhone 4 as a Transmission torrent server with Cydia. It had only 32GB storage but it was a fun idea, worked great.
- rpastuszak 2y agoCydia! Oh man, that brings back some memories. I still fondly remember not being able to use Skype and log in to my bank xd I had this chronic disease where every year I'd turn my PC into a hackintosh and my iPhone into a jailbreaked version of it. Recovery took about a week on average.
- 2y ago
- mavhc 2y agoThe ability to run ethernet and power over the same usb port is handy for static reuse of phones, not sure there's a list of who supports it though
- defenestrated 2y agoWdym by "list of who supports it"
- numpad0 2y agoCharging while in host mode and native USB-Ethernet card support are both not universally implemented features
- Lerc 2y agoI'm curious to know if there is a good way to do this on a phone with a broken screen. I have accumulated a few phones with 3+ gig of RAM, a decent number of moderately good ARM cores, but with broken screens. Essentially this means all control with the device has to be on the few buttons, and the USB, and all feedback must be through USB (or maybe audio) How transplantable are screens between phones? Assuming no geometric fit is required, are the connectors/interfaces standardised inside enough to bodge a temporary screen long enough to set-up a remote interface.
- ForHackernews 2y agoHow old are they? I was surprised to discover that plugging my 2019-era Samsung device into a thunderbolt 3 dock (to charge, I assumed) lit up the monitors as external displays and enabled control with a keyboard and mouse.
- broken-kebab 2y agoI believe it's not a common android behavior but Samsung's S-line thing
- forgotpwd16 2y agoSwitching to pmOS may be bit hard but can run Docker containers on Android. (Although steps differ.) About Android, if a device got adb enabled, can use scrcpy to display and control the device from PC. Considering this, the problem is reduced in enabling adb. If the device supports HDMI-out, can use a USB-C hub to have output and PC connection. If the device supports OTG, can use scrcpy's OTG mode (or attach a mouse via an adapter) and enable adb by doing the required steps manually. If no HDMI out, have to do them blindly. But should be possible using an automation/input tool (like xdotool) to script them. (This procedure can also be used to OEM unlock if want to install pmOS.) If the device is blessed with unlocked bootloader, can `fastboot boot` a TWRP IMG (almost every device has a TWRP port) that has adb enabled by default. From PC can then set persist enable to true and push authorization keys. If cannot run a custom recovery but the device allows 3rd-party OTA updates in stock recovery, can flash an UPDATE.ZIP that does the same. Flashing pmOS is also done via fastboot. But probably need to install a custom pmOS IMG to account for the broken screen. Like pre-enabling ssh, similar to how you will do installing Linux to a remote server.
- smm11 2y agoI used a Samsung Galaxy, as in the first Samsung Galaxy phone, as a home server maybe 15 years ago. No Docker, or PostmarketOS needed.
- 4fterd4rk 2y agoI've always wondered if we'll ever see a paradigm shift toward services being hosted on our phones. Not feasible now due to battery life concerns, but these are little Linux computers with redundant (wifi plus cellular) network connections that are always turned on. Some battery advancement and more efficient E cores and we're there, no?
- palata 2y agoFrom what I think I understand, a big difference between a Linux distro and Android (apart from the security model) is the battery optimization. A mobile phone is very different from a Linux server in that it's idling most of the time. But if you run a server and prevent the system from optimizing the battery, then it won't last very long.
- denysvitali 2y agoThis looks remarkably similar to my post :) https://blog.denv.it/posts/pmos-k3s-cluster/ https://blog.denv.it/posts/pmos-k3s-cluster/
- nsonha 2y agowhat is the phone with the best specs currently that supports linux with external display?
- khushy 2y agoThat is an excellent suggestion. I have a few mobile devices that could be effectively utilized as a home server. And with Docker, we can deploy a multitude of applications.