Created 2020-08-19
- Hacking
- Portable Web
Recently I discovered some spare parts from past projects, and ended up with this, a battery powered Raspberry Pi Zero W. But what to do with it?
A few ideas came to mind or were suggested, such as a portable DMR hotspot, POCSAG transmitter, and others. But one idea came together from a few other bits.
What if I could have a WiFi hotspot that served content, rather than the Internet? What if the Pi was an isolated network that followed me around?
Basic Setup
The basic setup has the following parts
- An open WiFi hotspot (using RaspAP)
- A "Captive Portal" to introduce users to the "Network" (using NoDogSplash)
- Lighttpd to host stuff on HTTP
- dnsmasq to resolve domains to our Pi
- USB network gadget mode to load content etc.
I won't go into detail of how this is configured, because it isn't anything special. Basically I set a few domains to resolve to the fixed IP of the Pi, and lighttpd is set to serve static files from the PI's SD.
When a user joins the network they are greeted with a page introducing the idea, and a button to connect. They should then be directed to the custom domain home.portableweb
which provides some more info and links to services available on the Pi.
What can it do?
Not much, yet!
My website
I have a full mirror of my website on the Pi. As it is all static html files this is really easy to do, I just copy the files to the Pi and it "Just Works".
Cheltenham Amateur Radio Association News Archive
The CARA website is larger, and more complex. However, I have a simple page with some info on the club, and an archive of CARA News in PDF format.
A guestbook
I've made a very basic PHP guestbook that lets users read and post messages for me, and future users. It is very simple and just stores everything in a json file.
USB Sync
The Pi is configured to act as a USB network "gadget" when connected to another computer using the "data" USB port. This way I can run a small bash script that runs a handful of rsync commands to sync updates to the various "sites" to the Pi, and copy the guestbook off the Pi.
But Why?
Honestly? Because I thought I could, but wasn't sure, and it seemed fun.
Maybe you are reading this whilst connected to my "Portable Web"? If so, please put something in my guestbook and tell me what you think!
This is also a kind of experiment. It seems that every website these days has huge piles of javascript, tracking, cookies, adverts, and requires a farm of servers to make one page display. This is different, one tiny computer, no infrastructure, just you and me! That your access to the information goes away when the two of us are no longer close makes the experience mean more. Maybe. I don't know, but it seemed worth exploring.
Being an open WiFi, and the impracticality of using HTTPS, everything is unencrypted. My guestbook has some security in that PHP filters out "bad stuff" the user submits, but basically this is all open. Which suits the experimental nature of amateur radio quite nicely. How long that will even be practical, I don't know, I'm sure browsers will soon start warning users not to touch anything that isn't HTTPS.
Are "portable webs" going to take over? I seriously doubt it.
Could they become a thing? Maybe? Has someone else already done this before, I'm sure they have! Could they be a fun way to provide more information at events, clubs, etc., maybe. (the Physical Web sort of does this, but in a more "cloud" way) Could I find a better name for it? I really wish I had done before using it so many times...
What next?
I want to add some more services to the Pi. Some ideas are:
- Telnet server to play Snakes and Ladders
- Gopher server with similar content to the http stuff. I'd probably need to provide a gopher client too!
- An e-paper display so I can see if there are new entries in the guestbook, connected users, etc.
- Some live info on the Pi, such as uptime, for the users to see (as proof it really is real?)
- Some basic contact logging software that would show what I'm doing when /P and then sync with my main log later
- A "Portable Web Protocol" that can let units chat or something? Like StreetPass for the 3DS?
- Improve the DNS so it catches non existent domains and returns you to some help, rather than just failing.
- A way to trick Android (and others) to think they DO have Internet, so they don't use use mobile data and ignore the Pi
- More info on Amateur Radio, maybe clone Wikipedia? Some videos from Essex Ham?
Conclusion
In the end, this is probably pointless and I'll never have anyone spontaneously use it, and I doubt anyone else will try to replicate the idea.
However, it was fun to build, and with some hot glue to hold the wire and LiPo in place it looks pretty neat!
If you do have thoughts, come talk to me on mastodon! I'm @[email protected]