IIAB/FAQ: Difference between revisions

From OLPC
Jump to navigation Jump to search
Line 480: Line 480:
* /usr/bin/calibre AND move old .deb's from /opt/iiab/downloads if on RPi ''(Calibre version shown by "calibre-server --version")''
* /usr/bin/calibre AND move old .deb's from /opt/iiab/downloads if on RPi ''(Calibre version shown by "calibre-server --version")''
* /library/calibre-web/metadata.db deletion forces default settings, and restores a minimal metadata.db ''(calibre-web does not use version numbers, but version is implied by "cd /opt/iiab/calibre-web; git log")''
* /library/calibre-web/metadata.db deletion forces default settings, and restores a minimal metadata.db ''(calibre-web does not use version numbers, but version is implied by "cd /opt/iiab/calibre-web; git log")''
* [no file deletion required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] ''(Lokole version shown by "grep ^Version /library/lokole/venv/lib/python3.5/site-packages/opwen_email_client-*/PKG-INFO")''
* [no file deletion of /opt/elgg-ACTUAL.ELGG.VERSION/index.php required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] ''(Elgg version shown by "ls -l /opt/elgg")''
* [no file deletion of /opt/elgg-ACTUAL.ELGG.VERSION/index.php required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] ''(Elgg version shown by "ls -l /opt/elgg")''
* [no file deletion required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] ''(Kolibri version shown by "/usr/local/kolibri/bin/kolibri --version")''
* [no file deletion required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] ''(Kolibri version shown by "/usr/local/kolibri/bin/kolibri --version")''

Revision as of 22:55, 3 January 2019

This IIAB XSCE content does not reflect the opinion of OLPC. These pages were created by members of a volunteer community supporting OLPC and deployments.

How does Internet-in-a-Box (IIAB) help?

Bring the power of a free Digital Library of Alexandria into the hands of any school worldwide! Internet-in-a-Box is also used in medical clinics and libraries, as can be seen in this Dominican Republic video.

Whether costing $50 or $500, an Internet-in-a-Box (IIAB) server brings your classroom/school laptops together, communicating & coordinating learning in ways that deeply empower kids, teachers and community.

Please consider creating your own Internet-in-a-Box [1] [2].

If so, read about the original Internet-in-a-Box (our global community uses rich open content shared by the best educational systems worldwide) then build up your local community's very own 21st century digital library below.

We are proud that IIAB is built by global network of professional volunteers, inspired by One Laptop per Child's famous laptops and their innovative Sugar Learning Platform — but with a wider vision of serving all!

Where is Internet-in-a-Box used?

Internet-in-a-Box (IIAB) was originally called the OLPC School Server Community Edition (XSCE) and is in use in more than a dozen countries, from smaller communities to large-scale institutional deployments.

Examples include orphanages and schools in Haiti, to schools across southern Mexico, to rural communities and libraries across southwest Ghana, to remote schools in Myanmar/Burma and Cambodia, to villages across India, to a girls science school in Rwanda, to community centers in Kenya, to a youth community in rural Malaysia, to South Africa townships -- as well as broad Central American deployments like Nicaragua, Costa Rica, and the Dominican Republic.

Libraries and rural medical clinics are also avid users of IIAB, in places like Guatemala and the Dominican Republic.

Many contributors are also using IIAB for more personal/grassroots and home library purposes too, helping refine our community product for increasingly diverse and larger impacts!

What can I do with E-books and Internet-in-a-Box?

The first step is to add content gems to your Internet-in-a-Box (IIAB).

Learn how to download high-quality free content, like Wikipedia ZIM files.

Or add content from your own USB disk or USB flash drive. Sharing or purchasing a hard-drive packed full of incredible Wikipedia + Maps + Literature + Khan Academy learning resources is also possible. Contact http://unleashkids.org volunteers should this be necessary.

Either way, this opens up entirely new opportunities for semi-connected schools and offline libraries worldwide, unleashing the best of Internet learning without costs or distractions. Medical clinics, museums and progressive prisons are also taking advantage, as well as individual educators and parents taking charge by building their own "Library of Alexandria" community hotspots.

How can kids best take advantage of these crown jewels of learning? After you've added content, you can offer your students direct access to different kind of content, using links like:

http://box            Your Internet-in-a-Box Library!
http://box/usb        Content from USB sticks/drives, that teachers can insert anytime
http://box:8008       KA Lite (Khan Academy videos & exercises, with its own content downloader)
http://box:8009       Kolibri is like KA Lite; will allow educators to customize+remix Content Packs at http://box/kolibri ?
http://box:8080       Calibre E-Book Library: see FAQ, calibredb manual, calibre-server manual (see Calibre-Web below)
http://box/maps       OpenStreetMap: for box/modules/en-osm-omt-min or box/modules/en-worldmap/map.html or box/iiab/static/map.html
http://box/docs       FUTURE synonym for http://box/nextcloud ?
http://box/wiki       DokuWiki: collaborate on documents
http://box/elgg       Elgg social network for e-learning
http://box/info       IT support docs & eventually vids, offlined for all
http://box/kiwix      Kiwix: amazing content & videos, contained in searchable ZIM files
                        WARNING: use http://box:3000/kiwix/ to avoid the Apache proxy e.g. for enhanced privacy #852
http://box/books      Calibre-Web E-Book Library, an alternative to Calibre (above) with a modern interface: #816
http://box/moodle     Moodle 3.5.x LTS (learning management system)
http://box/lokole     Lokole is an Email service that works offline for rural communities, students and teachers.
http://box/kolibri    FUTURE URL for Kolibri (above) expanding upon KA Lite: #4127
http://box/wordpress  WordPress 5.0 (blogging & community publishing)
http://box/mediawiki  MediaWiki 1.31.x LTS (Wikipedia's own wiki software for document collaboration)
http://box/nextcloud  Nextcloud 15 (students can store their files/photos on Internet-in-a-Box, like Dropbox and Google Drive)
http://box/runestone  Runestone Interactive Textbooks (proposed, example)
http://box/sugarizer  Sugar Learning Platform originally from One Laptop Per Child

Common network ports are listed in our high-level networking summary. Internet-in-a-Box administrators can also benefit from these web tools:

http://box:9091                Transmission BitTorrent downloader, for KA Lite content provisioning etc
http://box/admin               Admin Console: operators log in here, to improve your Internet-in-a-Box server/system
http://box/munin               Network/Infra monitoring
http://box/awstats/awstats.pl  Usage statistics

We could use help making several of these URL's more bulletproof across different networking environments! Please get in touch if you have Apache or NGINX expertise and can help here: #923


See: Can teachers display their own content?
See: How do I customize my server's home page?
See: What are the default passwords?
See: How do I add ZIM files, like Wikipedia?

Can teachers display their own content?

Yes, teachers can spontaneously insert (and remove!) their own USB memory sticks and USB drives anytime. Somewhat like an informal projector, the teacher's content appears for students almost instantly at:

http://box/usb

Instructions:

  1. Traditionally, the teacher needed to create a folder called "usb" on their USB memory stick, placing audio/video materials, handouts, challenges or presentation(s) inside that folder. However, this "usb" folder is No Longer Required as of IIAB 6.5 (by default) unless local_vars.yml is changed to iiab_usb_lib_show_all: False, followed by cd /opt/iiab/iiab; ./runrole usb-lib
  2. The teacher inserts their USB stick/drive into any one of the Internet-in-a-Box's USB ports.
  3. Done! The "teacher content" is available (live) to students within seconds. WARNING: Older browsers and non-standard phones/devices cannot access http://box/usb, and so require that students type in http://box.lan/usb or http://172.18.96.1/usb

We recommend USB memory sticks formatted with the FAT32 filesystem. Linux filesystems like ext4 can also work. Automount support for newer/large exFAT-formatted sticks and NTFS-formatted portable disks was added in February 2018.

Clarification: it's OK to insert multiple USB sticks/drives at the same time. If so, content from each USB stick/drive is visible within http://box/usb, e.g. in sub-folders that will be obvious, like the following:

http://box/USB0
http://box/USB1

Or possibly:

http://box/usb/USB0
http://box/usb/USB1

See the Install Doc. Finally, if you have a screen attached to your server, and occasionally see an old error as follows, it is safe to ignore:

Unable to mount 2.0 GB Volume
Device /dev/sdb1 us already mounted at '/media/usb0'.

See: What can I do with E-books and Internet-in-a-Box?
See: How do I customize my server's home page?
See: How do I add ZIM files, like Wikipedia?

Can I buy my own Internet-in-a-Box?

You can order a basic medical version of Internet-in-a-Box from the Wiki Project Med Foundation who will ship from Canada or India to almost any location worldwide, if you agree to provide feedback to help improve the product for all.

What hardware should I use?

Internet-in-a-Box (IIAB) is free and open source software that runs on many different hardware platforms:

  • Raspberry Pi 3 or 3 B+ ($35 + parts) and the Raspberry Pi Zero W ($3.14-to-$10 + parts): It continues to astonish us how powerful these tiny "RPi" computers really are, able to serve 32 students simultaneously, with their powerful built-in Wi-Fi. We strongly recommend the RPi 3 B+, for DIY implementers building their 1st digital library to serve a classroom. For smaller kiosk scenarios serving just a few people (Internet-in-a-Box is used in rural medical clinics and similar) definitely consider the RPi Zero W, preparing its IIAB microSD in advance using an RPi 3 or RPi 3 B+.
  • Refurbished "Windows" Laptops: Quality donated laptops can sometimes work extremely well to install Internet-in-a-Box, ironically acting as a server for an entire developing world classroom or small school. However an external Wi-Fi router is usually required, making installation more complex than RPi and Mini PCs (whose internal Wi-Fi is generally capable of AP mode, so an external Wi-Fi router is not required in many/most classrooms!) Still, the spaghetti wiring of an external router may be worth it, if the laptop has a reasonably new battery, acting as a de facto UPS (critically important in developing world schools where electricity comes and goes). Of course quality used laptops with large hard disks and multiple GB of memory are better yet. Finally: make sure the laptop runs Linux well, and has a BIOS that permits it to run while the screen is closed.
  • Intel NUC: Avoid classic/desktop PCs whenever possible, as they consume far too much electricity. However tough, well-rounded, low-power Mini PCs (such as the Intel NUC) world extremely well, have proven very effective as school servers in the developing world since 2014. We typically insist on NUC models that accept SATA (2.5 inch hard drives, HDD or SSD) and work with DC voltages up to 19V. Warning: low-end NUC models only work right near 12V, and so are not reliable using lead-acid batteries that you find in most solar installations. Finally: the NUC is not a fan-less device, but nevertheless has proved very reliable across diverse climates.
  • Other Mini PC competitors: MSI units have proven very solid, and Zotac perhaps less so. Definitely consider Gigabyte BRIX (e.g. GB-BSI3H-6100) which is almost an exact clone of the NUC. As a bonus, the BRIX allows internal Wi-Fi to scale beyond the Intel NUC's annoying limitation of 12 connections maximum. To make this happen, insert an appropriate Atheros Wi-Fi module (typically < $10) into the BRIX. George Hunt can answer questions around which Atheros Wi-Fi modules have been tested to work, as of February 2017. Recap: scaling up internal Wi-Fi is sadly not possible with Intel NUCs since 2015 (5th generation NUCs and onwards) as Intel's Wi-Fi module is unfortunately soldered in.
  • ARM Mini PCs: CPUs like TrimSlice / Utilite and Cubox by SolidRun might one day catch up, providing much-needed community momentum and packaging. To date however we have been disappointed with their firmware, and the availability of Linux kernels/drivers working with internal SATA / internal Wi-Fi (e.g. AP mode), to truly make teachers' lives easier. But check back as many more global deployments' experiences accumulate, and rugged low-end hardware increasingly emerges, on OrangePi or similar?
  • One Laptop Per Child: We do NOT recommend the original XO-1 laptop as a server (256MB RAM is insufficient). However several have successfully deployed the very rugged XO-1.5, XO-1.75 (ARM) and XO-4 (ARM) as school servers in Haiti and Malaysia etc. Thanks to George Hunt's amazing work here over the years.

MEMORY: Some do fine with 512MB RAM (even in 2018!) serving static content from the RPi Zero W. Others do just fine serving dozens of simultaneous video streams from an RPi3 (or 3 B+) with 1GB RAM. Finally, certain others require 8GB or more within a Mini PC, when server-side loads become intensive. For example if you are running an LMS, experiencing a lot of OpenStreetMap traffic, or when fileserver-like capabilities are mandated for all students.

STORAGE: While there's increasing movement from hard disks to SSDs and MicroSDs every year, many others still swear by tried-and-true hard drives. Certainly rotating media are the clear winner when large-capacities are needed at a low price. In the end all storage technologies can fail, each in there own ways. So it's far more more important to start with the actual community's learning goals, engaging educators around their authentic content/interaction needs — and then narrow in on storage capacity/technologies later. Alternative: consider this earlier discussion of external USB hard disks and their possible risks.

HEAT/DIRT/DUST: Ensure your server is positioned with ample room around it for ventilation, away from direct sunlight. Dirt/dust will collect inside it almost regardless, and should certainly be removed from time to time.

Thank you for asking further hardware questions at http://lists.laptop.org/listinfo/server-devel !

What OS should I use?

Our latest OS (Linux distribution) recommendations should always be posted within the IIAB Platforms document. Generally Raspbian on Raspberry Pi 3 (or 3 B+) is best for people getting their feet wet in 2018, regardless whether they prefer the full/graphical Raspbian with Desktop (includes many amazing desktop apps for learning, with the LXDE-pi desktop/windowing system) or Raspbian Lite (does not include a graphical desktop environment) for a more classic/headless server. WARNING: NOOBS IS NOT SUPPORTED, as its partitioning is very different!

Others like Reno McKenzie & Josh Dennis were experimenting successfully (some tweaks required!) with IIAB on the lean & mean http://DietPi.com in February/March 2017.

In recent years, Security/Maintenance/TCO concerns have caused deployments to step back from the (bleeding) edge, preferring LTS(*) multi-year support updates that accompany stable OS's like CentOS 7 (security updates until June 30, 2024), Debian 9 (security updates until June 2022) — or Ubuntu LTS (64-bit 16.04) (security updates until April 2021) which was newly supported as of IIAB 6.3.

(*) Many schools/libraries/clinics now believe LTS is necessary to avoid the rapid annual turnover of Fedora (inherited from OLPC in 2012, during the transition from XS to XSCE). Whereas in the past, deployments often preferred the cutting-edge features provided by a recent version of the Fedora OS, similar to OLPC OS 13.2.10.

Finally, if there are situations where porting to a new OS/distro will tangibly help schools/libraries/clinics across an entire region, don't hesitate to reach out (on our server-devel mailing list, or contact holt @ laptop.org) as you assess the scope-of-work to complete such a job.

Is a quick installation possible?

Verify that your hardware and Linux OS are appropriate!

To install Internet-in-a-Box (IIAB) 6.7 pre-releases onto Raspbian on a $35 Raspberry Pi 3 (or 3 B+) computer, Debian 9 or Ubuntu 18.04, try our 1-line installer:

  curl download.iiab.io/6.7/install.txt | sudo bash

This takes about 1, 2 or 3 hours to complete on Raspberry Pi — depending whether you choose MIN-sized (~6 server apps), MEDIUM-sized (~12 server apps) or BIG-sized (~20 server apps) as the installer begins.

An Ethernet cable (connected to fast, live Internet) is strongly recommended during installation, as well as a modern microSD card (with fast write speeds), and a well-ventilated Raspberry Pi!

If you get stuck installing, definitely get in touch!

Other Linux OS's are theoretically possible, but may require extensive babysitting to get right. Follow the "Do Everything from Scratch" instructions. MBR was preferred in the past, but UEFI can work (as set in your PC/server's BIOS) if your Linux distribution supports that. Beware that partitioning is critical particularly with distros like CentOS that attempt to allocate all extra/surplus space to /home by default (this won't work, as the most voluminous content will be placed in /library instead!) Finally, avoid enabling LVM partitioning, especially if you'll later be needing Clonezilla to duplicate the disk.

Then, to get down to real business (education!) there are a variety of ways to add content to your Internet-in-a-Box (IIAB) server.

After installation, please explore learning materials within your server's home page (http://box or http://box.lan) and also get to know the Admin Console (http://box/admin or http://box.lan/admin) which permits you to (1) configure your school server and (2) download new content. Example screenshots: (stale graphics from 2015, but that's the idea!)

Finally, to arrange an elegant portal/home page (typically http://box) for all your students or users to explore, we recommend you organize your chosen Content Packs using the Dynamic Menuing system. As explained just below, this allows you to rapidly prototype and iterate your portal/home page's presentation, tailoring it to your community/library or clinic's precise needs.

Legacy Install Techniques, many of which are deprecated as they long predate 2018, just for the record: Tom Gilliard's 6.0 Installation Notes & Screenshots and Tony Anderson's XSCE 6.0 Install Recipe. Jerry Vonau and others have demonstrated that UEFI support out-of-the-box may in fact be possible in future. Detailed install instructions for the older XSCE 5.1 can still be found here.

See: What hardware should I use?
See: What OS should I use?
See: What are the default passwords?
See: How do I add ZIM files, like Wikipedia?
See: KA Lite Administration: What tips & tricks exist?
See: What are the best places for community support?

What is Ansible and what version should I use?

Ansible is software that orchestrates the installation of Internet-in-a-Box (IIAB) and its component apps/services.

Read the latest version/installation recommendations near Line 4 of scripts/ansible (Ansible version 2.7.x was recommended as of October 2018, but note this recommendation is upgraded frequently as Ansible evolves!)

You may need to upgrade Ansible, particularly if you're updating an older version of IIAB.

If so, be sure you're online, then follow these Raspbian/Ubuntu/Debian instructions as root or using sudo:

  1. Run "ansible --version" to see what version of Ansible you might already have installed — make sure you don't have an old/troublesome version of Ansible installed!
  2. Remove all prior versions of Ansible using "apt purge ansible" and if necessary "pip uninstall ansible" — depending how Ansible was originally installed, if necessary see #564
  3. Remove any and all lines containing "ansible" from /etc/apt/sources.list and /etc/apt/sources.list.d/*
  4. Run the above-mentioned script, by typing "cd /opt/iiab/iiab" then "scripts/ansible"
  5. Run "ansible --version" and/or "apt -a list ansible" to verify — sometimes you need to log out and log back in, if Ansible just moved from /usr/local/bin to /usr/bin or vice versa

CLARIF: None of the above should be required if you're doing a fresh install on a clean OS, using the 1-liner IIAB installer from: http://download.iiab.io/6.7 (which installs Ansible for you!)

PRO TIP: for those wanting to run a single Ansible playbook or role, run ./runrole or ./runrole <ROLE NAME>. (Prior to Ansible 2.5 arriving in March 2018, this was known as ./runtags.)

My Android device says "Connected, no Internet" and won't browse http://box

The message "Connected, no Internet" is normal.

Just beware Android may block you from using Wi-Fi to access Internet-in-a-Box content (preventing your browser from displaying http://box) unless you follow these instructions:

  1. Connect your Android device to the correct Wi-Fi for Internet-in-a-Box.
  2. Recent versions of Android will generally beep within about 1 minute, announcing "Wi-Fi has no Internet access" and "Tap for options".
  3. Tap for more options (you may first need to use your finger to find this notification, pulling it down from the top of your Android screen).
  4. When it asks "This network has no Internet access. Stay connected?" be sure to tap "Yes" !
  5. If you were unable to tap in time, and http://box is still not working in your browser, try to "Forget network" (within Android's Settings -> Wi-Fi networks) then start over, proceeding from Step 1. above.

What are the default passwords?

For KA Lite, Calibre, Calibre-Web, Nextcloud, MediaWiki, Moodle, Elgg, Transmission, etc the administrative user is Admin (don't forget the capital A) and the default/initial password is: changeme — WordPress as well, often uses this same account.

An example is Calibre's "teacher" account (Admin/changeme) which can add/remove and convert E-Books, and also change their metadata, at http://box:8080. Whereas others should use these 7 "student" accounts, to read or download E-Books: box/box, h/h, ht/ht, m/m, mx/mx, p/p or pe/pe (as of Internet-in-a-Box 6.7). If you have access to the Linux command-line, you can change Calibre's accounts by running: calibre-server --manage-users --userdb /library/calibre/users.sqlite

For the Admin Console(*) at http://box/admin, http://box.lan/admin or http://172.18.96.1/admin, the username is iiab-admin and the default/initial password is: g0adm1n (note the numbers 0, 1). GNU/Linux administrators can also use this to login over ssh.

Change iiab-admin's password before connecting your server to the Internet. You can do this within http://box/admin -> Utilities menu — or at the command line, if you type "passwd iiab-admin".

If your OS is Raspbian: also change the password for user "pi" from "raspberry" before connecting to the Internet. At the command line, type "passwd pi". Starting with IIAB/XSCE 6.2's standardized images (as of April 2017) we removed the passwords for user "root" (and where possible for user "pi" too, within headless images), by setting their password fields to * (the asterisk character) within /etc/shadow. This prevents direct ssh access to such accounts.

Still, both users "iiab-admin" and "pi" (if they exist) have root (sudoer) powers. As such, advanced operators generally log in as iiab-admin and then escalate to root using "sudo su -".

(*) While the Admin Console can change iiab-admin's password instantly, it's important to understand that many Admin Console changes (within its Configure menu especially) require you click "Save Configuration" then "Install Configured Options" and then wait for this to complete. Monitor for Status "SUCCEEDED" under Utilities menu -> Display Job Status (takes about 20 min on a Raspberry Pi 3 or 3 B+, depending what changes you've requested!)

Finally, certain install-time passwords are listed in local_vars.yml which overrides passwords listed in default_vars.yml. If you change any of these install-time passwords (by modifying local_vars.yml) don't forget to then run "Install Configured Options" above!

Warning: KA Lite's Admin password cannot be changed in a browser, so you need to run "kalite manage changepassword Admin" (http://box:8008 can only change KA Lite's user passwords). Help is available if you type "kalite manage help changepassword".

See: What can I do with E-books and Internet-in-a-Box?
See: What is local_vars.yml and how do I customize it?
See: What security tips exist?
See: How can I remotely manage my Internet-in-a-Box?
See: KA Lite Administration: What tips & tricks exist?

How do I customize my server's home page?

Starting April 2017, our install images often included sample content to more quickly springboard implementers into content curation, as outlined within Guidelines for Creating IIAB Images incl Sample Content Packs.

If you want to showcase your school or community logo/colors on your server's home page / landing page / start page / launch page / navigation page / portal (what people see at http://box or http://box.lan) you can customize /library/www/html/home/index.html, where most standard HTML tags should work. Please create a backup copy of your ongoing index.html beautifications regularly!

Starting with IIAB/XSCE 6.1 and 6.2 especially, Dynamic Menuing is an alternative approach for those wanting far less hand-coding, that (as a bonus) auto-adjusts all http://SERVERNAMES:PORTS live using browser-side Javascript, for maximum deployment flexibility. To enable this on your server, please read about Menu Definitions and HTML Fragments within this page: https://github.com/iiab/iiab/wiki/IIAB-Menuing

Likewise as many educators want quick customizations on their portal/menuing beyond the logo, some may consider experimental WYSIWYG tools like DokuWiki, WordPress, or Moodle. For example you might lay out your content in an indigenous language, linking to content gems truly relevant to locals. To try these approaches, visit your server's Admin Console at http://box/admin -> Configure tab -> Server Portal -> Select Server Home Page. Since IIAB/XSCE 6.2, your choices include:

  • /home
  • /wordpress
  • /wiki

Enable WordPress or DokuWiki correspondingly, at the top of that page. Then click "Save Configuration", click "Install Configured Options" then monitor the result (typically takes 15-25min on a Raspberry Pi 3 or 3 B+) under "Utilities" tab -> "Display Job Status".

If you need further customization suggestions and tips, don't hesitate to write to: https://groups.google.com/group/unleashkids !

See: What can I do with E-books and Internet-in-a-Box?
See: Can teachers display their own content?
See: What are the default passwords?
See: How do I add ZIM files, like Wikipedia?

How do I provide Solar Power to my school, library or orphanage?

This is a very hard question depending on the growth path of your electrical needs, maintenance options within the country in question, price, theft, etc. Some experienced deployment voices provide concrete examples, typically involving a standard 12-volt deep-cycle battery. But don't hesitate to get your feet wet researching and designing a right-sized solar nanogrid for your own community:

Thanks for taking solar engineering seriously, as we do wherever possible! (Engineers definitely subscribe to Richard Smith's "power" discussion list if you can.)

How do I provide Wi-Fi (wireless) to all my kids?

If you want a self-contained (single-unit) knowledge hotspot, consider Wi-Fi capability physically inside your server (despite its limited radio power?) If so, run "iw list" to determine if it is capable of Access Point (AP) mode, enabled by hostapd. Of course you may need to run "yum install iw" first, so the iw command is available on your server.

If you want higher-powered Wi-Fi equipment and antenna(e) fully external to the server itself, consider approaches from http://villagetelco.org where possible, detailed below. More experimentally, Anish Mangal has experimented successfully with cantenna(e) in India, between classrooms and schools.

Within classrooms, many deployments use the $20 TP-LINK TL-WR841N as these Wi-Fi Routers have proved generally reliable over the years.

We recommend deployments double the classroom capacity of these WR841 routers (to almost 40 simultaneous connections) by trying Terry Gillett's SECN-XSCE firmware here: (based on OpenWrt, but far simpler)

  http://download.villagetelco.org/firmware/secn/unstable/tp-link/SECN-4/XSCE/

April 2016's RC3 firmware release is increasingly stable: strongly consider it or more recent. It should be followed shortly by a stable/official release we hope. There is firmware for all recent versions of WR841 hardware (v8, v9, v10 and v11) so be sure to select the correct one.

When flashing a TP-LINK with original factory firmware, install using a firmware file labelled "factory" from the RC1 or RC2 folders. Otherwise, use a firmware file labelled "sysupgrade" to upgrade from one OpenWrt-based version to another.

There is also a wiki page outlining how to use PoE (Power over Ethernet) and how to daisy-chain multiple such routers together:

  http://wiki.villagetelco.org/Power_over_Ethernet_for_MP02_and_TP-Link_Routers

Most important: take advantage of community support, where volunteers are eager to help on the server-devel@lists.laptop.org and xsce-devel@googlegroups.com mailing lists. There's always tons to learn from the latest Wi-Fi fieldwork success stories.

Also consider IRC channel #schoolserver on http://webchat.freednode.net for live chat, and unleashkids@googlegroups.com, which is a great place to ask educators about various schools' filtering recommendations, across different age groups and cultures, whether your school is online or off!

Finally, don't hesitate to blog or write up your own specific recommendations, no matter how large or small your school. This vital engineering shop-talk upholds more schools, libraries and orphanages than we can count (building our community repertoire of Wi-Fi wisdom, often far from the Internet, creating "knowledge hotspots" in every sense) in turn allowing kids to take advantage of amazing free Digital Libraries like http://internet-in-a-box.org and Pathagar e-books.

How do I change the wireless network name?

The wireless network name is how people connect to your school server when they are using a Wi-Fi device. This name is also known as an SSID.

How to change it depends on whether your wireless access point is fully-external (such as a wireless router) or rather under direct OS control (e.g. internal, or a tiny USB-connected wireless adapter) :

  • If it's fully-external, change its SSID (wireless name) using the documentation that came with the router.
  • If it's under direct OS control, then the Internet-in-a-Box (IIAB) is also the wireless access point:
    • Edit this line in /etc/iiab/local_vars.yml :
      host_ssid: "Internet in a Box" (quotation marks may not necessary)
      Then run as root: (or sudo)
      cd /opt/iiab/iiab && ./iiab-network
    • You might also log into your server's Admin Console (http://box/admin) then change the SSID (wireless name) there, under Configure -> Internal WiFi AP -> Internal Wifi Access Point Name. This setting will not take effect until you click on Configure menu -> Install Configured Options (red button), and wait many minutes for all new settings to take effect (monitor status under Utilities menu -> Display Job Status).
    • WARNING: do not edit /etc/hostapd/hostapd.conf directly, unless you want these custom settings trashed upon updating your Internet-in-a-Box! If you must edit this file despite the danger, consider "systemctl restart hostapd.service" to avoid rebooting.
    • Earlier, George Hunt's command "xs-hotspot-on <SSID>" (iiab-hotspot-on) solved this on XO-1.5 and similar. Conversely "xs-hotspot-off" (iiab-hotspot-off) to turn the internal hotspot off entirely.

See: What are the default passwords?

Can I name my server something other than http://BOX.LAN ?

http://box.lan should work in ~99% of all cases, and http://box should work in ~90% of cases; there is no need to change these.

If however a custom name is desired, this can be implemented within each school/library/clinic by logging into Admin Console (http://box/admin) -> Configure menu -> Network Parameters -> Host Name, if you click "Save Configuration" then "Install Configured Options" (waiting patiently for that to complete under Utilities menu -> Display Job Status; which takes ~25min on a Raspberry Pi 3 or 3 B+!)

Many different names have been used in the past, such as http://schoolserver.lan and http://school.lan -- anything that resolves locally to http://172.18.96.1 should be sufficient with standard networking. For the record, some of these older names are listed within the following links:

https://github.com/iiab/iiab/blob/master/roles/network/templates/named/school.external.zone.db
https://github.com/iiab/iiab/blob/master/roles/network/templates/named/school.internal.zone.db
https://github.com/iiab/iiab/blob/master/roles/network/templates/named/school.local.zone.db

Advanced implementers may want to change these 4 zone files too, all within the very same /var/named-xs directory:

school.internal.zone.16.in-addr.db
school.internal.zone.32.in-addr.db
school.internal.zone.48.in-addr.db
school.internal.zone.in-addr.db

See: What are the default passwords?
See: Any other networking tips?

Any other networking tips?

See local_vars.yml just below.

Please read our high-level networking summary which lists common ports and lists some common customizations.

PRO TIP: If you use a USB-to-Ethernet dongle (for upstream Internet, generally) use a permanent marker on the server's correct USB port, so that it's not accidentally moved to another USB port!

Also, do not swap the dongle for another, as each dongle has a fixed/unique MAC address. Worst case if your dongle is lost or broken, you will later (after the new dongle is inserted) need to rerun "./iiab-install --reinstall" (formerly "./runansible") from directory /opt/iiab/iiab when your Internet connection is live.

FYI Wi-Fi as upstream is only available on Ubuntu 18.04 desktop using the GUI configuration applet — whereas systemd doesn't do Wi-Fi out of the box on Ubuntu 18.04 Server, and would need additional steps.

More advanced networking insights follow from the stock instructions for setting up upstream and downsteam routers attached to Intel NUC hardware, just as an example.

NOTE: Some prefer Gigabyte BRIX (a drop-in replacement Mini PC, instead of the Intel NUC) as an Atheros internal Wi-Fi module can be inserted, to scale beyond Intel's soldered-in limit of 12 Wi-Fi connections maximum.

Classrooms within 100 meters of your school server can easily be connected using standard Ethernet wiring, or using Wi-Fi repeaters. Outdoor wiring is possible (preferably fiber optic cables below ground) but check with experts to avoid problems with lightning. Beyond 100 meters, a more deliberate tree and branch solution may be needed.

Please ask questions about your specific school's networking/wiring challenges on mailing list server-devel@lists.laptop.org !

FEBRUARY 2018 WORKAROUND: When IIAB is installed on Ubuntu 17.10 or (pre-release) Ubuntu 18.04 users might have difficulties connecting over Wi-Fi to the server. As a temporary measure until IIAB supports Ubuntu 18.04 officially later in 2018, consider moving the contents of /etc/network/interfaces.d/iiab to /etc/network/interfaces (issue #625).

FEBRUARY 2018 SIMULTANEOUS AP & WIFI-AS-CLIENT PROPOSAL: Pre-doc https://github.com/georgejhunt/iiab/wiki/Using-WiFi-during-IIAB-Installation-on-the-Pi-3-and-W outlines the basic RPi implementer recipe for George Hunt's Pull Request #690.

See: Can I name my server something other than http://BOX.LAN ?
See: Captive Portal Administration: What tips & tricks exist?

What is local_vars.yml and how do I customize it?

Put variables within /etc/iiab/local_vars.yml for all your Internet-in-a-Box installation(s), to override defaults, if use of the Admin Console (http://box/admin) is not immediately possible.

Do NOT modify default_vars.yml, as explained in the IIAB Architecture and IIAB Variables docs.

Three example local_vars.yml files are posted for comparison. Also, a couple very practical networking variables are posted at the bottom of the IIAB Networking document.

Implementers should place changes in local_vars.yml using a text editor such as vi, nano, or emacs. Remember to enact all variable changes by running "cd /opt/iiab/iiab" followed by "./iiab-install --reinstall" (formerly "./runansible") (takes ~15 min to ~2 hours on Raspberry Pi 3 or 3 B+).

Or, the essential 1+6 "post-install" roles of Ansible's 1+9 overall stages can be run from Admin Console (log in to http://box/admin) -> Configure menu -> Install Configured Options button. Then monitor the progress (typically ~20 min on Raspberry Pi 3 or 3 B+) within Utilities menu -> Display Job Status. PRO TIP: monitor live progress using "tail -f /tmp/job-<JOB NUMBER>"

PRO TIP: Those who prefer the command-line can consider these options:

  • Use './iiab-install' for regular installs, or to continue an install.
  • Use './iiab-install --reinstall' to force running all Stages 0-9.
  • Use './iiab-install --debug' to run Stage 0, followed by Stages 3-9.
  • Use './runrole <ROLE NAME>' (formerly ./runtags) to run a single Stage or Tag or Role. Run './runrole' to see your options.
  • Use './iiab-network' to run Network section(s).

PRO TIP: if you've accidentally made changes that prevent "cd /opt/iiab/iiab; git pull" from merging GitHub's repo cleanly onto your local machine, consider backing up your local_vars.yml and starting completely fresh. Starting fresh (after you've backed up everything as a precaution) means removing all of /opt/iiab/iiab, recloning from GitHub, and keeping a backed up copy /etc/iiab/local_vars.yml on hand, so this can rapidly be restored.

See: What are the default passwords?
See: What are the best places for community support?

Is a "Rapid Power Off" button possible for low-electricity environments?

Yes. Small medical clinics and electricity-starved remote libraries typically require this, given that Raspberry Pi computers do not have a physical Power Off button, and it is asking too much for non-technical users to use the Admin Console.

Set "apache_allow_sudo: True" in local_vars.yml and then run "cd /opt/iiab/iiab" then "./iiab-install --reinstall" (formerly "./runansible") which runs for about 20min on a Raspberry Pi 3 (or 3 B+). [This variable was renamed from allow_apache_sudo on 2018-09-23, as part of #1165]

To power off, any user can then click a URL like: http://box/common/services/power_off.php

(Whereas most schools do not want this, for obvious reasons — a mischievous student could shut down the Internet-in-a-Box at any time! This is the reason most schools prefer "apache_allow_sudo: False".)

Earlier Known Issue in IIAB 6.3: You also needed to run "cp /opt/iiab/iiab/roles/httpd/files/html/services/power_off.php /library/www/html/common/services" to enable the "Rapid Power Off" button.

See: What is local_vars.yml and how do I customize it?

What technical documentation exists?

Please see our new IIAB Contributors Guide for developers, first published in October 2017.

Implementers should start 2017's new IIAB Installation document.

Living Docs are ever-evolving for good reasons, as technical progress is rapid, so you may want to monitor recent GitHub merges as well.

Offline operators should check our growing collection of Internet-in-a-Box technical support docs (and eventually videos!) being made available at http://box/info. Some operators prefer to download the very latest tech support documentation every few months when their server is briefly online, by running "/usr/bin/iiab-refresh-wiki-docs" which is equivalent to roles/httpd/templates/refresh-wiki-docs.sh (based on the pandoc document converter).

Historically, core IIAB/XSCE 6.2 Docs were migrated to https://github.com/xsce/xsce/wiki for IIAB/XSCE 6.2 in early 2017, and then to https://github.com/iiab/iiab/wiki in June 2017 for IIAB 6.3.

The earlier XSCE 5.1 + Internet-in-a-Box Install Doc for Intel NUC from 2015 can sometimes be very useful for larger hardware implementers.

Also see George Hunt's foundational collection of XSCE (School Server Community Edition) docs from 2012-2015 at http://schoolserver.wordpress.com

Finally, Anish Mangal hopes to formally write up his deployment recommendations / 8-part training materials based on his experiences setting up IIAB/XSCE in Northern India, while http://unleashkids.org with http://kidsoncomputers.org document the human experience around Haiti/Mexico deployments and beyond.

Please suggest improvements to this FAQ where you can, and check back to reread at a later date, Thank You!

How do I get Internet-in-a-Box updates every few months or semester?

Great question: the magicians behind http://internet-in-a-box.org anticipated this would be critical, despite the near-impossibility of downloading large Content Packs to remote locations in the developing world. Certainly, Internet-in-a-Box improved its Wikipedia full-text-search in 2014/2015 (which remains compatible with XSCE 0.4, 5.x and IIAB/XSCE 6.x) and some remote upgrades are occasionally possible.

And yet an honest calculation of terabyte download costs and frustrations explains why drop-shipped hard drives' "content catalogs" are more economic and efficient than overweight monolithic download torrents.

On the high end, IIAB's Admin Console (http://box/admin -> Install Content) supports piecewise incremental content updates for those schools with extremely high/affordable bandwidth. As of early 2017, note that Content Packs must be manually removed, when space is needed (e.g. after that content is no longer in use). An exception is KA Lite, whose administrative interface (log in as "Admin" to http://box:8008) supports deletion of lessons/videos, as well as downloading new ones.

As a practical matter, remote schools may receive updates via hard drive or USB memory stick every semester or so, flown/driven in by a partner, bringing new maps/encyclopedias/E-books and video lessons.

Keep in touch as new options evolve! Make contact with http://unleashkids.org if you want to order a copy of the latest Internet-in-a-Box content from these volunteers' community effort.

See: What are the default passwords?
See: How do I add ZIM files, like Wikipedia?

How do I know what version of IIAB I'm running?

Log into your Internet-in-a-Box server's Admin Console (http://box/admin) and click "About" in the top-right. Look at both fields "Version" and "Commit ID".

The "Version" field should show something like "release-6.5" or something else if you're running an earlier pre-release from https://github.com/iiab/iiab/commits (= https://github.com/iiab/iiab/commits/master)

Compare the 40-character string "Commit ID" to "Latest commit" at https://github.com/iiab/iiab/releases (such as https://github.com/iiab/iiab/tree/release-6.4) to reconfirm you have IIAB 6.4 (e.g. it should begin with 3ab0386 if you're running the official IIAB 6.4 from October 5, 2017.

Caution: The letter 'g' is sometimes added in front of 7-character githash (abbreviated from the full 40-character githash as above) within "install image" filenames, in places like http://download.iiab.io/6.2/rpi/ and http://download.iiab.io/6.2/x86/

See: What are the default passwords?

Can I upgrade or reinstall server apps?

Yes, at your own risk you can individually delete the following files or directories, to attempt an upgrade or reinstall of these common server apps, which will happen the next time you run "cd /opt/iiab/iiab" then "./iiab-install --reinstall" :

  • /library/wordpress ...when absolutely necessary, as WordPress generally upgrades itself when used online (WordPress version stored in /library/wordpress/wp-includes/version.php; major upgrades may also require you to drop mysql database "iiab_wp")
  • /opt/nextcloud/version.php (Nextcloud version stored therein; major upgrades may require you to delete the entire /opt/nextcloud and/or drop mysql database "nextcloud")
  • /opt/iiab/kiwix/bin/kiwix-serve (Kiwix version corresponds to timestamps shown by "ls -l /opt/iiab/kiwix/bin")
  • /opt/iiab/moodle/config-dist.php (Moodle version stored in /opt/iiab/moodle/version.php — major upgrades may require deleting /opt/iiab/moodle and /library/moodle, dropping the database using "dropdb -U postgres moodle", and worst case upgrading PostgreSQL below)
  • /library/pgsql-iiab/pg_hba.conf (PostgreSQL version shown by "psql -V" client or "[PATH]/bin/postgres -V" server; major upgrades might require deleting or upgrading data directory /library/pgsql-iiab)
  • /library/ka-lite/database/data.sqlite then "systemctl restart kalite-serve", then you may need to re-register and delete/re-download KA Lite's English "content pack" at http://box:8008/update/languages/ (KA Lite version stored in /library/ka-lite/httpsrv/static/docs/index.html ; major upgrades also require deleting /usr/local/kalite)
  • /library/dokuwiki-<version>/VERSION if reinstall required (DokuWiki version shown by "ls -l /library/dokuwiki")
  • /usr/local/osm (sometimes needed to force a fresh install of OSM / OpenStreetMap)
  • /library/mediawiki-ACTUAL.VERSION.NUMBER/LocalSettings.php (MediaWiki version stored in /etc/apache2/sites-available/mediawiki.conf pointing to /library/mediawiki-ACTUAL.VERSION.NUMBER, as installed per /opt/iiab/iiab/roles/mediawiki/defaults/main.yml; major upgrades may also require you to drop mysql database "iiab_mediawiki" and delete /library/mediawiki-ACTUAL.VERSION.NUMBER; for database/schema upgrades read about update.php in MediaWiki Manual's Upgrading FAQ)
  • /usr/bin/calibre AND move old .deb's from /opt/iiab/downloads if on RPi (Calibre version shown by "calibre-server --version")
  • /library/calibre-web/metadata.db deletion forces default settings, and restores a minimal metadata.db (calibre-web does not use version numbers, but version is implied by "cd /opt/iiab/calibre-web; git log")
  • [no file deletion required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] (Lokole version shown by "grep ^Version /library/lokole/venv/lib/python3.5/site-packages/opwen_email_client-*/PKG-INFO")
  • [no file deletion of /opt/elgg-ACTUAL.ELGG.VERSION/index.php required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] (Elgg version shown by "ls -l /opt/elgg")
  • [no file deletion required, online-upgrade is automatic/mandatory during "./iiab-install --reinstall"] (Kolibri version shown by "/usr/local/kolibri/bin/kolibri --version")
  • [no file deletion required, online-upgrade or offline-reinstall is automatic/mandatory during "./iiab-install --reinstall"] (phpMyAdmin version shown by "ls -l /opt/phpmyadmin")
  • [no file deletion required, though in the past /library/www/html/sugarizer/index.html had to be moved] (Sugarizer version now shown by "ls -ld /opt/iiab/sugarizer*" or in the past, "ls -l /library/www/html/sugarizer"; major upgrades might require deleting MongoDB's entire /library/dbdata)
  • /usr/libexec/iiab-startup.sh (delete this if you want to upgrade to IIAB's latest e.g. /opt/iiab/iiab/roles/2-common/templates/iiab-startup.sh)

WARNING #1: Data loss of kids', teachers' and users' personal materials is always possible, ALWAYS back up any relevant databases first!

WARNING #2: Beware you will likely lose settings that you've set within Internet-in-a-Box's Admin Console GUI at http://box/admin

WARNING #3: Testing is ongoing to make sure this works sufficiently in typical situations like these 2 below, ensuring that a wholesale revert to default settings is at least plausible:

  1. When intermittently online, an operator may want an online upgrade of a server app to the very latest available version.
  2. When completely offline, an operator might want an offline reinstall of a server app using its original zipfile-or-similar installer that resides within /opt/iiab/downloads

See: What are the default passwords?
See: KA Lite Administration: What tips & tricks exist?

What security tips exist?

NOTE: Many install images include ssh keys which permit developers to log into your machine, to enable remote support during Beta programs and similar. You can disable this feature by running terminal command "rm -f /home/iiab-admin/.ssh/authorized_keys".

Whether running your server online or offline, please see IIAB/Security and help us contribute to this evolving knowledge & repertoire of 21st century hygiene, thanks to professional volunteers from many backgrounds.

See: What are the default passwords?
See: How can I remotely manage my Internet-in-a-Box?

How can I remotely manage my Internet-in-a-Box?

Large-scale implementers should consider rolling their own OpenVPN for all remote administration needs, or paying a management service like remot3.it (formerly known as Weaved).

Small-scale implementers may consider XSCENET, which is a minimal remote management solution (with a much more basic remote console, enabling ssh and http among a trusted group). Contact holt @ laptop.org for details. If you are using XSCENET, the "iiab-remote-on" command is generally equivalent to "systemctl enable openvpn@xscenet; systemctl start openvpn@xscenet" and the "iiab-remote-off" command is generally equivalent to "systemctl disable openvpn@xscenet; systemctl stop openvpn@xscenet". If you do not yet have these commands, you can implement them as aliases within /root/.bashrc

NOTE: Developers' ssh keys come included with several install images, to enable remote support during Beta programs and similar. Read "What security tips exist?" if you want instructions to remove these keys.

Those with a graphical desktop environment (like X Windows) on their Internet-in-a-Box often take advantage of TeamViewer for full visual/remote support. This can be priceless when mentoring/learning at a distance, thanks to TeamViewer's screen-sharing, keyboard-sharing and mouse-sharing, to onboard new operators who are not yet able to navigate GNU/Linux and its command line tools. In a graphical desktop environment, simply install TeamViewer, which by default randomizes TeamViewer's password (needed for remote access) every time TeamViewer is launched, preserving local operator control.

You can also enable TeamViewer's fully "unattended access" by setting a "permanent" password for remote access within: Settings/Extras/Options -> Security -> Password.

Raspberry Pi: If you're using the Raspbian OS on RPi (either the "Lite" server edition, or the "With Desktop" edition including a graphical desktop environment) then you want the minimal "TeamViewer Host" (e.g. https://download.teamviewer.com/download/linux/teamviewer-host_armhf.deb was version 13.2.13582 as of 2018-09-24). It works as a single-click install (or "apt install ./teamviewer-host_armhf.deb", or "dpkg -i teamviewer-host_armhf.deb; apt-get -f install") and is more robust than the 2016 version (unattended access is now far more reliable!) It also now includes seamless ongoing upgrades via apt.

Bonus: headless installation/configuration is also now supported (e.g. on Raspbian Lite) with "teamviewer info" "teamviewer passwd <ACTUAL-PASSWORD>" and "teamviewer help" per https://community.teamviewer.com/t5/Knowledge-Base/How-to-install-TeamViewer-Host-for-Linux/ta-p/6318 In future, it might even be possible to install directly with "apt install teamviewer-host" ?

Here is a way to automate the installation of TeamViewer and a few other basic tools on a fresh OS, prior to installing IIAB 6.7/master, on OS's like Raspbian, Ubuntu or Debian: http://download.iiab.io/6.7/prep+teamviewer.txt

Ubuntu/Debian Warning: If you insist on installing the Calibre E-Book Reader via .debs (instead of the normal way via /opt/iiab/downloads/calibre-installer.py) you'll likely damage your installation of TeamViewer 13, which requires Qt 5.5.1 and did not yet support Qt 5.9.1 as of January 2018.

Admin Console: Please note that "systemctl restart iiab-cmdsrv.service" is sometimes necessary when http://box/admin shows red errors upon login.

See: What are the default passwords?
See: What security tips exist?

How do I view usage statistics?

To help teachers view which ZIM files are most popular:

  1. Ensure "./iiab-install [--reinstall]" or "./runrole kiwix" was already run (installing IIAB 6.5+ takes care of this) with the following in local_vars.yml
    • kiwix_install: True
    • kiwix_enabled: True
  2. Visit http://box/awstats/awstats.pl to view stats

Noting:

  • IIAB menuing (links on main page at http://box) can be reverted to the untabulated links (on port 3000) if nec, using https://github.com/iiab/iiab-menu/blob/master/config.json
  • If updating from a much earlier IIAB remove that file (“rm /library/www/html/iiab-menu/config.json”) then update to the latest IIAB menus by running ("cd /opt/iiab/iiab-menu; git pull; ./cp-menus")
  • N.B. there can be an unintended consequence in that the url for Android APKs will be set back to the default if you have overridden it.
  • Underlying code is at: PR #585
  • Please help us improve this community analytics approach if you can: #1268

How do I add ZIM files, like Wikipedia?

Consider Admin Console (http://box/admin) -> Install Content as an alternative to the command-line, as documented here:

Likewise if you have content on hand (like ZIM files or OER2GO/RACHEL modules) on a portable USB disk or USB flash drive, insert this USB drive into your Internet-in-a-Box (IIAB) and then use http://box/admin -> Install Content -> Manage Content to copy (install) the content you need, onto your IIAB.

PLEASE NOTE: The usb drive must have the same layout as the server, i.e. zims are in library/zims/content and OER2GO modules are in library/www/html/modules and the usb must be mounted in /media/usb(0-7), which is where usbmount puts them automatically.

Also, the first time a usb is accessed a catalog is created which may take enough time that you see GET-EXTDEV-INFO Failed and reported No response from CMDSRV in 30000 milliseconds". Please simply try again in a minute to let the catalog finish building.

This copying of content is two-way in that you can also copy zims and OER2GO/RACHEL modules to the usb drive in order to take them to another installation.

Or if you prefer the command-line, download the ZIM file you want (e.g. from http://download.kiwix.org/zim/) to /library/zims/content — for example:

  cd /library/zims/content/
  sudo wget https://download.kiwix.org/zim/wikipedia/wikipedia_km_all_novid_2018-06.zim

Then run /usr/bin/iiab-make-kiwix-lib to rebuild the Kiwix index:

  sudo iiab-make-kiwix-lib

Finally, test that your new ZIM file is browsable at http://box/kiwix and that its search features (on the top-right of the page) are working!

LEGACY ZIM FILES CLARIFICATION: Most all ZIM files generated since mid 2018 contain an internal search index. There are a few rare exceptions however. In some cases title search works but full text search is impossible, because no such index was ever built. In yet other cases (some older/legacy ZIM files, typically from http://download.kiwix.org/portable) the ZIM comes with associated index files that must be placed in /library/zim/index — see also: https://github.com/iiab/iiab/blob/master/roles/kiwix/README.rst

See: What can I do with E-books and Internet-in-a-Box?
See: Can teachers display their own content?
See: What are the default passwords?
See: How do I customize my server's home page?

KA Lite Administration: What tips & tricks exist?

Khan Academy videos and exercises are extremely popular thanks to KA Lite, which stores these famous videos (.mp4) and thumbnails (.png) within /library/ka-lite/content, and can be customized in different ways. Note this folder also contains 3 critical subfolders, after you've installed KA Lite's mandatory English content pack as part of a new install: (IIAB's 1-line installer does this for you!)

  • assessment (836 MB on a new install)
  • locale (16 KB on a new install)
  • srt (subtitles, 105MB on a new install)

To change KA Lite's Admin and user-level passwords, see "What are the default passwords?" above.

For starters, log into http://box:8008 as the Admin user, and learn how to install language packs and then download/delete videos in different languages.

Instead of the above, many prefer torrenting the compressed KA Lite videos (available in 7 common languages) as their storage footprint is more than 3X smaller! Traditionally Windows users used BitTorrent client software like Tixati on Windows, and Linux users used BitTorrent command-line tools like aria2 (trying --force-sequential or "aria2c -Z URL1.torrent URL2.torrent" to download several).

A. Internet-in-a-Box can now kickstart the BitTorrent download(s) for you, if you set "transmission_install" and "transmission_enabled" to True in /etc/iiab/local_vars.yml and pick the KA Lite language(s) you need. Install and launch Transmission by running "cd /opt/iiab/iiab" then "./runrole transmission" then "./iiab-network".

B. Monitor your BitTorrent download(s) at http://box:9091 using Admin/changeme until download is confirmed complete (can take hours if not days!)

C. Carefully move all videos/thumbnails from /library/transmission into /library/ka-lite/content (DO NOT OVERWRITE SUBFOLDERS assessment, locale, srt !)

D. Log in to KA Lite at http://box:8008/updates/videos/ using Admin/changeme then click "Scan content folder for videos" (can take many minutes!)

Separately, you can run "/opt/iiab/iiab-factory/content/khan/ka-scan" to remove obsolete videos, which will be moved to /library/ka-videos/obsolete to help you free up space!

More advanced administrators can take a look at the scripts in /opt/iiab/iiab-factory/content/khan and /opt/iiab/iiab-factory/box/generic contributed by Tim Moody.

In general, you can restart the KA Lite service using "systemctl restart kalite-serve" if attempting such changes under the hood. Three common such examples follow:

Mandatory English Pack taking too long to download? Mysteriously, KA Lite's mandatory 1GB (929,916,955 byte) English Pack can take hours to download over certain ISP's and network environments, when installing it using the official command "kalite manage retrievecontentpack download en". Speedier 3-Step Alternative If So: (1) Download en.zip manually (using another ISP if necessary) from http://pantry.learningequality.org/downloads/ka-lite/0.17/content/contentpacks/en.zip using wget or any browser. (2) Install it by running "kalite manage retrievecontentpack local en en.zip" (it's no longer necessary to type in "export KALITE_HOME=/library/ka-lite", as /usr/bin/kalite is now a bash wrapper to "venv" that does that automatically). Brief Help is available if you enter "kalite manage help retrievecontentpack". (3) Run "du -hs /library/ka-lite/content/" to verify that 940MB or more has successfully been installed there (and log in as Admin to http://box:8008 -> Manage -> Language to be 100% sure!)

Multilingual? Consider running 2 or 3 instances of KA Lite on the same Internet-in-a-Box server, e.g. we sometimes put English on port 8008, Spanish on port 8007, and French on port 8006. Examine the mk-other-kalite script if you too want *direct* access to Spanish videos in /library/ka-lite-es, or *direct* access to French videos in /library/ka-lite-fr, etc. Typically implementers run "mk-other-kalite es 8007" or "mk-other-kalite fr 8008" (make sure your mk-other-kalite is up-to-date, including Tim Moody's patch for venv from May 2018!)

If you do this, you may need to modify iian-gen-iptables to open ports below 8008, if you want "campus-wide" (WAN) access to these materials.

Monolingual in Spanish or French or similar? Fool /opt/iiab/iiab-menu/config.json (live at /library/www/html/iiab-menu/config.json) by changing the line with "es-kalitePort" from 8007 to 8008 — or change the line with "fr-kalitePort" from 8006 to 8008 (this works to get rid of English, even if "en-kalite-Port" remains 8008).

More Documentation? Please see the original KA Lite README.

Similar for Calibre: Modify this same config.json file (live at /library/www/html/iiab-menu/config.json) to change calibrePort (e.g. from port 8010 to 8080) within IIAB's dynamic menuing system.

What about Kolibri, also from Learning Equality? Please see these #841 for several emerging designs to integrate Kolibri within IIAB.

See: What are the default passwords?

How do I add zoomable maps for my region?

As of August 2018, OpenStreetMap (OSM) regional maps packs are now almost 10X smaller, offer far more more detail, are more up-to-date, and are easier to install — thanks to regularly published vector-based tilesets (instead of the older bitmap tiles). Online samples are viewable for the San Francisco Bay Area (includes this 109MB regional dataset) or choose Central America & the Caribbean (includes this 1.1-1.8 GB regional dataset).

Other regions can quickly be installed from OpenMapTiles.com by following the full instructions & explanation in our README.

In short: a single details.mbtiles file can add local geographic detail for your country or region (including building outlines in many cases) if you add this file into any one of our fully-assembled map packs. You can then redistribute your own fully-assembled map pack to help other schools, by placing it in /library/www/html/modules/ on their Internet-in-a-Box.

How This Works: these fully-assembled map packs also contain 1.5 GB of worldwide base maps covering land and ocean up to 10 levels of zoom, 171 MB of fonts — and a 25 MB database so users can locate almost any city/settlement worldwide whose population is larger than 1000 (among 127,654 cities/settlements).

ADVANCED: learn how to combine multiple .mbtiles files (vector map files, highlighting different regions) into a single .mbtiles file, using append2region.

INVITATION: If you can help ongoing efforts to polish maps for children in offline schools in all countries, directly contributing to beautifying OpenStreetMap thereby bringing Earth to life for all, Thank You! Read more at (#877) and please do get in touch to learn more!

WordPress & Moodle Administration: What tips & tricks exist?

How do I optimize WordPress and Moodle for high-traffic usage?

  • Then run as root: "cd /opt/iiab/iiab && ./runrole httpd && reboot"
  • Of course, make sure your Internet-in-a-Box has enough RAM and disk! Background: #1147

Optionally you might further modify the 5 settings {upload_max_filesize, post_max_size, memory_limit, max_execution_time, max_input_time} in /etc/php/7.x/apache2/php.ini as can be done almost halfway down https://github.com/iiab/iiab/blob/master/roles/httpd/tasks/main.yml (then reboot if so!)

How do I copy a complete installation of WordPress to another Internet-in-a-Box?

See: What is local_vars.yml and how do I customize it?

Elgg Administration: What tips & tricks exist?

You may want to set a campus-wide URL for your Elgg social network (other than the http://box/elgg default) such as http://hogwarts/elgg or http://10.10.10.10/elgg.

If so, please see the table `elgg_sites_entity` as documented in roles/elgg/templates/elggdb.sql.j2

It (might) also be possible to have more than one Elgg URL, each with a different hostname and/or IP address. However this (might) possibly cause the creation of distinct Elgg sites, each with different content.

More Documentation? Please see the original Elgg README.

See: What are the default passwords?

Captive Portal Administration: What tips & tricks exist?

Internet-in-a-Box (IIAB) offers a Captive Portal since IIAB 6.7, so new users don't have to type in URL's (like http://box, http://box.lan or http://172.18.96.1) into their browser.

This is similar to pages that appear automatically when you connect to Wi-Fi in airports/hotels/restaurants. This helps provide immediate access to those who have trouble typing in URL's, or live in countries that do not use Latin-based languages in their URL's.

However some schools prefer to disable Captive Portal entirely, as follows:

  • edit /etc/iiab/local_vars.yml so it contains captive_portal_enabled: False
  • cd /opt/iiab/iiab
  • ./runrole captive-portal

Or in a pinch you can disable Captive Portal right away, by running:

  • rm /etc/dnsmasq.d/capture
  • systemctl restart dnsmasq
  • a2dissite 001-captive-portal     # removes symbolic link /etc/apache2/sites-enabled/001-captive-portal.conf
  • systemctl reload apache2

Those wanting to improve IIAB's Captive Portal functionality please explore its Ansible & Python code here. e.g. as new phones and devices appear, different browsers on different versions of Android, Windows, iOS and Linux will require usability (UX) refinements and we'd love your help!

See: What is local_vars.yml and how do I customize it?
See: Any other networking tips?

How can I try XO laptop services?

If you're working with One Laptop Per Child's XO laptops, and want to experiment with XO services on IIAB 6.4: uncomment the line that contains "5-xo-services" in /opt/iiab/iiab.yml — then set your local_vars.yml appropriately. Finally, run "cd /opt/iiab/iiab" and "./iiab-install --reinstall" (formerly "./runansible") being patient until it finishes.

NEW: starting with IIAB 6.5, you can test XO laptop services starting directly with local_vars.yml, without having to touch iiab.yml (which was replaced by /opt/iiab/iiab-stages.yml).

See: What is local_vars.yml and how do I customize it?

Can my XO-based server boot with a unique startup sound?

Yes, when using an XO as a server, it is easy to mistake it for a child's laptop, when it has been detached from storage and networking components.

Here are instructions for adding a unique startup sound.

Is campuswide access possible for all server apps?

No: several of these server apps fail when accessed over the WAN side of an Internet-in-a-Box, but work well over the LAN side or internal-WiFi of an Internet-in-a-Box.

Still: WordPress, Nextcloud, Moodle and others can be modified using an evolving arsenal of tricks that we hope you too can help refine!

The challenge is to get the most urgently needed campuswide LMS-like apps working well enough for campus-like environments (rather than perfectly in all situations, unfortunately not possible given modern cybersecurity threats!)

ASIDE: efforts are ongoing to make snappy/mnemonic URL's (like http://box/books) in support of teachers' and medical clinics' desires to rapidly onramp information literacy among new users.

See: What security tips exist?

Is there a file like AUTOEXEC.BAT to run jobs on boot?

Many Linux OS's offer /etc/rc.local — Internet-in-a-Box (IIAB) recommends /usr/libexec/iiab-startup.sh if you're concerned that local operators might overwrite rc.local

/usr/libexec/iiab-startup.sh is put in place by iiab-startup.yml at the end of Stage 2 during IIAB's installation.

How do I back up, shrink & copy IIAB microSD cards?

Please try our prototype IMAGER software to back up, shrink (truncate) and copy Internet-in-a-Box microSD cards.

IMAGER does more than just make backups and duplicate (similar to Etcher.io and Win32 Disk Imager) as it permits you to use other manufacturers' microSD cards even when they are marginally smaller!

CLARIF: IMAGER only works on Windows as of version 0.2. On the Linux OS, please use the dd, min-sd and cp-sd commands (min-sd is the underlying magic that shrinks or truncates microSD cards, without any data loss).

What are the best places for community support?

Start with live chat on irc or post to one of these 2 mailing lists:

Describe your issue in full (with context) so that others may help — including screenshots if possible, Thanks! The fastest response will arise if you post a "New issue" here:

Those who do not have GitHub accounts should consider creating one. While you can write to bugs @ iiab.io, we apologize that a response is NOT guaranteed.

If you need live (irc) chat support from global volunteers, but have intermittent Internet, consider an intermediary computer (irc bouncer). An irc bouncer accumulates irc responses when you're offline. This enables you to follow the flow of conversations that are ongoing 24x7, when you return online. Finally, if you're a regular contributor to Internet-in-a-Box, we can help arrange an irc bouncer for you. If so please get in touch, and please see Reno McKenzie's irc instructions.

Community Technology/Design calls take place live most Thursdays off of: http://MINUTES.IIAB.IO

CONTACT: if need to get in touch regarding strategic alliances or partnerships with Internet-in-a-Box, please email Adam Holt (holt @ laptop.org).

See: What are the default passwords?

How can I help?

Great you asked, this is the question!

All please take a look at our quasi-weekly Agenda/Minutes to see what others are working on, as we prepare to refresh out list of volunteer microtasks for 2019.

Technical developers please see our IIAB Contributors Guide, from October 2017.

Please post your suggestion(s) to one of these 2 mailing lists:

Serious digital librarians are invited us to join our content engineering calls, that occur on certain Saturdays, building off our [1] Content Hackathon.

Note this section below will be overhauled, as our work accelerates into important new areas.

Take seriously the "Features Planned" section of our Features page helping schools globally getting their highest priorities implemented.

Schools greatly benefit from testing on diverse hardware if you can help! Online contribution are strongly welcome, with in-person human interaction at our quasi-quarterly face-to-face meetups advancing our education efforts faster yet.

Finally, organizing everyone's many ideas, use cases and docs is real work, and as such we very strongly welcome savvy communicators!

Please also suggest your own ideas on mailing list server-devel@lists.laptop.org, or contact Adam Holt (holt @ laptop.org), thanks!

Where can older versions of IIAB/XSCE be found?

Since May 2017, IIAB code has been available at: https://github.com/iiab

Prior to May 2017, XSCE code was available at: https://github.com/xsce/xsce

Release History:

Such older RPM builds from 2013 might be available from http://archive.org and similar, at your own risk, using their original URLs: http://xsce.activitycentral.com/repos/xsce/devel.

Or consider main repo definition: http://xsce.activitycentral.com/repos/xsce-devel.repo

How did IIAB/XSCE's design evolve?

Here's our brief-but-growing participatory design archive / lineage:

  • Our earliest work is based on One Laptop Per Child's original XS design and implementation which arose in January 2007 to be used in many countries, thanks to John Watlington and Daniel Drake.
  • Jerry Vonau greatly cleaned up XS(CE) networking, from approximately 2010 onwards, so that vital new hardware and networking topologies became possible.
  • After the XS Community Edition grassroots team came together during the middle of 2012, using the XSCE name selected by George Hunt, Sridhar Dhanapalan wrote the Design Document in September 2012.
  • Field implementer Tony Anderson expanded on these ideas laying out some Use Cases in October 2012, while many others contributed to a broadening roadmap of features.
  • Internet-in-a-Box (also built by volunteer professional, including Caltech and JPL software engineers) was founded separately by Braddock Gaskill in this same mid-2012 timeframe, in Southern California.
  • David Farning's Activity Central team supported several developers to work on XSCE during the 2013 and 2014 timeframe, including Anish Mangal, Anna Schoolfield and others!
  • German Ruiz at Fundación Zamora Terán expanded support for XSCE in Nicaragua, Columbia, Dominican Republic and Honduras (etc), as the natural successor to OLPC's original XS.
  • The XSCE project embraced the Internet-in-a-Box name and IIAB's underlying OpenStreetMap work increasingly from 2013 onwards, until formally adopting the Internet-in-a-Box name (IIAB) in early 2017.
  • Beginning in 2014, the XSCE project greatly increased its content collaboration with Internet-in-a-Box (hence our new name), with Kiwix.org, and with RACHEL (Remote Area Hotspot for Educational and Learning) -- in each case greatly assisted by Tim Moody.
  • George Hunt and Jerry Vonau made our critical transition to Raspberry Pi (and Ubuntu, and Debian) possible, with foundational OS/infra/networking work in 2016 permitting 2017's breakthrough into so many more communities. Enabling so many grassroots implementations that could never have afforded traditional PC-class servers and associated computer lab facilities/upkeep.

Community history is vital to all seeking to avoid reinventing mistakes of the past, thanks to Everyone's thoughtful input past & present!