今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

iiab/iiab

インターネットなしで世界の無料知識にアクセスできるオフラインデジタルライブラリサーバー

ラズベリーパイに iiab を入れるだけで、インターネットが届かない教室や刑務所、診療所にウィキペディアやカーンアカデミーの教材が丸ごと届きます。ドラッグアンドドロップの Admin Console でコンテンツやアプリを選び、メッシュネットワークで隣の拠点と知識を分け合う、その一連の流れを今日試せます。Ansible ロールやCI/CDパイプラインまで揃った実働コードなので、README の説明どおりに動くかを自分の手で確かめられます。

01 / 概要
何をするものか一文で言うと
ひとことでインターネットなしで世界の無料知識にアクセスできるオフラインデジタルライブラリサーバー

Internet-in-a-Box(IIAB)は、インターネットにアクセスできない学校・診療所・刑務所・地域向けに、Wikipediaやカーンアカデミー動画、OpenStreetMap、電子書籍などの知識コンテンツをRaspberry Piなどの小型サーバーに詰め込んで配布するプロジェクトです。Ansibleを使って30種類以上の教育アプリやLMSをインストールし、近くのスマートフォンやノートPCからWi-Fi経由でオフライン図書館として利用できるようにします。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

中核はAnsibleです。iiab-install(実体はansible.cfgとiiab-stages.ymlに基づく実行)が各roles配下のタスクを順に適用し、nginx・MySQL・Kiwix・Kolibri・MediaWikiなど個々のサービスを設定します。roles/以下には有効なロールと、0-DEPRECATED-ROLESに退役済みロール(ajenti、kalite、moodle-1.9など)が分かれて置かれており、defaults/main.ymlで有効・無効フラグを持ちます。インストール完了後は/etc/iiab/iiab_state.ymlに各サービスのインストール状態が記録され、iiab-summaryコマンドで確認できます。CIでは.github/workflows配下に複数のGitHub Actionsが用意されており、Ubuntu環境で実際にiiab-installを走らせ、expected_state_*.ymlとの差分(diffコマンド)で正しくインストールされたかを検証しています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    download.iiab.ioの1行インストーラーをRaspberry Piまたはubuntu系サーバーで実行すると、まずscripts/ansibleが動きAnsible本体がセットアップされます。

  2. STEP 02

    続いてiiab-installが走り、roles配下の各コンポーネント(nginx、MySQL、Kiwixなど)が順次インストールされ、環境によっては1時間前後かかります。

  3. STEP 03

    インストール完了後、iiab-summaryコマンドを打つと/etc/iiab/iiab_state.ymlの内容が要約表示され、どのサービスがTrueになったか確認できます。

  4. STEP 04

    ブラウザでhttp://boxまたはhttp://box.lanにアクセスすると、IIABのホームページとhttp://box.lan/adminの管理コンソールが現れます。

  5. STEP 05

    管理コンソールからコンテンツパック(Wikipediaやカーンアカデミーなど)をダウンロードしてドラッグ&ドロップで配置する作業が必要で、これは数GB単位のダウンロードになるため別途時間がかかります。

  6. STEP 06

    GitHub上のCIログ(例えば07min-unittest-on-ubuntu.yml)を見ると、実際にiiab-installを走らせてexpected_state_unittest.ymlとの差分をdiffで検証している様子が確認でき、動作実績の裏付けになります。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実行すると、Raspberry Piやサーバー上に完結したオフライン学習ポータルが立ち上がり、box.lanという名前でWi-Fiホットスポット兼Webサーバーとして機能します。管理コンソールからWikipedia・Kolibri・Kiwix・MediaWiki・Nextcloud・Moodleなど選んだアプリやコンテンツパックにアクセスできるようになり、インターネット接続がない環境でも図書館的な知識基盤が手に入ります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

roles/0-DEPRECATED-ROLES配下にはajenti、kalite、moodle-1.9など多数の退役ロールが残っており、現行のインストールフローでは使われないため、コードを読む際は混同しないよう注意が必要です。

02

expected_state_large.yml等のテストファイルには「IIAB does NOT currently support uninstalling apps/services」と明記されており、一度入れたアプリは後から個別に削除できない設計です。

03

コンテンツパック(Wikipediaや動画教材など)は数GB〜数十GBに及ぶため、実際に使えるようにするにはインストール後も別途長時間のダウンロード作業が必要です。

04

CIはUbuntuやRaspberry Pi OS向けの複数ワークフローで検証されていますが、一部のワークフロー(40min-none-on-rpios-lite-zero2w.yml.pausedなど)は.pausedとなっており現在無効化されています。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

学校・診療所・地域コミュニティなど、インターネットが不安定または存在しない場所で「持ち運べる図書館サーバー」を作りたい人に向いています。README・roles構成・CIのexpected_state検証ファイルから、Ansibleベースの実際に動くインストールフローであることが確認でき、GitHub Actions上で本物のiiab-installを実行し状態ファイルをdiffで照合している点は信頼性の裏付けとして十分です。ただし退役ロールの混在やコンテンツパックの別途ダウンロードが必要な点は、実際に手元で動かす前に把握しておくべき実務上の留意点です。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する