-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.dist.js
155 lines (144 loc) · 4.62 KB
/
config.dist.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
const config = module.exports = {
version: 1, // config file format version
id: "tileblaster", // id of the tileblaster instance, in case you want to run more than one; default: tileblaster
threads: 1, // number of worker threads in cluster, default: 1
queue: 10, // number of parallel tile processes per worker, default: 12
server: {
url: "https://tileserver/tiles", // public url including subdirectory
mount: "/tiles", // mountpoint override, default: pathname from ${config.paths.base}
},
paths: {
work: "/path/to/stuff", // the base directory where files (sockets, logs, plugins, ...) go; default: ~/tileblaster
data: "/path/to/tiles", // the directory in which cached tiles are saved; default: ${config.paths.work}/data
logs: "/path/to/logs", // the directory in which cached tiles are saved; default: ${config.paths.work}/logs
plugins: "/path/to/plugins", // the directory from which plugins ar loaded; default: ${config.paths.work}/plugins
sockets: "/path/to/sockets", // the directory i nwhich sockets are created; default: ${config.paths.work}/sockets
},
// listen
listen: [{
port: 8080, // required
host: "localhost", // default localhost
},{
socket: "test.socket", // required, absolute path or relative to ${config.paths.socket}
mode: 0o660, // change socket mode to this id
group: 1000, // change socket group to this is
}],
// plugins, relative or absolute paths for local files, npm module names otherwise
plugins: {
resize: "./resize.js", // path relative to `config.paths.plugins`, starting with ./
convert: "/path/to/convert.js", // absolute path
optimize: "someplugin", // npm module
},
maps: {
example: [{
// cors headers
// they are only useful for standalone servers
builtin: "cors",
origins: [ "https://example.org/" ],
},{
builtin: "parse", // /z/x/[email protected], other formats via parse function
parse: function(req, next){ // override parse function, req is the raw request
// req.url=/foo/bar/{z}.{x}.{y}
let p = req.url.split("/").pop().split(".");
// do things to get parameters from path
next(null, {
z: p[0],
x: p[1],
y: p[2],
r: "",
w: 256,
d: 1,
e: ".png"
});
},
},{
builtin: "check",
zoom: [ 0, 22 ], // min, max
bbox: [ -180, -90, 180, 90 ], // west, south, east, north
extensions: [ "png", "jpeg" ], // allowed extensions
density: [ "", "@2x", "@3x" ], // allowed density markeers
check: function(params, fn) { // override check function, params from parse
fn(new Error("Check failed")); // deliver error if check failed
},
status: 204,
hints: true,
},{ // get from cache, skip to `skipto` if successful
builtin: "cache",
skipto: "deliver",
},{
builtin: "noop", // does nothing
},{
builtin: "tileserver",
url: "https://{s}.tileserver.example/test/{z}/{x}/{y}{r}.{e}",
subdomains: [ "a", "b", "x" ], // random chosen and passed in as {s}
tms: true, // y coordinate is inverted
headers: {}, // additional headers sent to the backend tileserver
status: [ 200 ], // expected status code(s)
mimetypes: [ "image/png", "image/jpeg" ], // expected mime types
mimetype: "image/png", // overwrite mime type from server
},
/* alternative:
{
// get tile from versatiles container
builtin: "versatiles",
url: "https://cdn.example/planet.versatiles",
headers: { // headers sent to versatiles server
"X-Tileblaster": "True",
},
},{
// get tiles from pmtiles container
builtin: "pmtiles",
url: "https://cdn.example/planet.pmtiles"
},{
// get tiles from local mbtiles database
builtin: "mbtiles",
file: "/path/to/planet.mbtiles"
},
*/
{
// edit vectortile
builtin: "edit",
edit: function(layers){
// remove unused layer
layers = layers.filter(function(layer){
return (layer.name !== "unused-layer");
});
return layers;
}
},{
// use sharp for image manipulation
plugin: "sharp",
resize: { width: 512, height: 512 }, // sharp.resize()
},{
plugin: "optimize",
png: { o: 4 }, // true or opts for optipng
jpeg: true, // true or opts for mozjpeg
},{
// convert raster tiles to webp and/or avif
builtin: "modernize",
webp: {
quality: 90,
effort: 4,
},
avif: {
quality: 90,
effort: 5,
},
},{
builtin: "compress",
brotli: 8, // true or <level> or {opts}
gzip: true, // true or <level> or {opts}
},{
builtin: "cache",
expires: "30d",
},{
// debug output
builtin: "dump",
},{
builtin: "deliver", // deliver best matching tile for client
headers: {}, // additional http headers
}],
// more maps
othermap: [],
}
};