selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GeoLens logo

Self-host GeoLens

v1.27.1

Self-hosted geospatial catalog with semantic search

ReleaseOpen SourceApache-2.0
Updated14 hours ago
LanguagePython
Setup difficultyModerate
MobileResponsive
Stars
282
RAM
8 GB
Ports
8080 (Frontend UI), 8001 (API), 5434 (PostgreSQL)
Install with Docker Compose
GeoLens map builder rendering Manhattan's buildings extruded to true height and colored by construction eraGeoLens catalog search page showing semantic search results for 'tallest peaks in Europe' with filter sidebarGeoLens map builder with Analysis panel open showing a Buffer operation on storm-track layerGeoLens Import Data page with tabs for file upload, file URL, registered table, service URL, and STAC catalogGeoLens map builder rendering Matterhorn as 3D terrain from swissALTI3D COG tiles served via TiTilerGeoLens Ask AI panel showing a plain-language request to enlarge earthquake markers on the mapGeoLens admin users page showing admin, editor, and viewer roles with per-user actionsGeoLens map builder with Restless Earth map showing earthquake heatmap along Pacific plate boundaries

What is GeoLens?

GeoLens is a self-hosted geospatial catalog and map builder. It helps teams consolidate spatial data from multiple sources into one searchable system that tracks data origins and source health. Upload common vector and raster formats, 3D tiles, and point clouds, or register existing PostGIS tables and web service layers without copying. The catalog includes fuzzy keyword search and adds semantic search via pgvector when an embedding provider is configured. The map builder supports multi-layer maps with various layer types, data-driven styling, and spatial analysis operations that create new datasets. Vector data is served through OGC API Features with CQL2, the catalog through OGC API Records and STAC endpoints, and rasters through TiTiler. Deploy with Docker Compose on one host (8 GB RAM minimum) using PostgreSQL/PostGIS with pgvector, optionally connecting to S3/MinIO/Azure Blob and Valkey/Redis. Users sign in with local credentials or via OAuth 2.0/OIDC providers such as Google, GitHub, Microsoft Entra ID, or generic OIDC. Interface languages: English, Spanish, French, German, Simplified Chinese. Apache 2.0 license.

Should you self-host GeoLens?

GeoLens scores 52/100 on selfhost.directory (how scoring works) and ranks #4 of 8 in Geospatial. It has 282 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v1.27.1, came out on 24 October 2026. New versions land roughly every 2 days.

Setup is moderate: expect some configuration beyond a single command. It is Apache-2.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is QGIS (81/100, 14 728 stars). It scores higher overall, so compare the two before you pick. See GeoLens vs QGIS side by side.

Features

  • 3D Tiles and COPC point cloud hosting
  • AI-assisted exploration (Ask AI)Optional feature; requires admin to configure an LLM provider. All workflows work without it.
  • Data export in multiple formats
  • Fuzzy keyword search
  • Map builder with multi-layer composition
  • Semantic search with pgvectorRequires admin to configure an embedding provider (OpenAI-compatible or Claude) and index the catalog.
  • Spatial analysis (buffer, clip, dissolve, spatial join, etc.)
  • Vector and raster tile serving

GeoLens README

How to install GeoLens

Install GeoLens with Docker Compose

Environment variables
JWT_SECRET_KEY, GEOLENS_ADMIN_USERNAME, GEOLENS_ADMIN_PASSWORD, POSTGRES_PASSWORD, PUBLIC_APP_URL, PUBLIC_API_URL, STORAGE_PROVIDER, S3_*, REDIS_URL, OPENAI_API_KEY, ANTHROPIC_API_KEY, EMBEDDING_MODEL, EMBEDDING_DIMS, and many more (see .env.example)

curl -fsSL https://getgeolens.com/install.sh | sh cd geolens

The installer clones the latest release tag, pulls prebuilt images, copies .env.example to .env, generates a JWT signing secret, and prompts for an admin username (default admin) and password.

Primary supported installation method. Runs on a single host. For production, use a reverse proxy (Nginx, Caddy, Traefik) for TLS and external access.

How to configure GeoLens

  • ANTHROPIC_API_KEYAnthropic API key for Claude models

    Anthropic API key for Claude models

  • API_PORT8001Host port for the API container

    Host port for the API container

  • BACKUP_S3_ENABLEDfalseEnable off-site backup upload to S3-compatible storage

    Enable off-site backup upload to S3-compatible storage

    values: true, false

  • BACKUP_SCHEDULE0 2 * * *Time of day for the automated database backup (cron format M H * * *)

    Time of day for the automated database backup (cron format M H * * *)

  • DB_PORT5434Host port for the Postgres container

    Host port for the Postgres container

  • EMBEDDING_DIMS1536Vector dimensions output by the embedding model

    Vector dimensions output by the embedding model

  • EMBEDDING_MODELtext-embedding-3-smallEmbedding model name for semantic search

    Embedding model name for semantic search

  • ENVIRONMENTDeployment environment (development or production)

    Deployment environment (development or production)

    values: development, production

  • FRONTEND_PORT8080Host port for the frontend container

    Host port for the frontend container

  • GEOLENS_ADMIN_PASSWORDAdmin account password — created on first startup when no users exist

    Admin account password — created on first startup when no users exist

  • GEOLENS_ADMIN_USERNAMEAdmin account username — created on first startup when no users exist

    Admin account username — created on first startup when no users exist

  • JWT_SECRET_KEYSecret key for signing JWT tokens (must be at least 32 chars)

    Secret key for signing JWT tokens (must be at least 32 chars)

  • LOGIN_RATE_LIMIT5Password sign-in attempts allowed per minute from one IP address

    Password sign-in attempts allowed per minute from one IP address

  • LOG_JSONfalseOutput logs in JSON format

    Output logs in JSON format

    values: true, false

  • LOG_LEVELINFOLog level

    Log level

    values: DEBUG, INFO, WARNING, ERROR, CRITICAL

  • NOTIFICATIONS_ENABLEDfalseMaster switch for outbound notifications

    Master switch for outbound notifications

    values: true, false

  • OPENAI_API_KEYOpenAI API key for OpenAI-compatible LLM provider

    OpenAI API key for OpenAI-compatible LLM provider

  • PASSWORD_LOGIN_ENABLEDtrueWhether non-admin users can sign in with a password

    Whether non-admin users can sign in with a password

    values: true, false

  • POSTGRES_DBgeolensPostgreSQL database name

    PostgreSQL database name

  • POSTGRES_PASSWORDgeolensPostgreSQL password

    PostgreSQL password

  • POSTGRES_USERgeolensPostgreSQL username

    PostgreSQL username

  • PUBLIC_API_URLhttp://localhost:8000Externally-reachable API base URL (used in OGC self/collection/next link hrefs)

    Externally-reachable API base URL (used in OGC self/collection/next link hrefs)

  • PUBLIC_APP_URLhttp://localhost:8080Browser-facing app URL (used for share links, map link previews and OAuth redirects)

    Browser-facing app URL (used for share links, map link previews and OAuth redirects)

  • REDIS_URLRedis/Valkey connection URL for cross-instance caching

    Redis/Valkey connection URL for cross-instance caching

  • REGISTRATION_ENABLEDfalseWhether new user self-registration is enabled

    Whether new user self-registration is enabled

    values: true, false

  • S3_ACCESS_KEY_IDS3 access key ID (required when STORAGE_PROVIDER=s3)

    S3 access key ID (required when STORAGE_PROVIDER=s3)

  • S3_BUCKETS3 bucket name (required when STORAGE_PROVIDER=s3)

    S3 bucket name (required when STORAGE_PROVIDER=s3)

  • S3_ENDPOINTS3-compatible endpoint URL (required when STORAGE_PROVIDER=s3)

    S3-compatible endpoint URL (required when STORAGE_PROVIDER=s3)

  • S3_SECRET_ACCESS_KEYS3 secret access key (required when STORAGE_PROVIDER=s3)

    S3 secret access key (required when STORAGE_PROVIDER=s3)

  • SMTP_FROM_ADDRESSSMTP from email address

    SMTP from email address

  • SMTP_HOSTSMTP server hostname

    SMTP server hostname

  • SMTP_PASSWORDSMTP password

    SMTP password

  • SMTP_PORT587SMTP server port

    SMTP server port

  • SMTP_USERNAMESMTP username

    SMTP username

  • STORAGE_PROVIDERlocalStorage backend for uploaded files

    Storage backend for uploaded files

    values: local, s3, azure

  • UPLOAD_MAX_SIZE_MB500Maximum upload file size in megabytes

    Maximum upload file size in megabytes

GeoLens releases & version history

More in Geospatial

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…