๐ŸŒฑ OpenNSIS

The Open National Soil Information System โ€” open-source infrastructure for a country's soil data: maps, profiles, metadata and federation, deployed with one command.

OpenNSIS map view: soil property rasters, clustered soil profiles and a layer panel

One system, the whole soil-data workflow

Each OpenNSIS instance hosts the soil data of one country or organisation โ€” from field CSVs to published maps and federated metadata.

๐Ÿ—บ๏ธ

Web mapping

A public OpenLayers viewer for soil property rasters (Cloud-Optimised GeoTIFFs via MapServer WMS), soil profiles with their observations, and administrative boundary layers.

๐Ÿ“ฅ

Soil-profile ETL

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.

๐Ÿงฎ

Raster calculator

Build suitability maps from published rasters with threshold-based recipes โ€” edit, run and publish the result like any other layer.

๐Ÿ“š

Metadata catalogue

Every published map is catalogued automatically as ISO 19115/19139 metadata, served by pyCSW โ€” harvestable by any standard catalogue.

๐ŸŒ

GloSIS federation

Purpose-built endpoints connect the instance to the Global Soil Information System federation โ€” profiles and observations shared on the country's own terms.

๐Ÿ”’

Data sharing controls

Per-project switches for what leaves the server: full attributes or locations only, spatial blurring in metres, public profile limits and download visibility.

๐Ÿ—‚๏ธ

Administrative divisions

Country boundary layers from GeoJSON, zipped Shapefile or GeoPackage โ€” reprojected to WGS 84 automatically and styled from the admin panel.

๐Ÿˆฏ

Six languages

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.

๐Ÿ”„

Self-service updates

The admin panel shows the installed version and what's new upstream; one server-side command applies the update and keeps all data.

A boring, proven stack

Standard open-source components, wired together with Docker Compose โ€” no exotic dependencies, nothing to license.

OpenLayers FastAPI PostgreSQL + PostGIS MapServer pyCSW GDAL nginx Caddy (optional HTTPS) Docker Compose
EnglishEspaรฑol FranรงaisPortuguรชs ะ ัƒััะบะธะนไธญๆ–‡

Quick start

One country per server. On a fresh Ubuntu box, as root or a sudo-capable user:

On the server itself

# 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

Or driven from your laptop

# 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.

In use

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.

How to contribute

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.

Ideaโ†’ GitHub issueโ†’ Discussion & prioritisationโ†’ Developmentโ†’ Reviewโ†’ Integrationโ†’ Documentationโ†’ Dissemination
1

Idea

A need, a fix or a new capability โ€” from anyone using or running an OpenNSIS instance.

2

GitHub issue

Write it down as an issue โ€” bug report, feature request or discussion โ€” so it is visible and searchable.

3

Discussion & prioritisation

The community weighs in on the issue, agrees on the scope and decides how it fits the roadmap.

4

Development

A contributor implements the change on a branch and opens a pull request.

5

Review

Maintainers and peers review the pull request, test it and request any adjustments.

6

Integration

Once approved, the change is merged into the main branch.

7

Documentation

The README, the docs site and in-app help are updated so others can use and maintain it.

8

Dissemination

The improvement reaches users through releases and updates, and FAO SoilFER workshops.