为Chronoframe配套本地地理编码服务
自托管的私人画廊Chronoframe
最近看见一个前端精美的私人画廊项目 Chronoframe,不仅可以解析EXIF信息详细地展示各项参数,还可以解析地图展示每张图片的拍摄位置,经过我的体验感觉效果很不错。

配合其提供的地球仪接口,还可以宏观地在地图上展示每张图片的地理位置。

目前我已经将该服务上线到https://photos.leyi.live/
本地地理编码服务Nominatim
Chronoframe的地理筛选是通过访问Nominatim公共服务器为每张图片打上相应的标签实现的,由于国内的服务器一搬无法直连Nominatim公共接口,故选择在本地搭建。
准备.osm.pbf文件
Nominatim容器需要在启动时依赖.osm.pbf文件向数据库初始化数据,可以根据需要在geofabrik下载对应的文件,不推荐下载全国范围,这样会消耗极大的内存和时间在初始化数据库上。
拉取并运行Nominatim镜像
执行以下命令
docker run -d \
--name nominatim \
-p 8070:8080 \
-v /data/openstreetmap/:/nominatim/data:rw \
-e PBF_PATH=/nominatim/data/guangdong-latest.osm.pbf \
-e OSM2PGSQL_EXTRA_ARGS="--cache 1000 --flat-nodes /nominatim/data/flat_nodes.bin --slim" \
-e POSTGRES_SHARED_BUFFERS=1GB \
-e POSTGRES_MAINTENANCE_WORK_MEM=512MB \
-e POSTGRES_WORK_MEM=50MB \
-e NOMINATIM_DATABASE_DSN="postgresql://nominatim:qaIACxO6wMR3@localhost:5432/nominatim" \
docker.xuanyuan.run/mediagis/nominatim:5.3-2026-04-20T06-30 需保证宿主机挂载目录/data/openstreetmap/下存在guangdong-latest.osm.pbf等.osm.pbf文件,如果没有镜像加速站,官方的拉取地址为mediagis/nominatim:5.1 。
这里的数据直接运行在容器内了,有条件可以连接外部数据库,由于我使用强度不高就直接运行在容器内部。此外我的命令中还根据自己服务器的配置进行内存优化,这部分也可以根据实际需要修改。
建议在容器运行后执行docker logs -f nominatim 实时查看容器日志,数据库的初始化可能会非常漫长,对于我单独加载广东省的地图数据大概消耗了40分钟后才启动web服务
检测运行状态
向宿主机8070端口发送测试数据

这样就可以了,之后再将Chronoframe的.env配置文件中加上NUXT_NOMINATIM_BASE_URL 这一条即可,值为能够访问到Nominatim的URL
之后Chronoframe就能在上传图片时进行逆地理编码,筛选条件的城市也可以正常使用了
