
Deploy Martin PostGIS Tile Server
Serve vector map tiles from your existing PostGIS database.
Just deployed
Just deployed
Deploy and Host Martin PostGIS Tile Server on Railway
Serve vector map tiles from your existing PostGIS database.
Draft status: Configuration and upstream documentation reviewed. Container startup, Railway application workflows, restart behavior, backup restoration and costs remain unverified.
About Hosting
Serve vector map tiles from your existing PostGIS database.
| Service | Role | Persistent path |
|---|---|---|
app | Private application or dependency | None |
martin | Public owner gateway | None |
Why Deploy
Run this application in your own Railway project, with explicit configuration and storage under your control.
Common Use Cases
- Serve vector map tiles from your existing PostGIS database.
Dependencies for Martin PostGIS Tile Server
Deployment Dependencies
The application images are pinned by registry digest. Database services, when included, stay on the private network. One replica is supported for each volume-backed service.
Supply these required settings before deployment: app.DATABASE_URL.
First use
Open the martin service's HTTPS domain. Sign in to the owner gateway with username admin and its generated ACCESS_PASSWORD. Complete the application's own setup afterward.
API calls must also send X-Template-Key with that owner password. The gateway forwards native Bearer tokens, strips Basic Authorization, and limits requests to 32 MiB. Browser sessions receive a secure owner cookie. Native clients, webhooks and public sharing require specific compatibility checks before use. Gateway /healthz only checks the proxy, not application readiness.
Set DATABASE_URL to your populated PostGIS database before deployment. Open /catalog through the owner gateway and configure your map client to send X-Template-Key for tile requests, or call the private service from an application backend.
Scope and limitations
- A populated PostGIS database is an operator-supplied dependency; this template does not create or import map data.
- Map clients must carry owner credentials. Public anonymous map hosting requires a deliberately different access policy.
- No database volume is attached because data remains in the supplied database.
Acceptance checks before use
- Connect to a database containing a geometry table, check /catalog and request one tile.
- Confirm invalid database credentials fail and unauthenticated public tile requests are denied.
- Confirm generated credentials are distinct on a second fresh deployment.
- Back up every listed persistent path and database, then restore into a separate test project.
- Measure Railway usage with representative data and workload before estimating operating costs.
Backups and upgrades
Back up databases, file volumes, encryption keys and configuration together. Keep a copy outside the running project. Review upstream migration notes before changing a digest; rollback can require restoring a compatible database and files, not just selecting an older image.
Sources and selection evidence
- Upstream documentation: Official ghcr.io/maplibre/martin image and DATABASE_URL discovery; PostGIS 3.0+ required.
- Upstream documentation: --listen-addresses sets the bind address.
- Upstream documentation: Entrypoint /usr/local/bin/martin and /health endpoint.
- Upstream project
Product and alias searches found no matching public Railway listing during this research. This is a bounded search result; private, unindexed or differently named listings may exist. It is not evidence of demand or revenue.
Upstream software retains its own license and edition restrictions. This deployment draft does not imply upstream endorsement.
Template Content
DATABASE_URL
Required operator-supplied database url.
