I work for a small non-profit organization that supplies WiFi hotspots and sets of Android devices (with our own open-source reading software on them) to classrooms in developing countries. Currently, we're using off-the-shelf consumer WiFi routers as the hotspots to provide network connectivity, but for numerous reasons, we've decided these aren't good enough.
Some of the reasons include:
No ability to install our own software onto the routers. We want to run a small web server on each router, and have each router pull a set of OPDS feeds and EPUB files (using rsync) from sets of servers hosted in the US each time the router sees there's network connectivity. We'd also like to run a few small bespoke internal services such as collecting analytics and providing book search results over a REST API.
No ability (in the models we use) to run something like a small Squid cache. We're using a mobile fleet deployment system to push updates to devices, but the network connectivity is poor to the point that most devices can't complete the upgrades before the connection is dropped. With a Squid cache on the hotspot, only one device has to be able to pull an APK file successfully and the rest of the devices get the cached copy.
No (or extremely limited) ability to whitelist traffic. Right now, network connectivity is low-bandwidth, very expensive, and has very low limits with regards to data usage. As much as it would be great to be able to allow each device to go on the internet freely, we can't afford one student deciding to go on YouTube and eating up the entire school's monthly bandwidth quota in an hour.
So I'm looking at options for switching the routers we use to a single-board-computer style arrangement. I'm not completely set on Pi-ish SBC, it's just that I would prefer not to buy an off-the-shelf consumer router because these are not explicitly sold as "You are supposed to put your own operating system on this". If we buy proprietary routers, install OpenWRT on them, and set up all of our processes and builds around them, and then the manufacturer brings out a new revision that allows only signed firmware... Oh dear, now we have to pick out and transition to a new device. I would much rather buy something that is open right from the start (modulo any binary drivers that might sadly be required) so that we can choose new models at our own pace.
Unfortunately, although I have around two decades of software development experience, open source, administration of UNIX/Linux/BSD servers, and the like... I have very little experience with these kinds of devices.
Given the requirements:
- Provide DHCP to a classroom of 30+ Android devices with extremely light bandwidth requirements.
- Provide a web server for serving rather small (< 10mb) static files.
- Have the ability to run a few daily scripts including rsyncing content from remote servers.
- Provide a Squid cache (or equivalent) for caching requests made to external servers for APK files.
- Be possible to administer over SSH externally.
... Can someone recommend to me a device that would be sufficient for this onto which I can install OpenWRT (or failing that, just a plain Debian install or similar)?
We'd prefer to buy something that is as "conventional" as possible (if such a thing even exists) so that we have the option to switch to a similar device if necessary. Having a manufacturer that has produced more than one device and will likely keep producing devices for years is a strong plus. A kickstarter-funded project that might possibly maybe produce ten units this year wouldn't qualify. We supply to many schools, and the number is constantly growing, so picking a model that's actually possible to buy would also be a strong plus (it was very difficult to get hold of Raspberry Pi Nanos in another project, for example - they were constantly out of stock everywhere).
Any help would be appreciated!