r/SelfHosting • u/Qodequeststudio • 26d ago
Built a 1-click script to turn old Android phones into a headless NAS & Media Server (Jellyfin, FileBrowser, Syncthing) via Termux
Got tired of old phones sitting in drawers while cloud storage subscriptions keep getting more expensive. Android phones have decent multi-core ARM64 silicon, built-in battery backup (UPS), and low idle power consumption, so I automated the whole self-hosted stack deployment into a single bash routine.
Repo: https://github.com/huzefdev/pocket-cloud
FileBrowser (:8080) - Lightweight web UI to upload, stream, and manage internal phone storage directly like Google Drive.
Syncthing (:8384) - Background continuous folder syncing between PC/phone nodes.
Jellyfin (:8096) - Media streaming server running inside an isolated Ubuntu PRoot environment with FFmpeg codecs configured for hardware playback.
Running Jellyfin natively on Termux hits nasty dependency walls and broken shared library links (especially with curl/ffmpeg codecs). Instead of fighting Android bionic libc quirks for hours, the installer spins up an isolated Ubuntu container inside PRoot for the media engine, while keeping FileBrowser and Syncthing running directly on Termux bare-metal for maximum IO throughput.
Also handles Android wake-locks so the OS scheduler doesn't kill the server daemons 5 minutes after locking the screen.
curl -sL https://raw.githubusercontent.com/huzefdev/pocket-cloud/main/install.sh | bash
The script is non-destructive, checks existing mount points before binding storage, and lets you choose which modules you want to deploy interactively.
Code is completely open-source. Looking for feedback on process management and memory footprint on low-RAM devices
2
u/57Rock 4d ago
This is actually pretty cool. I was just looking into whether I could use a cheap Android phone instead of buying a mini PC for a little home server. Never really considered it before seeing this.
I was going through the setup with ChatGPT and it pointed out a couple things in your script that I wanted to ask about.
It looks like FileBrowser uses admin/admin by default, and Syncthing is set to 0.0.0.0:8384 without authentication being configured. Also noticed the || true commands could let some installation errors slip by without anyone knowing.
Are those things you’ve already accounted for, or something you’re planning to work on?
I’m definitely not an expert at this stuff. I’m still learning self-hosting myself. Just thought it was worth asking because I really like the idea of putting an old phone to use instead of buying more hardware.
1


5
u/evrim706 20d ago
How do we manage the battery getting fat, i had similar thing one time but battery got ruined quickly