The Open National Soil Information System โ open-source infrastructure for a country's soil data: maps, profiles, metadata and federation, deployed with one command.
Each OpenNSIS instance hosts the soil data of one country or organisation โ from field CSVs to published maps and federated metadata.
A public OpenLayers viewer for soil property rasters (Cloud-Optimised GeoTIFFs via MapServer WMS), soil profiles with their observations, and administrative boundary layers.
Upload field CSVs, map columns to the standard model, validate against rules and country bounds, then ingest โ with a full validation report and one-click prune.
Build suitability maps from published rasters with threshold-based recipes โ edit, run and publish the result like any other layer.
Every published map is catalogued automatically as ISO 19115/19139 metadata, served by pyCSW โ harvestable by any standard catalogue.
Purpose-built endpoints connect the instance to the Global Soil Information System federation โ profiles and observations shared on the country's own terms.
Per-project switches for what leaves the server: full attributes or locations only, spatial blurring in metres, public profile limits and download visibility.
Country boundary layers from GeoJSON, zipped Shapefile or GeoPackage โ reprojected to WGS 84 automatically and styled from the admin panel.
The interface ships in English, Spanish, French, Portuguese, Russian and Chinese โ per-instance default plus a per-visitor switch. Adding a language is one JSON file.
The admin panel shows the installed version and what's new upstream; one server-side command applies the update and keeps all data.
Standard open-source components, wired together with Docker Compose โ no exotic dependencies, nothing to license.
One country per server. On a fresh Ubuntu box, as root or a sudo-capable user:
# installs Docker, opens the firewall, clones and deploys
curl -fsSL https://raw.githubusercontent.com/un-fao/OpenNSIS/main/ops/single/host-install.sh \
| sudo bash -s -- NP
# same steps over SSH
git clone https://github.com/un-fao/OpenNSIS.git
cd OpenNSIS
ops/single/first-deploy.sh root@SERVER_IP NP
Replace NP with your ISO 3166-1 alpha-2 country
code. Optional environment knobs: LANGUAGE=es for the default
interface language and DOMAIN=soil.example.org for automatic
HTTPS with Let's Encrypt. The admin password is printed once at the end โ
save it.
OpenNSIS runs as national soil information systems installed on countries' own infrastructure, and as the training environment for FAO SoilFER workshops across Asia and Latin America โ each country working on an isolated instance of the same software.
Every improvement to OpenNSIS โ a fix, a new feature or an open question โ follows the same path, with GitHub as the single point of coordination: ideas, discussion, code and releases all live in one place.
A need, a fix or a new capability โ from anyone using or running an OpenNSIS instance.
Write it down as an issue โ bug report, feature request or discussion โ so it is visible and searchable.
The community weighs in on the issue, agrees on the scope and decides how it fits the roadmap.
A contributor implements the change on a branch and opens a pull request.
Maintainers and peers review the pull request, test it and request any adjustments.
Once approved, the change is merged into the main branch.
The README, the docs site and in-app help are updated so others can use and maintain it.
The improvement reaches users through releases and updates, and FAO SoilFER workshops.