# MVT Server: A Simple Vector Tile Server
This is a simple and high-speed vector tile server developed in Rust, using the Salvo web framework. It provides an efficient way to serve vector geospatial data over the web.
**MVT Server** will allow you to publish any table or view with a geometry field as vector tiles. It relies on the use of the PostGIS function `ST_AsMVT`.
**MVT Server** focuses exclusively on the generation and delivery of Vector Tiles from PostGIS to maximize performance, simplicity, and ease of use.
## Key Features
- Support for multiple PostgreSQL databases simultaneously.
- Layer server, maps server (through Maplibre Style) and legends server.
- On-the-fly vector tile generation using PostgreSQL/PostGIS.
- Web-based administration for managing users, groups, layers, styles, categories, and more.
- Integrated caching with support for disk or Redis storage.
- Granular cache control at the layer level.
- Multiple source variants: Single layer, Multi-layer by composition, and Multi-layer by category.
- Built-in glyph and sprite server for custom styles.
- Layer access control via Basic Authentication or JWT.
- Monitoring and Metrics with Prometheus support.
- Extensible via Lua plugins: add custom filter logic per layer or category without recompiling.
## Performance Tips
- **Gzip compression**: Enable gzip in your reverse proxy (nginx, caddy, etc.) for `application/x-protobuf` responses. Vector tiles compress 60–80% on average. See the [nginx configuration example in the Tutorial](TUTORIAL.md#server-with-nginx).
- **Caching**: Configure `max_cache_age` per layer. Static layers (boundaries, basemaps) benefit from long or infinite cache. Real-time layers should use a short TTL. Cache can be invalidated manually per layer from the admin panel.
- **Redis**: Use Redis as the cache backend when running multiple instances behind a load balancer.
## Getting Started
Check out the **[MVT Server Tutorial](TUTORIAL.md)** for a complete step-by-step guide on:
- Requirements & Installation
- Configuration (YAML, Env vars, Arguments)
- Managing Layers & Administration UI
- Consuming Tiles in QGIS, MapLibre, OpenLayers, and Leaflet
- Advanced usage (Styles, Legends, Sprites, Glyphs)
## Configuration
MVT Server uses a hierarchical configuration system. Please see the [Tutorial](TUTORIAL.md) for detailed instructions on the new `config.yaml` structure and how to configure the server.
## Installation (Quick Start)
```sh
# Clone the repository
git clone https://github.com/mvt-proj/mvt-rs.git
cd mvt-rs
# Compile for production
cargo build --release
```
## 🙌 Support This Project
If you find **MVT Server** useful, please consider supporting its development.
Your contribution helps improve the project and keep it actively maintained.
[](https://paypal.me/josejachuf)
Thank you for your support! 💖