Create individual maps for your places, tracks and events, and share them in real time.
recording.webm
Mapforge is an open source GIS web application. Create and share your places, tracks and events as GeoJSON layers on different base maps, with MapLibre GL JS on desktop and mobile. Changes are synced live to all clients.
Try it on mapforge.org · Self-host · Changelog · Contributing
- Create maps with your own data on top of various available base maps.
- 3D terrain, hillshade, contour lines and globe projection
- Self-host with ready-to-use Docker Compose file
- Draw shapes and style them: Add pictures, customize colors, symbols, labels, (3D) polygons, indoor maps and more. The style attributes extend the GeoJSON / Mapbox simplestyle spec.
- Plan routes for walking, bike and car with openrouteservice, with elevation profile and route color coding by steepness or surface
- Import and export GeoJSON, GPX and KML
- Search places and addresses, including the features of the open map
- Real-time collaborative editing, changes sync to every connected client over WebSockets
- Share maps and embed on your own web page
- Desktop and mobile UI
- Integration with Overpass API for custom OpenStreetMap queries
- Login with Google, GitHub or OSM OAuth, no auth system to maintain
- PWA support by default, ships as an Android app via Bubblewrap
- Record GPS tracks with the built in µlogger API
deploy/docker-compose.yml starts the application, MongoDB and Redis together.
It uses the latest released image from ghcr.io/mapforge-org/mapforge:main.
git clone https://github.com/mapforge-org/mapforge.git
cd mapforge/deploy
cp .env.example .env
docker compose up --detach # podman compose works, tooThen open http://localhost:3000. To watch the logs, run docker compose logs -f mapforge.
To sign in, either add OAuth credentials to .env, or use the local developer login, which is enabled by DEVELOPER_LOGIN_ENABLED. Only enable the developer login on a local test instance! The first user that logs in becomes admin.
Uploaded images are stored in deploy/volumes/storage/, the database in deploy/volumes/mongodb/. To update to the latest version: docker compose pull
SECRET_KEY_BASE— Rails secret key (must be set in production). Generate one withopenssl rand -hex 64.DEVELOPER_LOGIN_ENABLED— optional local developer login (only enable this in test instances)HTTP_PORT— HTTP port inside the container (default: 3001 for thruster, 3000 for puma).FORCE_SSL— HTTPS enforcement. Set it totrueif a reverse proxy terminates TLS in front of the app.MONGO_URL— MongoDB connection string (default:localhost:27017)MONGO_DB— MongoDB database name (default: 'mapforge_production')MONGO_USER,MONGO_PASSWORD— MongoDB credentials (optional; leave unset to connect without authentication)REDIS_URL— Redis URL for Action Cable (default:redis://localhost:6379/1)OPENROUTESERVICE_KEY— API key for routing features with openrouteservice.org. Without this key the map hides the route buttons (walk, bike, car) in the line menu.INDOOREQUAL_KEY— API key for Indoorequal. Without this key the layer menu hides the "OpenStreetMap indoor" entry.THUNDERFOREST_KEY— API key for Thunderforest maps. Without this key the app hides the Thunderforest background maps.PROTOMAPS_KEY— API key for Protomaps maps. Without this key the app hides the Protomaps background maps.GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET— GitHub OAuth credentials. Set to enable login via Github.GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET— Google OAuth credentials. Set to enable login via Google.OSM_CLIENT_ID,OSM_CLIENT_SECRET— OSM OAuth credentials. Set to enable login via OpenStreetMap.DEFAULT_MAP— default background map (default: versatilesColorful)