How to create an Internet-in-a-Box on a Raspberry Pi
How to create an Internet-in-a-Box on a Raspberry Pi
Learn about this inexpensive device for students with restricted internet access and people in remote areas of the world not served by broadband.
If you're a homeschool parent or a teacher with a limited budget, Internet-in-a-Box might be just what you've been looking for. Its hardware requirements are very modest—a Raspberry Pi 3, a 64GB microSD card, and a power supply—but it provides access to a wealth of educational resources, even to students without internet access in the most remote areas of the world.
I recently had a chance to visit with developers Adam Holt and Tim Moody about the project. Adam said this wonderful initiative began with One Laptop per Child at MIT. From there it was forked in 2012 into the School Server Community Edition project, and now it is called Internet-in-a-Box. I learned of the project while attending LinuxConNA last summer in Toronto, where I first met Adam.
While most of us take ubiquitous broadband for granted, this isn't the case in much of the developing world. Internet-in-a-Box can be configured, set up, and operated without a connection to the internet because all its content resides on a microSD card. Therefore, it can provide rich internet content, regardless of your location or access to a high-speed internet connection.
Internet-in-a-Box contains "Wikipedia in 37 languages, a library of 40,000 e-books, most of the world's open source software and source code, hundreds of hours of instructional videos, and worldwide mapping down to street level," according to the project's website. Internet access is required only if you want to add even more content to your device.
For a little over US$ 50, you can have a wealth of open and/or free educational resources on your own network or a subnet in your home, classroom, or library. Internet-in-a-Box is so portable that you could even send it home with your students.
I was eager to try it out.
There are a couple of new system images, complete with sample content, that can be downloaded for the Internet-in-a-Box: If you want a full GUI on your Raspberry Pi, then the PIXEL image is for you, but I was content with the Rasbpian Lite image.
After downloading the image file, I extracted it, then transferred it to a 64GB microSD card. If you want more content on your device, you'll want to use a larger card. I inserted it in the Raspberry Pi 3 and started the computer. It took a few minutes to boot the first time, as the initial boot was slowed by the expansion of the filesystem to ext4 and the initial configuration of the 11 content packages. But very soon, I had a functioning Internet-in-a-Box and was serving content on my home network. Subsequent startups were faster.
Adam said the advantage of using these pre-configured images is that Ansible is already configured. Configuration changes take approximately 17 to 20 minutes due to the Raspberry Pi 3 processor; the same process on a standard PC would be about two minutes. However, the cost of the Raspberry Pi at US$ 35 is a fraction of the cost of a standard PC running Debian.
The admin console
Once set up, I connected to the Internet-in-a-Box wireless access point.
Internet-in-a-Box is easily administered by pointing the browser to http://box.lan/admin. Log in with the username xsce-admin and the default/initial password g0adm1n (note the numbers 0 and 1). The web admin interface is very easy to use and is almost self-explanatory, but there is an adequate "Help" available from the menu.
In the admin console, you can change the administrative password and set up other configuration parameters, including configuring the box as a gateway, an appliance, or a LAN controller. I set mine up as a gateway and connected an Ethernet cable to my router so that I could download additional content.
For a complete list of default passwords for the project, consult the FAQ.
Adam told me that the project is experimenting with a captive portal implementation so that less literate users can easily connect to Internet-in-a-Box without typing in a URL. Non-English speaking people are not familiar with our alphabet, so entering "http://box.lan" can be an impediment to their use of the software.
Finding and using content
Internet-in-a-Box includes Wikipedia for Schools, Offline Medical Encyclopedia, Wiktionary, Wikispecies, Khan Academy Lite, Moodle, OpenStreetMap, Owncloud, PhET (interactive mathematics and science simulations), Science TED Talks, Sugarizer, and Wikibooks. You can download additional content on your microSD card, depending on its size.
To access the content, I pointed my Internet-in-a-Box's browser to http://box.lan/home and was presented with an easy-to-use webpage. The "USB" choice (above) is for teacher-supplied content that might be stored on a USB drive.
From here, I can look up "Ray Charles Wikipedia," a demonstration page from Wikipedia. Or, I could download the entire Wikipedia for offline use. I can access Moodle and provide e-course content for students.
I can also access ownCloud to upload content created on attached devices.
I can also view OpenStreetMap, which includes eight levels on the pre-configured Raspberry Pi image. Tim said that a full install of OpenStreetMap would provide 15 levels, with access to street-level maps of major cities like Toronto.
Internet-in-a-Box is a boon for nearly anyone, including those who want to provide students with walled garden access to rich internet content, as well as people in remote areas of the world not served by broadband.
The off-network content community, which includes the Internet-in-a-Box project, welcomes new members. If you'd like to get more involved, visit the community's wiki. You can also check out the source code repository, licensed under GNU Public License 2, at GitHub.