Build your own offline Wikipedia and maps hotspot on a Raspberry Pi
The whole build in plain steps: the parts, the downloads, the Wi-Fi hotspot and the offline map, with the exact commands and seven things that broke when we built ours.
November 14, 2026 · 6 min read · by the Offgrid Brainbox team
You can build an offline library yourself: a Raspberry Pi that makes its own Wi-Fi network and serves Wikipedia and a street map to every phone in the house. The parts cost about $318 today and the software is free. It takes a few evenings.
We sell a finished one, and we are publishing the build anyway. If you enjoy this kind of project, you should do it. If you get to step four and decide you would rather not, you will know exactly what you are paying us for.
One note on what we have and have not done ourselves. We run this software every day on a Linux server with all outside network access blocked, and everything in "what broke" below happened to us. Our own tests on the Raspberry Pi hardware (the hotspot on real phones, start-up time, how many readers at once) are in progress, so this page gives you the standard steps for the Pi and no performance numbers.
1. The parts
| Part | Notes |
|---|---|
| Raspberry Pi 5, 4 GB | The Pi 5 has the connector an NVMe drive needs. |
| NVMe SSD, 500 GB or 1 TB | Check the length: most cheap drives are the 2280 size. |
| Case or board with an NVMe slot that fits your drive | Raspberry Pi's own M.2 HAT+ fits 2230 and 2242 drives only. |
| Raspberry Pi 27 W USB-C power supply | Do not substitute a phone charger. |
| A USB-to-NVMe adapter | Only for the first setup, to write the system to the drive. |
Today's prices for each part are in the parts list.
2. Put the system on the drive
Use the free Raspberry Pi Imager on your computer. Choose Raspberry Pi OS Lite (64-bit), pick the NVMe drive in its USB adapter, and in the settings give the Pi a name, a user and a password, and turn on SSH. Write it, fit the drive in the case, and power on with no memory card in the slot. Current Raspberry Pi 5 firmware starts from the NVMe drive when there is no card.
Connect the Pi to your router with a cable for the setup. You need the internet now so that you never need it later.
3. Download the library and check it
Make a folder and fetch the reader software for 64-bit ARM:
sudo mkdir -p /srv/library && sudo chown $USER /srv/library && cd /srv/library
wget https://download.kiwix.org/release/kiwix-tools/kiwix-tools_linux-aarch64-3.8.2.tar.gz
tar xzf kiwix-tools_linux-aarch64-3.8.2.tar.gz
Then the encyclopedia. The -c matters: it lets the download continue after a stall instead of starting again.
wget -c https://download.kiwix.org/zim/wikipedia/wikipedia_en_all_nopic_2026-06.zim
wget -c https://download.kiwix.org/zim/wikipedia/wikipedia_es_all_nopic_2026-10.zim
English is 49.1 GB and Spanish is 12.4 GB. Every edition and its size is here. Newer files replace these over time, so look in the directory for the current names.
Now check each file against the checksum Kiwix publishes beside it:
wget https://download.kiwix.org/zim/wikipedia/wikipedia_en_all_nopic_2026-06.zim.sha256
sha256sum -c wikipedia_en_all_nopic_2026-06.zim.sha256
It should answer OK. Do not skip this. A damaged 49 GB file can open, look fine, and fail on the one article you need.
4. Serve it
./kiwix-tools_linux-aarch64-3.8.2/kiwix-serve --port 8080 /srv/library/*.zim
From another computer on your network, open http://<the Pi's address>:8080. You should see both encyclopedias and a search box.
To have it start by itself every time the Pi powers on, save this as /etc/systemd/system/library.service:
[Unit]
Description=Offline library
After=network.target
[Service]
ExecStart=/bin/sh -c '/srv/library/kiwix-tools_linux-aarch64-3.8.2/kiwix-serve --port 8080 /srv/library/*.zim'
Restart=always
User=nobody
[Install]
WantedBy=multi-user.target
Then run sudo systemctl enable --now library.
5. Make the Wi-Fi hotspot
Tell the Pi which country it is in, so the radio is allowed to transmit, then create the network:
sudo raspi-config nonint do_wifi_country US
sudo nmcli device wifi hotspot ifname wlan0 ssid HomeLibrary password "choose-a-long-passphrase"
sudo nmcli connection modify Hotspot connection.autoconnect yes
Unplug the network cable. On a phone, join HomeLibrary and open http://10.42.0.1:8080. The phone will warn that this network has no internet. That is the point. Some phones then quietly switch back to mobile data, so tell the phone to stay connected when it asks.
That is a working offline encyclopedia for the whole house. Most people can stop here.
6. Add an offline map
This is the hard part, and it is a separate project.
The map data comes from OpenStreetMap, packaged by Protomaps as one very large world file. You do not download the world. The free pmtiles tool cuts out just your region, straight from the server:
pmtiles extract https://build.protomaps.com/<BUILD>.pmtiles dfw.pmtiles \
--bbox=-97.62,32.48,-96.46,33.3 --maxzoom=15
Replace <BUILD> with a current build date from the Protomaps downloads page. The four numbers are the west, south, east and north edges of the area. Zoom 15 is street level.
Sizes we measured, so you can plan:
| Area | Detail | Size |
|---|---|---|
| Dallas–Fort Worth | Street level (zoom 15) | 146 MB |
| All of Texas | Roads and towns (zoom 12) | 113 MB |
| The whole world | Overview (zoom 6) | 43 MB |
| Lower 48 states | Street level (zoom 15) | about 19 GB |
A map file alone shows nothing. You also need a web page that draws it (MapLibre is the usual choice), a web server that can send parts of a file on request, and local copies of the map's fonts and icons. Protomaps publishes the fonts and icons in its basemaps-assets repository. Leave them out and your offline map has roads and no names.
OpenStreetMap's license asks for one thing you must not forget: the words "© OpenStreetMap contributors" on the map.
7. What broke when we built ours
Every one of these happened to us, and each cost an evening.
- A download mirror went silent for more than a minute and a half. Our job runner decided the download had died and tried to start it again while it was still running. Big downloads need patience built in, and one downloader at a time.
- One bad answer from the map server ruined a whole extract. A single "502" error in the middle of cutting a map made the tool give up. It needs to retry.
- The fonts-and-icons archive contained symbolic links. Our unpacker refuses those for safety, so the build stopped. We now unpack only the files we chose.
- The search count came back as "3,106", with a comma. Our code expected a number and choked. If you script against kiwix-serve, expect formatted text.
- A Spanish search missed the English article. "Monóxido de carbono" and "carbon monoxide" are the same question in a two-language house. We had to add a glossary so one search asks both.
- The "find my location" button cannot work. Browsers only share location with secure (https) sites, and a box on your own Wi-Fi is plain http. Offer a pin, coordinates and place search instead.
- There is no kiwix-serve for Windows in this release. If you want the same library on a Windows laptop, the encyclopedia has to open in the Kiwix desktop app.
What you have at the end
A box that makes its own Wi-Fi and serves two complete encyclopedias, and a map if you did step six. What it does not have yet is one search across everything, a check that every file is intact each time it starts, a safe way to update, or anyone to ask when it stops working. Those are the parts we spent our time on.
Questions people ask
Can a Raspberry Pi serve offline Wikipedia over Wi-Fi?
Yes. The Raspberry Pi runs a small program called kiwix-serve that turns an offline Wikipedia file into a website on its own Wi-Fi network. Phones and laptops join that network and read it in a normal browser, with no internet involved.
What software do I need for offline Wikipedia on a Raspberry Pi?
Raspberry Pi OS Lite (64-bit), the free kiwix-tools package for 64-bit ARM, and one or more ZIM files from the Kiwix download site. The Wi-Fi hotspot uses NetworkManager, which is already part of Raspberry Pi OS.
How do I get offline maps on a Raspberry Pi?
Cut the region you want out of a Protomaps world map with the free pmtiles tool, then show it in a web page with MapLibre. The map file for Dallas–Fort Worth at street level is about 146 MB and the lower 48 states come to about 19 GB.
How long does the build take?
Plan on a few evenings. The assembly takes minutes. The time goes into the downloads (61.5 GB for English and Spanish Wikipedia), the hotspot setup, and the map page, which is the hardest part.
Sources, read on November 14, 2026
Rather not build it?
We build it, check it and sign it. You plug it in.