This document is a step-by-step guide on how to install and get to know Internet-in-a-Box (IIAB) software. We encourage all potential contributors to use this guide to try out IIAB!
IIAB (video introduction) runs on various GNU/Linux operating systems such as Raspberry Pi OS, Ubuntu, Debian, Linux Mint — and possibly also other Linux distros if you invest the effort!
You can install IIAB on Raspberry Pi 3, 3 B+, 4, 400 or an x86_64 PC/laptop. Running IIAB on the $10 Raspberry Pi Zero W or the $15 Raspberry Pi Zero 2 W is also possible, if you insert a working IIAB microSD card.
Also consider installing IIAB on an x86_64 VM (Virtual Machine), e.g. for testing purposes. On PC-like hardware especially (x86_64) note the hardware section of our FAQ for memory, storage, and network requirements.
Please avoid Docker, as our Ansible provisioning requires low-level access to the operating system.
In all cases, check out FAQ.IIAB.IO and the HOW-TO videos on Internet-in-a-Box’s YouTube channel. Also consider our upcoming milestones on GitHub.
To begin, most people should use IIAB’s 1-line installer to get the very latest, from: https://download.iiab.io
Or if you’re impatient, have a Raspberry Pi handy, and don’t mind older software, install an IIAB image direct to a microSD card (that is immediately insertable into almost any Raspberry Pi).
Conversely if you’re a traditionalist, you can install IIAB step-by-step from scratch.
Regardless: after IIAB software is installed, please be patient when downloading content over a slow Internet connection, which can sometimes take many hours indeed!
To help new contributors get started with IIAB, we provide 3 example install paths below.
(If necessary, other platforms are also possible.)
ssh pi@192.168.0.x
). Then run these commands:
ping mit.edu
curl iiab.io/install.txt | bash
sudo iiab
several times, until it completes. It might take 15 minutes, or it might take an hour or more, depending on CPU/bandwidth/disk and how you configured /etc/iiab/local_vars.ymlsudo reboot
http://box.lan
). Explore and install content onto your IIAB!ping mit.edu
curl iiab.io/install.txt | bash
sudo iiab
several times, until it completes. It might take 15 minutes, or it might take an hour or more, depending on CPU/bandwidth/disk and how you configured /etc/iiab/local_vars.ymlsudo reboot
http://box.lan
). Explore and install content onto your IIAB!softwareupdate --install-rosetta
at the macOS Terminal command-line. Then run Raspberry Pi Imager, as outlined in IIAB Docs. See raspberrypi/rpi-imager#235 for more details.snap install lxd
then multipass set local.driver=lxd
then multipass launch -n primary -c 2 -m 5G -d 25G --network enp1s0
then multipass shell
as outlined at canonical/multipass#2537. You can immediately now run the commands in Step 4. below!ping mit.edu
curl iiab.io/install.txt | bash
sudo iiab
several times, until it completes. It might take 15 minutes, or it might take an hour or more, depending on CPU/bandwidth/disk and how you configured /etc/iiab/local_vars.ymlsudo reboot
http://box.lan
). Explore and install content onto your IIAB!IIAB uses Ansible to install and configure all software packages. Ansible uses playbooks (let’s call them roles from here onwards) as human-readable instruction files, in the YAML format. An example IIAB role is 1-prep
(Stage 1) here:
├── roles
│ ├── 1-prep
│ │ ├── defaults
│ │ │ └── main.yml (role variables, can also be defined in /opt/iiab/iiab/vars/default_vars.yml, and overridden by /etc/iiab/local_vars.yml)
│ │ ├── README.adoc
│ │ ├── tasks
│ │ │ ├── main.yml (actions [Ansible modules] that install this role)
│ │ │ └── ...
│ │ └── templates
│ │ ├── iiab.env.j2 (or any text file, that uses Jinja2 templating e.g. {% <variable> %}, to substitute in Ansible variable values)
│ │ └── ...
│ ├── 2-common
│ │ ├── README.adoc
│ │ ├── tasks
│ │ └── templates
Specifically, Ansible installs IIAB starting with 0-init, followed by Stages 1 to 9, and finally runs the network role:
Click on Stages 1 to 9 above for descriptions of their specific purposes.
In summary, Ansible gathers system info (using Ansible facts) to set Ansible variables, which guide IIAB’s software installation process. Execution follows a sequence of cascading steps:
The bash script ./iiab-install (in /opt/iiab/iiab) uses Ansible to run /opt/iiab/iiab/iiab-stages.yml
iiab-stages.yml
calls 9+ stages (these are the numbered directories above, in /opt/iiab/iiab/roles) and then the network role. It avoids repeating any of these 9 core install stages (in case of Internet glitches etc) by keeping a counter (“STAGE”) in /etc/iiab/iiab.env
(Aside: the network role can also later be run using ./iiab-network)
Each stage has a <role>/tasks/main.yml
to invoke all needed roles and tasks.
Please refer to the IIAB Architecture and IIAB Variables pages for more detail.
Please also review “What is Ansible and what version should I use?” at FAQ.IIAB.IO
For details on how IIAB installs the very latest Ansible, see: /opt/iiab/iiab/scripts/iiab
Live collaboration with developing countries over low-bandwidth connections is possible!
Everyone will be able to type simultaneously in the same Linux Terminal (command-line interface).
Instructions:
sudo wall "Hi everyone! Remember to log in as username iiab-admin"
sudo apt install screen
screen -ls
to see if somebody else has already started a screen session:
screen -x
to join a pre-existing screen session.screen
to start a screen session for everyone.echo "defshell -bash" >> ~/.screenrc
exit
Please post bug reports and feature requests to GitHub here:
https://github.com/iiab/iiab/issues (click New issue)
Contributions, field reports, and feature requests are welcome!
Please also see “How can I help?” at FAQ.IIAB.IO and consider contacting us directly, Thanks!
Give a ⭐️ if you like this project!
Profound thanks to Arky who inspired and wrote the original IIAB Contributors Guide in 2017.