GeoLibre自托管方案用GeoLens把数据与GIS应用部署在同一源【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibreGeoLibre自托管的关键不是装一个服务器而是让 GIS 应用与数据部署在同一源same origin数据由自托管空间目录 GeoLensFastAPI PostGIS保管GeoLibre 网页版与它共用一个域名、同一套登录认证。浏览器拿到的每一个字节都只来自你自己的服务器——无 CORS 配置、无跨域凭据问题数据不出内网。GeoLibre 自托管部署后的应用界面图层、样式、属性表全部在受控环境中运行为什么同一源是GeoLibre自托管的正确姿势GeoLibre 是纯客户端应用地图、图层、分析都在浏览器里跑。但它不托管数据而是从你指定的地方读取。于是私有部署只剩两个问题数据集和工程文件放在哪谁有权读浏览器如何从应用里安全地访问它们如果数据和应用分开部署在不同源你会撞上浏览器的五道墙会话 Cookie 不会跨源发送、CORS 必须逐源放行、MapLibre 自己发起的瓦片请求同样受限于 Cookie/CORS、?url工程深链跨源直接报网络错误、CSP 还要求数据服务端必须走 HTTPS。而把 GeoLibre 和 GeoLens 放在同一个源上这五个问题全部自动消失——这正是 docs/self-hosting.md 中官方推荐的架构。架构速览一个域名三条路径浏览器一个 HTTPS 源、一个会话 → 反向代理TLS SSO ├─ /gis → GeoLibre 网页版 ├─ /api → GeoLens 目录与 API含 /api/tiles/... └─ /projects → 私有工程文件一个主机名、一次登录、三条路径。GeoLibre 在/gis读取/api上的目录和瓦片、/projects上的工程文件全部携带访客自己的会话 Cookie。第一步用 GeoLens 托管你的数据GeoLens 是开源、可自托管的空间数据目录与地图构建器基于 FastAPI PostGIS React MapLibre。它是 GeoLibre 刻意不做的部分两者正好互补GeoLens 提供GeoLibre 如何消费数据集模糊/语义搜索pgvectorGeoLens 插件面板中的目录列表签名 MVT 矢量瓦片矢量瓦片图层token 自动刷新OGC API Features 接口带完整属性的 GeoJSON 图层STAC 1.0 与服务端栅格瓦片栅格图层账号、逐数据集权限、OIDC SSO、API Key决定插件能看到什么Shapefile/GeoPackage/GeoTIFF 等上传无需手工转换用 Docker Compose 在同一台 VM 上安装即可GeoLens 官方提供一键安装脚本并在暴露服务前配置好PUBLIC_APP_URL/PUBLIC_API_URL填浏览器可见的公开 HTTPS 地址不是 Compose 服务名和JWT_SECRET_KEY。上传数据后保持默认私有GeoLens 的逐数据集权限会自动生效。第二步Docker 部署 GeoLibre 网页版官方镜像用 nginx 托管生产网页构建附带 Python 转换 sidecar见 Dockerfile 与 docker/nginx.confdocker run -d --name geolibre -p 8081:80 \ -e GEOLIBRE_SHARE_URLoff \ ghcr.io/opengeos/geolibre:latest若要把应用挂在/gis路径下构建时注入基础路径docker build --build-arg GEOLIBRE_APP_BASE/gis/ -t geolibre-private .私有部署最关键的几个环境变量完整清单见 docs/self-hosting.md 与 docs/getting-started.md变量建议值作用GEOLIBRE_SHARE_URLoff彻底移除 Share 与项目画廊杜绝工程被误发布到公网GEOLIBRE_AUTH_USER/GEOLIBRE_AUTH_PASSWORD单凭据场景设置对应用与/sidecarAPI 启用 Basic AuthGEOLIBRE_CONVERSION_ROOTS/data把 sidecar 读写限制在挂载目录内GEOLIBRE_NO_EXTERNAL_CDN构建参数受限环境设1剥离对外部 CDN 的引用企业级 CSP 友好⚠️ 公开暴露镜像前请从 CSP 的connect-src中移除http://localhost:*/127.0.0.1:*放行项本地开发用途避免访客浏览器被用来探测回环地址。仓库里的 docker-compose.yml 则给出了完整的四容器组合网页 项目共享服务端 实时协作中继 PostgreSQL适合需要自托管项目分享与协作的场景一键docker compose up即可。第三步把两者放进同一认证层Basic Auth 只适合单一共享凭据。多用户/SSO 场景把 oauth2-proxy、Authelia 或 Cloudflare Access 放在未修改的镜像前面两个应用共用一个主机名。Caddy 最小示例maps.example.org { forward_auth authelia:9091 { uri /api/verify?rdhttps://auth.example.org copy_headers Remote-User Remote-Groups Remote-Email } handle_path /gis/* { reverse_proxy geolibre:80 } handle_path /projects/* { root * /srv/projects; file_server } handle { reverse_proxy geolens:8080 } }配置完成后https://maps.example.org/gis/?urlhttps://maps.example.org/projects/watershed.geolibre.json会对已认证用户打开私有工程对其他人返回登录跳转——没有 CORS 头、没有 URL 里的 token、SSO 不认的人拿不到任何字节。两层认证的分工要记牢forward-auth 决定谁能到达源GeoLens 再用自己的账号体系决定能看哪些数据集。把 GeoLens 指向同一个 OIDC 身份提供商访客登录后自动获得 GeoLens 会话 Cookie私有数据集直接可见。内置 GeoLens 插件数据上地图只需 4 步GeoLens 插件内置于 GeoLibre无需安装API 客户端源码见 packages/plugins/src/plugins/geolens-api.ts打开Plugins菜单选择GeoLens填入服务器根地址不要带/api插件会自行拼接同源自部署下 API key 留空即可请求自动携带访客会话 Cookie搜索目录并添加数据集——矢量数据可选矢量瓦片大表友好或GeoJSON完整属性、可编辑栅格数据以服务端正渲染瓦片加入每条结果都带Metadata链接可一键跳回 GeoLens 中的数据集页面。数据上地图后就是普通 GeoLibre 图层改样式、分类、查属性表、跑处理工具与空间 SQL、做成 Story Map 或嵌入地图全都能用。启用enable_dataset_editing后甚至可以把编辑结果逐要素写回GeoLens 数据集。凭据安全设计数据主权的关键API key只存在于内存会话中不写localStorage不写进工程文件保存的.geolibre.json只记录服务器 URL 和数据集 id——把工程发给别人不会把数据和密钥发出去私有栅格的密钥只绑定该图层自己的瓦片 URL 前缀底图或其他插件碰不到停用插件即丢弃全部密钥私有图层立刻停止渲染。两种部署模式怎么选维度模式 A同源自托管推荐模式 B托管版应用 私有数据会话 Cookie 送达数据源✅❌ 跨源不发 CookieCORS 配置不需要数据源必须显式放行应用源私有?url工程可用需要签名/过期 URLtoken 会泄漏到历史与日志数据是否经过第三方否读取代码由第三方源提供敏感数据不合规成本多维护一个容器几乎为零半公开数据发布地图、能力 URL可以用模式 B敏感数据请毫不犹豫选模式 A——网页版本质上就是一个静态文件目录托管成本极低。自托管检查清单 ✅GeoLens 运行在社区 VM 上数据集默认私有GeoLibre 网页版来自同一源GEOLIBRE_APP_BASE与路径一致一个 TLS 反向代理 SSO 同时覆盖应用与数据GEOLIBRE_SHARE_URLoff防止误发布到外部GEOLIBRE_CONVERSION_ROOTS收紧、GEOLIBRE_POSTGIS_HOSTS按需才设CSP 中回环放行项已移除底图、地理编码、Pyodide 等外部依赖已指向内部主机详见 docs/self-hosting.md 的出站请求缩减表用未登录浏览器做最终测试应用、目录、瓦片、?url工程均应全部不可达按照这套同一源方案部署GeoLibre 从开箱即用的轻量 GIS 工具变成了真正数据不出门的企业级私有 GIS 平台。【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考