Skip to content
getgeolens.com

Quickstart

GeoLens deploys with one Docker Compose command. This guide takes you from a fresh checkout to a running UI in about 10 minutes.

  • Docker Engine 24+ and Docker Compose v2 — verify with docker compose --version
  • Three free host ports (default: 8080, 8001, 5434)
Terminal window
git clone https://github.com/geolens-io/geolens.git
cd geolens
bash scripts/install.sh

bash scripts/install.sh copies .env.example to .env, generates a strong JWT_SECRET_KEY (via openssl rand -hex 32) and POSTGRES_PASSWORD, prompts for an admin username (default admin) and password — pressing Enter at the password prompt generates a strong random password rather than reusing a default — and runs docker compose up -d. Retrieve a generated admin password with grep '^GEOLENS_ADMIN_PASSWORD=' .env. Release-tag installs pull prebuilt images and come up in a couple of minutes; branch or dev installs build from source and take longer. Either way, scripts/install.sh blocks until every service reports healthy, then prints “GeoLens is ready.” so you never have to guess when the stack is up. Re-running the script is idempotent — existing .env values are preserved.

For the full list of configuration options, see Configuration.

Terminal window
docker compose ps

Confirm db, api, worker, titiler, and frontend show as running / healthy before logging in.

Open http://localhost:8080. Log in with the admin username (default admin) and the password you chose during install — or, if the installer generated one, retrieve it with grep '^GEOLENS_ADMIN_PASSWORD=' .env.

After logging in, follow the admin password rotation guide to rotate or replace the bootstrap admin account.

The login page proves you’ve reached the frontend at http://localhost:8080. Look for the centered username/password card with the GeoLens reticle logo at the top. After login, a fresh local install shows an empty catalog — that is expected. Use the seeder scripts in the next section to populate it.

GeoLens login page at localhost:8080 — a centered username and password card beside the GeoLens reticle logo and Save searches, Build maps, and Import data highlights

After login, your catalog is empty. The fastest way to populate it is the bundled scripts/seed-showcase.py script, which builds three capability-showcase maps from public, openly-licensed data by writing into a running GeoLens instance via its API — no separate stack, no separate compose file.

Showcase mapWhat it demonstratesSource
Manhattan Skyline3D fill-extrusion by real building height with graduated colorNYC Open Data Building Footprints
New York Incomedata-driven quantile choropleth across all 62 NY countiesUSDA ERS Atlas of Rural & Small-Town America
The Matterhorn3D terrain mesh + hillshade from a VRT mosaic of COG tiles (--with-terrain)swisstopo swissALTI3D 2m lidar

The seeder is a Python script that talks to the running GeoLens via its API. You’ll need:

  • Python 3.10 or newer on your host machine (check with python --version)
  • httpx — install with pip install httpx

The seeder runs on your host, not inside the docker network. It targets http://localhost:8080 by default; pass --base-url <url> to point at a different deployment.

Terminal window
pip install httpx
python scripts/seed-showcase.py --username admin --password "$GEOLENS_ADMIN_PASSWORD"

The script authenticates with your admin username (default admin) and password — pass the password you set or that the installer generated via --password (or set GEOLENS_ADMIN_PASSWORD in your environment). It then builds the Manhattan and New York Income maps. Add --with-terrain to also build the Matterhorn 3D terrain hero (this downloads ~9 COG tiles):

Terminal window
python scripts/seed-showcase.py --with-terrain --username admin --password "$GEOLENS_ADMIN_PASSWORD"

Use --only manhattan, --only income, or --only matterhorn to build just one showcase map.

Once the seeder finishes, reload http://localhost:8080 — the catalog is now populated and searchable, with type, keyword, and spatial filters down the left rail. The showcase maps include the Matterhorn layers built by --with-terrain — climbing routes, peaks, and the swissALTI3D virtual raster:

Populated GeoLens catalog after running the showcase seeder — dataset cards for the Matterhorn climbing routes, peaks, and the swissALTI3D virtual raster, with vector and raster type badges and a faceted filter sidebar

Select any dataset card to open its detail page — metadata, schema, and a live map preview of the data’s extent. Here is the Manhattan Building Heights dataset from the Manhattan Skyline showcase map:

GeoLens dataset detail page for the Manhattan Building Heights showcase dataset, showing badges, feature and CRS metadata, and an interactive map preview of the dataset extent

The default docker compose up -d brings up five services. The diagram below shows how they connect; profile-gated services (backup, MinIO, Valkey) appear only when you opt into them via --profile <name>.

Optional profiles

Default (docker compose up -d)

Frontend

:8080

API

:8001

Worker

Titiler

PostgreSQL 17

+ PostGIS 3.5

Backup sidecar

--profile backup

MinIO

--profile cloud-dev

Valkey cache

--profile cloud-dev

  • Going to production? See the Install Guide for full prerequisites, Docker Compose profiles, and troubleshooting.
  • Configuring users and roles? See the Admin Guide for RBAC, OAuth/OIDC, and backup automation.
  • Building integrations? See the API Reference for OGC endpoints, authentication, and curl examples.