IIAB Platforms - georgejhunt/iiab GitHub Wiki

Internet-in-a-Box (IIAB) Platforms

Operating Systems

Read the partition scheme below.

Please install a minimal OS if possible, as IIAB's installer will add the packages you need.

  1. FAQ.IIAB.IO documents Internet-in-a-Box (IIAB) OS trends, among these recommended choices:

    • Raspbian Buster on Raspberry Pi 3, 3 B+ or 4 (WARNING: NOOBS IS NOT SUPPORTED, as its partitioning is very different!)
    • Ubuntu 20.04 LTS (Focal Fossa) on PC (AMD64) or Raspberry Pi (tutorial, install guide, wiki).
      • If you choose to install IIAB using a WiFi connection to the Internet (instead of an Ethernet cable to the Internet) then before you first boot Ubuntu 20.04 on Raspberry Pi, you should: (A) Enter your building's WiFi SSID and password by editing the pre-existing file network-config at the top-level of the microSD card. (B) Boot the Raspberry Pi, log in, and run sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/02-iiab-config.yaml. (C) Finally, your IIAB should contain just these 2 files in /etc/netplan (ideally!) if you choose to abide by recommended norms — if so create/edit them to appear as follows:
        • /etc/netplan/01-iiab-config.yaml should contain the "ethernets:" section:

          network:
            ethernets:
              eth0:
                dhcp4: yes
                optional: true
          
        • /etc/netplan/02-iiab-config.yaml should contain the "wifis:" section — populated with your building's actual WiFi-to-Internet SSID and password:

          network:
            wifis:
              wlan0:
                dhcp4: true
                optional: true
                access-points:
                  ACTUAL-SSID:
                    password: ACTUAL-PASSWORD
          
    • Debian 10 "Buster" LTS on AMD64 (installer, #1387 install tips)
  2. The following OS's are theoretically possible, but may require extensive babysitting to get right:

    • Ubuntu 18.04 LTS on AMD64 (WARNING: IIAB's 1-line installer must be run as root!)
    • Ubuntu Server 19.10.1 for Raspberry Pi released 2019-12-05 (docs, downloads). Stick with the 32-bit version for now, until 64-bit Kiwix support appears (kiwix/kiwix-build#396). Please do not install or enable Sugarizer in /etc/iiab/local_vars.yml as this OS lacks MongoDB.
    • Ubuntu 19.10 Eoan Ermine:
    • Debian "Sid" for developers
    • Ubermix 4.x based on Ubuntu 18.04
      • Create a USB stick (USB drive >= 4GB will suffice initially) to install Ubermix 4.x. Download the latest from http://ubermix.org/files.html and follow the instructions at http://ubermix.org/download.html
      • Read the "Customization Overview" section here: http://ubermix.org/customization.html. This is important information to understand.
      • Use your Ubermix USB install stick to do an ADVANCED install of Ubermix 4.x on your designated computer (turn off UEFI in its BIOS if possible) following the instructions under "Installing on your System" here: http://ubermix.org/download.html
        • You need to shrink the /home partition to make room for content to be stored in /library. Change partition sizes by selecting Option 2 ("Advanced image") to set a larger size for the Default System partition (/dev/ext2) and/or larger size for the User Changes partition (/dev/ext3). You will be prompted to manually enter in partition sizes.
          • e.g. for an 80GB hard drive, consider 12GB (default) for the Default System partition and 50GB for the User Changes partition (IF /library IIAB content will be stored in the User Changes partition, wiped during factory reset reverts). You can adjust the partition sizes as necessary based on your hard drive size and content size needs.
          • e.g. consider reversing this: 50GB for the Default System partition and 12GB for the User Changes partition (IF /library IIAB content will be stored in the Default System partition, to protect it from factory reset reverts)
        • Ubermix will install in ~5 or so minutes.
      • Once Ubermix is installed and you are logged in, confirm the partitions are as you expect by opening up the Terminal and entering "df -h". Proceed if all is as expected.
      • Turn off aufs (UnionFS). Follow steps #2-6 under the "Rebuilding the Base Image" section here: http://ubermix.org/customization.html
      • Congratulations, you are now ready to install IIAB.
      • Install curl, by manually running: sudo apt install curl
      • Run IIAB's 1-line installer: http://d.iiab.io
      • Turn aufs (UnionFS) back on.
      • Consider building a USB stick to install everything at once onto other laptops/desktops, reading "Rebuilding the Base Image" in http://www.ubermix.org/customization.html ("5. Expert Options", then "1. Update the image on the key using this machine as a model")
  3. The following OS's are no longer recommended at this time:

Contact us if you can help, as user-driven testing & co-design are greatly appreciated, strengthening everyone's community product!

Hardware Platforms

Theoretically IIAB should run on any machine that can run Ubuntu, Debian or close derivatives (like Raspbian, Ubermix, etc). CentOS 7 and Fedora are not nearly as well supported, as of February 2019 (#1434).

In practice, IIAB has been tested on the platforms and configurations below. For more detail, see "What hardware should I use?" within FAQ.IIAB.IO

Intel NUC and Gigabyte BRIX

Mini PC's also include MSI and Zotac etc, typically configured with 4 to 8 GB RAM and a 1TB internal hard disk, or 200+ GB SSD. Most models have a minimum of four USB ports and some have an internal Wi-Fi adapter.

  • Install Ubuntu 18.04 LTS, or Debian 10 "Buster"

OLPC XO-1.5, XO-1.75, XO-4

OLPC laptops with an SD card of 32, 64, or 128 GB and a subset of the content found on machines with more storage or with an external hard drive.

  • Only Fedora 18 has been tested, arising from OLPC OS

Raspberry Pi 3, 3 B+ or 4

1 GB RAM or higher, typically with a microSD card of 32, 64, 128 or 256 GB. Four USB ports optionally allow for Ethernet dongles, external Wi-Fi, and possibly additional storage.

  • Use the Raspbian OS (WARNING: NOOBS IS NOT SUPPORTED, as its partitioning is very different!)

(After building your Internet-in-a-Box microSD inside a Raspberry Pi 3 or 3 B+, also consider testing it within the amazing/tiny 512MB Raspberry Pi Zero W, available for as little as $3.14 at Micro Center stores in the USA.)

VirtualBox VM

Virtual machines with varying configurations, especially Ubuntu and Debian, are often used for testing and proofs-of-concept.

Other Recent Intel/AMD Computers

A number of users have successfully deployed IIAB on late model desktop and laptop computers.

Disk Partitioning

Disable UEFI in your computer's BIOS if possible!

It's critical to avoid a large /home partition, so there's room to add content (in /library). Pay close attention while installing your OS (Ubuntu, Debian etc). You should remove (or dramatically shrink) this /home partition, if your Linux distro insists on creating one.

On a 1+ TB disk, we recommend the following 2-to-4 partitions, such as: (traditionally we use standard partitioning, but now increasingly LVM partitioning is also possible)

  • /boot - 500 MB
  • swap - 2 GB (optional partition, set this to your RAM size, or create a swap file if you prefer)
  • / - 50 GB
  • /library - the remainder (optional partition, can protect your content during major upgrades)

On smaller disks and SD cards, also consider:

  1. reducing (or altogether eliminating) the swap partition — see variable pi_swap_file_size in /etc/iiab/local_vars.yml
  2. avoiding a separate partition for /library — far better to keep your content directory (/library) within the main partition!

Network Adapters

Each of the above devices may have one or more network adapters. These may be internal Ethernet, internal or external Wi-Fi, or Ethernet dongles. The role the server is able to play in the network will depend on what adapters and connections it has.

Sample Gateway Configurations

  • WAN on internal Wi-Fi and LAN on internal Ethernet
  • WAN on internal Ethernet and LAN on internal or external Wi-Fi as Access Point
  • WAN on Ethernet dongle and LAN on internal Ethernet with optional bridged internal/external Wi-Fi as Access Point

Sample Appliance Configurations

  • Internal Wi-Fi connected to an existing LAN
  • Internal Ethernet connected to an existing LAN
  • Ethernet dongle connected to an existing LAN