What an Android device can serve with Termux, Caddy, and sshd. Applies to small ARM devices in the 3-4 GB RAM range: a Retroid Pocket and a Lenovo tablet both run this stack.
:8080 (file_server over ~/www):8022 (Termux's non-root SSH port)proot-distro container alongside for anything Termux lacks
Everything below installs with one pkg install from the Termux main repo and runs directly under Termux, so the existing watchdog can supervise it. Versions rotate; check pkg show <name> for what is current.
| Category | Packages | Notes |
|---|---|---|
| Web platforms | pocketbase, gitea/forgejo, miniflux, shiori, hugo/zola, kiwix-tools | PocketBase is a whole backend in one binary. Miniflux needs PostgreSQL. |
| Media | navidrome, jellyfin-server, minidlna, icecast, mpd+mympd, snapcast-server, transmission | Navidrome runs ~50-100 MB. Jellyfin direct-play fine; transcoding is impractical on ARM. |
| Sync and files | syncthing, rclone, restic+restic-server, aria2 | Encrypted backup backends work headless. |
| Databases | mariadb, postgresql, redis/valkey, sqlite, openldap | MariaDB needs tuning to ~300-500 MB. No MongoDB server package. |
| Monitoring | uptime-kuma, netdata | Keep netdata's retention small. |
wake_lock matters: termux-wake-lock keeps the CPU alive with the screen off