Configuration
Configuration Files
Primary Configuration (config/config.yml)
yaml
server:
port: 8080
host: 0.0.0.0
workers: 4
database:
host: postgres
port: 5432
database: tileserver
username: postgres
password: ${DB_PASSWORD}
pool_size: 20
cache:
redis:
host: redis
port: 6379
password: ${REDIS_PASSWORD}
db: 0
ttl: 3600
filesystem:
path: /var/cache/tiles
max_size: 10GB
rendering:
tile_size: 256
buffer_size: 64
max_zoom: 18
min_zoom: 0
formats: ['png', 'jpg', 'webp', 'pbf']
styles:
default:
source: mapbox://styles/mapbox/streets-v11
sprite: /assets/sprites/basic
glyphs: /assets/fonts/{fontstack}/{range}.pbf
Environment Variables (.env)
bash
# Database Configuration
DB_PASSWORD=secure_password_here
POSTGRES_DB=tileserver
POSTGRES_USER=postgres
POSTGRES_PASSWORD=secure_password_here
# Redis Configuration
REDIS_PASSWORD=redis_password_here
# Application Settings
NODE_ENV=production
LOG_LEVEL=info
TILE_CACHE_TTL=3600
MAX_CONCURRENT_REQUESTS=100
# Security
API_KEY=your_api_key_here
CORS_ORIGINS=https://yourdomain.com,https://app.yourdomain.com
Advanced Configuration Options
Load Balancer Configuration (nginx.conf) nginx
upstream tileserver {
server tileserver:8080;
server tileserver-2:8080;
keepalive 32;
}
server {
listen 80;
server_name tiles.yourdomain.com;
location / {
proxy_pass http://tileserver;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache tiles_cache;
proxy_cache_valid 200 1h;
proxy_cache_use_stale error timeout updating;
}
}
Docker Compose Configuration
yaml
version: '3.8'
services:
tileserver:
image: tileserver:5.3.1
ports:
- "8080:8080"
volumes:
- ./config:/app/config
- ./data:/app/data
- tile_cache:/var/cache/tiles
environment:
- NODE_ENV=production
depends_on:
- postgres
- redis
postgres:
image: postgis/postgis:14-3.2
environment:
- POSTGRES_DB=tileserver
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
tile_cache: