Homepage
Project NOMAD home page

Project N.O.M.A.D. (Node for Offline Media, Archives, and Data) is a free, open-source server that puts encyclopaedic knowledge, local AI, offline maps and educational tools on a single machine. It runs from a set of Docker containers, managed through one web interface on port 8080.

Kiwix serves offline copies of Wikipedia, medical references and ebooks, ProtoMaps provides downloadable regional maps, and Ollama runs a local AI chat with document upload and semantic search.

I have tried offline copies of Wikipedia in the past, but Project NOMAD makes this easier to manage, with everything available in one place and self-contained on a low-power computer.

Being able to access articles and reference material offline is very useful if your internet connection is down, if you are somewhere with no mobile signal such as a campervan, or during a power outage when the computer can be run from batteries.

It is also a good use for an older PC that would otherwise be heading for recycling, although the AI features do benefit from more RAM and a decent GPU.

The one thing the standard install doesn't give you is a way to reach the server when there is no network at all. In this post I'll go through installing Debian 13 on an older computer, configuring its Wi-Fi card as a standalone access point with DHCP and local DNS, and then installing Project NOMAD, so any phone, tablet or laptop in range can connect directly and browse the library.

The hardware

Back in 2017 I purchased a Gigabit Internet Gateway Network PC to use as my network's Linux server. It was later replaced with a faster system with more storage and has been unused for some time.

It is a low-specification computer, well below what Project NOMAD recommends:

  This PC Project NOMAD recommended
Processor Intel Pentium N3710 AMD Ryzen 7 with Radeon graphics, or Intel i7+
Memory 8 GB RAM 32 GB RAM
Graphics Integrated Intel graphics Integrated AMD Radeon 780M+, or dedicated NVIDIA GPU
Storage 32 GB onboard eMMC and a 480 GB SSD 1 TB SSD
Operating system Debian 13.7 (headless) Ubuntu Desktop 26.04 LTS

The PC also has two Gigabit Ethernet ports (Realtek RTL8111HS) and a built-in Wi-Fi module.

As the N3710 is much slower than the recommended processors, I skipped the AI modules and installed Debian 13.7 in headless mode, without the GUI packages, as they are not required and use extra memory. I have tried Ubuntu Desktop 26.04 LTS on this hardware in the past and had a lot of issues due to the limited memory and CPU performance.

Installing Debian

I downloaded the Debian ISO from https://www.debian.org/distrib/ and used Raspberry Pi Imager to write it to a USB drive, which was then connected to the PC.

The BIOS was set to boot from USB and the operating system was installed to the SSD using the text-based installer. I deselected the desktop packages and selected the SSH server to allow remote access over the network for configuration.

Note: a minimal Debian install does not include curl, and if you set a root password during installation sudo is not installed either. Both are needed for the steps below, so log in as root and install them first, replacing yourusername with your own:

apt install sudo curl
usermod -aG sudo yourusername

Log out and back in for the group change to take effect.

Setting up the Wi-Fi access point

I wanted to be able to run this offline and have the PC act as a Wi-Fi access point using the built-in Wi-Fi adapter. The adapter shows as wlp2s0 on my computer but may be different on other systems.

The simplest way to do this on Debian 13 is NetworkManager's "shared" mode, which runs the access point and a small DHCP/DNS server (dnsmasq) for you. The PC needs to be connected to the internet by Ethernet for these steps.

1. Check the card supports AP mode

sudo apt install iw network-manager dnsmasq-base
sudo iw list | grep -A 10 "Supported interface modes"

You need to see * AP in that list. If it's missing, the card can't do this and you will need a cheap USB Wi-Fi dongle that supports AP mode.

2. Make sure that NetworkManager controls the card

nmcli device status

You need to see * AP in that list. If it's missing, the card can't do this and you will need a cheap USB Wi-Fi dongle that supports AP mode.

3. Create the wireless access point

Replace yoursecurepassword with the password you want to use for your connection. WPA2 passwords must be between 8 and 63 characters, or the command will fail. You can also set your own SSID by replacing NOMAD in the command below:

sudo nmcli con add type wifi ifname wlp2s0 con-name nomad-ap autoconnect yes ssid NOMAD 802-11-wireless.mode ap 802-11-wireless.band bg 802-11-wireless.channel 6 ipv4.method shared ipv4.addresses 10.42.0.1/24 ipv6.method disabled wifi-sec.key-mgmt wpa-psk wifi-sec.proto rsn wifi-sec.pairwise ccmp wifi-sec.psk "yoursecurepassword"

sudo nmcli con up nomad-ap

The access point will now come up on every boot. Clients get an address in the 10.42.0.x range, and the server is at http://10.42.0.1:8080.

4. Optional: a friendly name instead of the IP address

echo "address=/nomad.lan/10.42.0.1" | sudo tee /etc/NetworkManager/dnsmasq-shared.d/nomad.conf
sudo nmcli con down nomad-ap && sudo nmcli con up nomad-ap

Then http://nomad.lan:8080 works from any connected device.

Things to be aware of

  • No built-in login. Project NOMAD has no authentication of its own, so anyone connected to the access point can reach the settings pages. The Wi-Fi password is the only protection, so choose a strong one.
  • "No internet" warnings. Phones and tablets will warn that the network has no internet access and may switch back to mobile data. Choose the option to stay connected.
  • Shared mode also shares the wired connection. If the Ethernet cable is plugged in, devices on the access point will get internet access through the PC.

Installing Project NOMAD

Downloading content
Downloading different packages

With the operating system installed and networking configured, I followed the instructions at https://www.projectnomad.us/install to install the Project NOMAD software. The official guide is written for Ubuntu, but the install script ran without problems on Debian 13.

I could then open the web interface from a browser on my desktop computer over the wired network connection.

Choosing the content

Once Project NOMAD was installed, I used the Easy Setup button to add the following content packs, which took several hours to download and install.

Content pack What it includes Download size
Complete English Wikipedia Every article, with all images and media 121 GB
Medicine - Comprehensive Professional-level medical references, textbooks, guides and encyclopaedias 7 GB
Survival & Preparedness - Comprehensive Emergency preparedness, post-disaster recovery, growing and storing food, and off-grid technical references 14.5 GB
Education & Reference - Comprehensive Encyclopaedias, textbooks, tutorials, educational videos and TED talks 46.4 GB
DIY & Repair - Comprehensive Repair guides, home improvement, woodworking and vehicle maintenance 5.6 GB
Agriculture & Food - Comprehensive Gardening, cooking techniques, food preservation and homesteading videos 9.2 GB
Computing & Technology - Comprehensive Programming documentation, Arduino and Raspberry Pi projects, and electronics references 4.5 GB

These content packs total about 208 GB. With Debian on the same drive, around 212 GB of the 480 GB SSD is in use.

You can now connect to your new Project NOMAD server from any device with Wi-Fi and a web browser.

The Information Library section shows a long page listing all the installed content.

System benchmark

This was expected given the performance of the Intel Pentium N3710 and the limited RAM and storage. I don't plan to run the AI modules or serve other forms of media from this computer, so the limited performance shouldn't be an issue in use.

Installed Packages
Installed Packages
Benchmark
Benchmark Results

Overall, Project NOMAD was very easy to set up and the offline content was simple to install. It should prove a valuable resource if it is ever needed.

The only remaining task is to make a battery-powered 19 V power supply so the computer can run completely off-grid. Please post any power supply suggestions in the comments below.

Categories: Programming and Code