1 This section provides a reference of all configuration parameters that can
2 be used with Nominatim.
4 # Configuring Nominatim
6 Nominatim uses [dotenv](https://github.com/theskumar/python-dotenv) to manage
7 its configuration settings. There are two means to set configuration
8 variables: through an `.env` configuration file or through an environment
11 The `.env` configuration file needs to be placed into the
12 [project directory](../admin/Import.md#creating-the-project-directory). It
13 must contain configuration parameters in `<parameter>=<value>` format.
14 Please refer to the dotenv documentation for details.
16 The configuration options may also be set in the form of shell environment
17 variables. This is particularly useful, when you want to temporarily change
18 a configuration option. For example, to force the replication serve to
19 download the next change, you can temporarily disable the update interval:
21 NOMINATIM_REPLICATION_UPDATE_INTERVAL=0 nominatim replication --once
23 If a configuration option is defined through .env file and environment
24 variable, then the latter takes precedence.
26 ## Configuration Parameter Reference
28 ### Import and Database Settings
30 #### NOMINATIM_DATABASE_DSN
33 | -------------- | --------------------------------------------------- |
34 | **Description:** | Database connection string |
35 | **Format:** | string: `pgsql:<param1>=<value1>;<param2>=<value2>;...` |
36 | **Default:** | pgsql:dbname=nominatim |
37 | **After Changes:** | run `nominatim refresh --website` |
39 Sets the connection parameters for the Nominatim database. At a minimum
40 the name of the database (`dbname`) is required. You can set any additional
41 parameter that is understood by libpq. See the [Postgres documentation](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) for a full list.
44 It is usually recommended not to set the password directly in this
45 configuration parameter. Use a
46 [password file](https://www.postgresql.org/docs/current/libpq-pgpass.html)
50 #### NOMINATIM_DATABASE_WEBUSER
53 | -------------- | --------------------------------------------------- |
54 | **Description:** | Database query user |
55 | **Format:** | string |
56 | **Default:** | www-data |
57 | **After Changes:** | cannot be changed after import |
59 Defines the name of the database user that will run search queries. Usually
60 this is the user under which the webserver is executed. When running Nominatim
61 via php-fpm, you can also define a separate query user. The Postgres user
62 needs to be set up before starting the import.
64 Nominatim grants minimal rights to this user to all tables that are needed
65 for running geocoding queries.
68 #### NOMINATIM_DATABASE_MODULE_PATH
71 | -------------- | --------------------------------------------------- |
72 | **Description:** | Directory where to find the PostgreSQL server module |
73 | **Format:** | path |
74 | **Default:** | _empty_ (use `<project_directory>/module`) |
75 | **After Changes:** | run `nominatim refresh --functions` |
76 | **Comment:** | Legacy tokenizer only |
78 Defines the directory in which the PostgreSQL server module `nominatim.so`
79 is stored. The directory and module must be accessible by the PostgreSQL
82 For information on how to use this setting when working with external databases,
83 see [Advanced Installations](../admin/Advanced-Installations.md).
85 The option is only used by the Legacy tokenizer and ignored otherwise.
88 #### NOMINATIM_TOKENIZER
91 | -------------- | --------------------------------------------------- |
92 | **Description:** | Tokenizer used for normalizing and parsing queries and names |
93 | **Format:** | string |
94 | **Default:** | legacy |
95 | **After Changes:** | cannot be changed after import |
97 Sets the tokenizer type to use for the import. For more information on
98 available tokenizers and how they are configured, see
99 [Tokenizers](../customize/Tokenizers.md).
102 #### NOMINATIM_TOKENIZER_CONFIG
105 | -------------- | --------------------------------------------------- |
106 | **Description:** | Configuration file for the tokenizer |
107 | **Format:** | path |
108 | **Default:** | _empty_ (default file depends on tokenizer) |
109 | **After Changes:** | see documentation for each tokenizer |
111 Points to the file with additional configuration for the tokenizer.
112 See the [Tokenizer](../customize/Tokenizers.md) descriptions for details
115 If a relative path is given, then the file is searched first relative to the
116 project directory and then in the global settings directory.
118 #### NOMINATIM_MAX_WORD_FREQUENCY
121 | -------------- | --------------------------------------------------- |
122 | **Description:** | Number of occurrences before a word is considered frequent |
123 | **Format:** | int |
124 | **Default:** | 50000 |
125 | **After Changes:** | cannot be changed after import |
126 | **Comment:** | Legacy tokenizer only |
128 The word frequency count is used by the Legacy tokenizer to automatically
129 identify _stop words_. Any partial term that occurs more often then what
130 is defined in this setting, is effectively ignored during search.
133 #### NOMINATIM_LIMIT_REINDEXING
136 | -------------- | --------------------------------------------------- |
137 | **Description:** | Avoid invalidating large areas |
138 | **Format:** | bool |
139 | **Default:** | yes |
141 Nominatim computes the address of each place at indexing time. This has the
142 advantage to make search faster but also means that more objects needs to
143 be invalidated when the data changes. For example, changing the name of
144 the state of Florida would require recomputing every single address point
145 in the state to make the new name searchable in conjunction with addresses.
147 Setting this option to 'yes' means that Nominatim skips reindexing of contained
148 objects when the area becomes too large.
151 #### NOMINATIM_LANGUAGES
154 | -------------- | --------------------------------------------------- |
155 | **Description:** | Restrict search languages |
156 | **Format:** | string: comma-separated list of language codes |
157 | **Default:** | _empty_ |
159 Normally Nominatim will include all language variants of name:XX
160 in the search index. Set this to a comma separated list of language
161 codes, to restrict import to a subset of languages.
163 Currently only affects the initial import of country names and special phrases.
166 #### NOMINATIM_TERM_NORMALIZATION
169 | -------------- | --------------------------------------------------- |
170 | **Description:** | Rules for normalizing terms for comparisons |
171 | **Format:** | string: semicolon-separated list of ICU rules |
172 | **Default:** | :: NFD (); [[:Nonspacing Mark:] [:Cf:]] >; :: lower (); [[:Punctuation:][:Space:]]+ > ' '; :: NFC (); |
173 | **Comment:** | Legacy tokenizer only |
175 [Special phrases](Special-Phrases.md) have stricter matching requirements than
176 normal search terms. They must appear exactly in the query after this term
177 normalization has been applied.
179 Only has an effect on the Legacy tokenizer. For the ICU tokenizer the rules
181 [normalization section](Tokenizers.md#normalization-and-transliteration)
185 #### NOMINATIM_USE_US_TIGER_DATA
188 | -------------- | --------------------------------------------------- |
189 | **Description:** | Enable searching for Tiger house number data |
190 | **Format:** | boolean |
191 | **Default:** | no |
192 | **After Changes:** | run `nominatim --refresh --functions` |
194 When this setting is enabled, search and reverse queries also take data
195 from [Tiger house number data](Tiger.md) into account.
198 #### NOMINATIM_USE_AUX_LOCATION_DATA
201 | -------------- | --------------------------------------------------- |
202 | **Description:** | Enable searching in external house number tables |
203 | **Format:** | boolean |
204 | **Default:** | no |
205 | **After Changes:** | run `nominatim --refresh --functions` |
206 | **Comment:** | Do not use. |
208 When this setting is enabled, search queries also take data from external
209 house number tables into account.
211 *Warning:* This feature is currently unmaintained and should not be used.
214 #### NOMINATIM_HTTP_PROXY
217 | -------------- | --------------------------------------------------- |
218 | **Description:** | Use HTTP proxy when downloading data |
219 | **Format:** | boolean |
220 | **Default:** | no |
222 When this setting is enabled and at least
223 [NOMINATIM_HTTP_PROXY_HOST](#nominatim_http_proxy_host) and
224 [NOMINATIM_HTTP_PROXY_PORT](#nominatim_http_proxy_port) are set, the
225 configured proxy will be used, when downloading external data like
229 #### NOMINATIM_HTTP_PROXY_HOST
232 | -------------- | --------------------------------------------------- |
233 | **Description:** | Host name of the proxy to use |
234 | **Format:** | string |
235 | **Default:** | _empty_ |
237 When [NOMINATIM_HTTP_PROXY](#nominatim_http_proxy) is enabled, this setting
238 configures the proxy host name.
241 #### NOMINATIM_HTTP_PROXY_PORT
244 | -------------- | --------------------------------------------------- |
245 | **Description:** | Port number of the proxy to use |
246 | **Format:** | integer |
247 | **Default:** | 3128 |
249 When [NOMINATIM_HTTP_PROXY](#nominatim_http_proxy) is enabled, this setting
250 configures the port number to use with the proxy.
253 #### NOMINATIM_HTTP_PROXY_LOGIN
256 | -------------- | --------------------------------------------------- |
257 | **Description:** | Username for proxies that require login |
258 | **Format:** | string |
259 | **Default:** | _empty_ |
261 When [NOMINATIM_HTTP_PROXY](#nominatim_http_proxy) is enabled, use this
262 setting to define the username for proxies that require a login.
265 #### NOMINATIM_HTTP_PROXY_PASSWORD
268 | -------------- | --------------------------------------------------- |
269 | **Description:** | Password for proxies that require login |
270 | **Format:** | string |
271 | **Default:** | _empty_ |
273 When [NOMINATIM_HTTP_PROXY](#nominatim_http_proxy) is enabled, use this
274 setting to define the password for proxies that require a login.
277 #### NOMINATIM_OSM2PGSQL_BINARY
280 | -------------- | --------------------------------------------------- |
281 | **Description:** | Location of the osm2pgsql binary |
282 | **Format:** | path |
283 | **Default:** | _empty_ (use binary shipped with Nominatim) |
284 | **Comment:** | EXPERT ONLY |
286 Nominatim uses [osm2pgsql](https://osm2pgsql.org) to load the OSM data
287 initially into the database. Nominatim comes bundled with a version of
288 osm2pgsql that is guaranteed to be compatible. Use this setting to use
289 a different binary instead. You should do this only when you know exactly
290 what you are doing. If the osm2pgsql version is not compatible, then the
294 #### NOMINATIM_WIKIPEDIA_DATA_PATH
297 | -------------- | --------------------------------------------------- |
298 | **Description:** | Directory with the wikipedia importance data |
299 | **Format:** | path |
300 | **Default:** | _empty_ (project directory) |
302 Set a custom location for the
303 [wikipedia ranking file](../admin/Import.md#wikipediawikidata-rankings). When
304 unset, Nominatim expects the data to be saved in the project directory.
306 #### NOMINATIM_PHRASE_CONFIG
309 | -------------- | --------------------------------------------------- |
310 | **Description:** | Configuration file for special phrase imports |
311 | **Format:** | path |
312 | **Default:** | _empty_ (use default settings) |
314 The _phrase_config_ file configures black and white lists of tag types,
315 so that some of them can be ignored, when loading special phrases from
316 the OSM wiki. The default settings can be found in the configuration
317 directory as `phrase-settings.json`.
319 #### NOMINATIM_ADDRESS_LEVEL_CONFIG
322 | -------------- | --------------------------------------------------- |
323 | **Description:** | Configuration file for rank assignments |
324 | **Format:** | path |
325 | **Default:** | _empty_ (use default settings) |
327 The _address level config_ configures rank assignments for places. See
328 [Place Ranking](Ranking.md) for a detailed explanation what rank assignments
329 are and what the configuration file must look like. The default configuration
330 can be found in the configuration directory as `address-levels.json`.
332 #### NOMINATIM_IMPORT_STYLE
335 | -------------- | --------------------------------------------------- |
336 | **Description:** | Configuration to use for the initial OSM data import |
337 | **Format:** | string or path |
338 | **Default:** | extratags |
340 The _style configuration_ describes which OSM objects and tags are taken
341 into consideration for the search database. This setting may either
342 be a string pointing to one of the internal styles or it may be a path
343 pointing to a custom style.
345 See [Import Styles](Import-Styles.md)
346 for more information on the available internal styles and the format of the
349 #### NOMINATIM_FLATNODE_FILE
352 | -------------- | --------------------------------------------------- |
353 | **Description:** | Location of osm2pgsql flatnode file |
354 | **Format:** | path |
355 | **Default:** | _empty_ (do not use a flatnote file) |
356 | **After Changes:** | Only change when moving the file physically. |
358 The `osm2pgsql flatnode file` is file that efficiently stores geographic
359 location for OSM nodes. For larger imports it can significantly speed up
360 the import. When this option is unset, then osm2pgsql uses a PsotgreSQL table
361 to store the locations.
365 The flatnode file is not only used during the initial import but also
366 when adding new data with `nominatim add-data` or `nominatim replication`.
367 Make sure you keep the flatnode file around and this setting unmodified,
368 if you plan to add more data or run regular updates.
371 #### NOMINATIM_TABLESPACE_*
374 | -------------- | --------------------------------------------------- |
375 | **Description:** | Group of settings for distributing the database over tablespaces |
376 | **Format:** | string |
377 | **Default:** | _empty_ (do not use a table space) |
378 | **After Changes:** | no effect after initial import |
380 Nominatim allows to distribute the search database over up to 10 different
381 [PostgreSQL tablespaces](https://www.postgresql.org/docs/current/manage-ag-tablespaces.html).
382 If you use this option, make sure that the tablespaces exist before starting
385 The available tablespace groups are:
387 NOMINATIM_TABLESPACE_SEARCH_DATA
388 : Data used by the geocoding frontend.
390 NOMINATIM_TABLESPACE_SEARCH_INDEX
391 : Indexes used by the geocoding frontend.
393 NOMINATIM_TABLESPACE_OSM_DATA
394 : Raw OSM data cache used for import and updates.
396 NOMINATIM_TABLESPACE_OSM_DATA
397 : Indexes on the raw OSM data cache.
399 NOMINATIM_TABLESPACE_PLACE_DATA
400 : Data table with the pre-filtered but still unprocessed OSM data.
401 Used only during imports and updates.
403 NOMINATIM_TABLESPACE_PLACE_INDEX
404 : Indexes on raw data table. Used only during imports and updates.
406 NOMINATIM_TABLESPACE_ADDRESS_DATA
407 : Data tables used for computing search terms and addresses of places
408 during import and updates.
410 NOMINATIM_TABLESPACE_ADDRESS_INDEX
411 : Indexes on the data tables for search term and address computation.
412 Used only for import and updates.
414 NOMINATIM_TABLESPACE_AUX_DATA
415 : Auxiliary data tables for non-OSM data, e.g. for Tiger house number data.
417 NOMINATIM_TABLESPACE_AUX_INDEX
418 : Indexes on auxiliary data tables.
421 ### Replication Update Settings
423 #### NOMINATIM_REPLICATION_URL
426 | -------------- | --------------------------------------------------- |
427 | **Description:** | Base URL of the replication service |
428 | **Format:** | url |
429 | **Default:** | https://planet.openstreetmap.org/replication/minute |
430 | **After Changes:** | run `nominatim replication --init` |
432 Replication services deliver updates to OSM data. Use this setting to choose
433 which replication service to use. See [Updates](../admin/Update.md) for more
434 information on how to set up regular updates.
436 #### NOMINATIM_REPLICATION_MAX_DIFF
439 | -------------- | --------------------------------------------------- |
440 | **Description:** | Maximum amount of data to download per update cycle (in MB) |
441 | **Format:** | integer |
442 | **Default:** | 50 |
443 | **After Changes:** | restart the replication process |
445 At each update cycle Nominatim downloads diffs until either no more diffs
446 are available on the server (i.e. the database is up-to-date) or the limit
447 given in this setting is exceeded. Nominatim guarantees to downloads at least
448 one diff, if one is available, no matter how small the setting.
450 The default for this setting is fairly conservative because Nominatim keeps
451 all data downloaded in one cycle in RAM. Using large values in a production
452 server may interfere badly with the search frontend because it evicts data
453 from RAM that is needed for speedy answers to incoming requests. It is usually
454 a better idea to keep this setting lower and run multiple update cycles
455 to catch up with updates.
457 When catching up in non-production mode, for example after the initial import,
458 the setting can easily be changed temporarily on the command line:
460 NOMINATIM_REPLICATION_MAX_DIFF=3000 nominatim replication
463 #### NOMINATIM_REPLICATION_UPDATE_INTERVAL
466 | -------------- | --------------------------------------------------- |
467 | **Description:** | Publication interval of the replication service (in seconds) |
468 | **Format:** | integer |
469 | **Default:** | 75 |
470 | **After Changes:** | restart the replication process |
472 This setting determines when Nominatim will attempt to download again a new
473 update. The time is computed from the publication date of the last diff
474 downloaded. Setting this to a slightly higher value than the actual
475 publication interval avoids unnecessary rechecks.
478 #### NOMINATIM_REPLICATION_RECHECK_INTERVAL
481 | -------------- | --------------------------------------------------- |
482 | **Description:** | Wait time to recheck for a pending update (in seconds) |
483 | **Format:** | integer |
484 | **Default:** | 60 |
485 | **After Changes:** | restart the replication process |
487 When replication updates are run in continuous mode (using `nominatim replication`),
488 this setting determines how long Nominatim waits until it looks for updates
489 again when updates were not available on the server.
491 Note that this is different from
492 [NOMINATIM_REPLICATION_UPDATE_INTERVAL](#nominatim_replication_update_interval).
493 Nominatim will never attempt to query for new updates for UPDATE_INTERVAL
494 seconds after the current database date. Only after the update interval has
495 passed it asks for new data. If then no new data is found, it waits for
496 RECHECK_INTERVAL seconds before it attempts again.
500 #### NOMINATIM_CORS_NOACCESSCONTROL
503 | -------------- | --------------------------------------------------- |
504 | **Description:** | Send permissive CORS access headers |
505 | **Format:** | boolean |
506 | **Default:** | yes |
507 | **After Changes:** | run `nominatim refresh --website` |
509 When this setting is enabled, API HTTP responses include the HTTP
510 [CORS](https://en.wikipedia.org/wiki/CORS) headers
511 `access-control-allow-origin: *` and `access-control-allow-methods: OPTIONS,GET`.
513 #### NOMINATIM_MAPICON_URL
516 | -------------- | --------------------------------------------------- |
517 | **Description:** | URL prefix for static icon images |
518 | **Format:** | url |
519 | **Default:** | _empty_ |
520 | **After Changes:** | run `nominatim refresh --website` |
522 When a mapicon URL is configured, then Nominatim includes an additional `icon`
523 field in the responses, pointing to an appropriate icon for the place type.
525 Map icons used to be included in Nominatim itself but now have moved to the
526 [nominatim-ui](https://github.com/osm-search/nominatim-ui/) project. If you
527 want the URL to be included in API responses, make the `/mapicon`
528 directory of the project available under a public URL and point this setting
532 #### NOMINATIM_DEFAULT_LANGUAGE
535 | -------------- | --------------------------------------------------- |
536 | **Description:** | Language of responses when no language is requested |
537 | **Format:** | language code |
538 | **Default:** | _empty_ (use the local language of the feature) |
539 | **After Changes:** | run `nominatim refresh --website` |
541 Nominatim localizes the place names in responses when the corresponding
542 translation is available. Users can request a custom language setting through
543 the HTTP accept-languages header or through the explicit parameter
544 [accept-languages](../api/Search.md#language-of-results). If neither is
545 given, it falls back to this setting. If the setting is also empty, then
546 the local languages (in OSM: the name tag without any language suffix) is
550 #### NOMINATIM_SEARCH_BATCH_MODE
553 | -------------- | --------------------------------------------------- |
554 | **Description:** | Enable a special batch query mode |
555 | **Format:** | boolean |
556 | **Default:** | no |
557 | **After Changes:** | run `nominatim refresh --website` |
559 This feature is currently undocumented and potentially broken.
562 #### NOMINATIM_SEARCH_NAME_ONLY_THRESHOLD
565 | -------------- | --------------------------------------------------- |
566 | **Description:** | Threshold for switching the search index lookup strategy |
567 | **Format:** | integer |
568 | **Default:** | 500 |
569 | **After Changes:** | run `nominatim refresh --website` |
571 This setting defines the threshold over which a name is no longer considered
572 as rare. When searching for places with rare names, only the name is used
573 for place lookups. Otherwise the name and any address information is used.
575 This setting only has an effect after `nominatim refresh --word-counts` has
576 been called to compute the word frequencies.
579 #### NOMINATIM_LOOKUP_MAX_COUNT
582 | -------------- | --------------------------------------------------- |
583 | **Description:** | Maximum number of OSM ids accepted by /lookup |
584 | **Format:** | integer |
585 | **Default:** | 50 |
586 | **After Changes:** | run `nominatim refresh --website` |
588 The /lookup point accepts list of ids to look up address details for. This
589 setting restricts the number of places a user may look up with a single
593 #### NOMINATIM_POLYGON_OUTPUT_MAX_TYPES
596 | -------------- | --------------------------------------------------- |
597 | **Description:** | Number of different geometry formats that may be returned |
598 | **Format:** | integer |
600 | **After Changes:** | run `nominatim refresh --website` |
602 Nominatim supports returning full geometries of places. The geometries may
603 be requested in different formats with one of the
604 [`polygon_*` parameters](../api/Search.md#polygon-output). Use this
605 setting to restrict the number of geometry types that may be requested
608 Setting this parameter to 0 disables polygon output completely.
612 #### NOMINATIM_LOG_DB
615 | -------------- | --------------------------------------------------- |
616 | **Description:** | Log requests into the database |
617 | **Format:** | boolean |
618 | **Default:** | no |
619 | **After Changes:** | run `nominatim refresh --website` |
621 Enable logging requests into a database table with this setting. The logs
622 can be found in the table `new_query_log`.
624 When using this logging method, it is advisable to set up a job that
625 regularly clears out old logging information. Nominatim will not do that
628 Can be used as the same time as NOMINATIM_LOG_FILE.
630 #### NOMINATIM_LOG_FILE
633 | -------------- | --------------------------------------------------- |
634 | **Description:** | Log requests into a file |
635 | **Format:** | path |
636 | **Default:** | _empty_ (logging disabled) |
637 | **After Changes:** | run `nominatim refresh --website` |
639 Enable logging of requests into a file with this setting by setting the log
640 file where to log to. The entries in the log file have the following format:
642 <request time> <execution time in s> <number of results> <type> "<query string>"
644 Request time is the time when the request was started. The execution time is
645 given in ms and corresponds to the time the query took executing in PHP.
646 type contains the name of the endpoint used.
648 Can be used as the same time as NOMINATIM_LOG_DB.