Skip to content

NodeJS server for TerriaJS, consisting of a CORS proxy, proj4 CRS lookup service, ogr2ogr conversion service, and express static server.

License

Notifications You must be signed in to change notification settings

zoran995/terriajs-server

This branch is 43 commits behind TerriaJS/terriajs-server:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d96739c · Nov 18, 2021
Aug 16, 2021
Nov 27, 2020
Nov 27, 2020
Aug 11, 2020
Jun 8, 2021
Nov 18, 2021
Jan 6, 2016
Nov 18, 2021
Nov 27, 2020
Jul 18, 2016
Nov 18, 2021
May 24, 2017
Aug 11, 2020
Nov 27, 2020
Nov 18, 2021

Repository files navigation

TerriaJS-Server

Greenkeeper badge

Build Status


We have just released a brand new version of Terria — verson 8!

We've put together a list of things we've removed from version 8 and some steps to help you migrate to the new version in our migration guide

Not ready to move to version 8 yet? You can find terriajs version 7 here: https://github.com/TerriaJS/terriajs/tree/terriajs7


This is a basic NodeJS Express server that serves up a (not included) static TerriaJS-based site (such as National Map) with a few additional useful services:

  • /api/v1/proxy: a proxy service which applies CORS headers for data providers that lack them. Add URLs to config.json to enable them.
  • /api/v1/proj4def: a proj4 coordinate reference system lookup service.
  • /api/v1/convert: an ogr2ogr server-side conversion service.
  • /api/v1/proxyabledomains: return a JSON of domains the server is willing to proxy for
  • /api/v1/ping: returns 200 OK.
  • /api/v1/share/X-Y (GET): uses prefix X to resolve key Y against some configured JSON storage provider (Gist and AWS S3 implemented)
  • /api/v1/share (POST): stores a piece of JSON with a configured storage provider (Gist implemented)
  • /api/v1/serverconfig: retrieve (safe) information about how the server is configured.
  • All other requests are served from the wwwroot directory you provide on the command line, which defaults to ./wwwroot
  • If files [wwwroot]/404.html and/or [wwwroot]/500.html exist, they will be served for those HTTP error codes.
  • Supports very simple authentication via a single username/password included in requests using HTTP basic authentication.
  • Proxied services that require HTTP authentication can be proxied by adding credentials to a proxyauth.json file.
  • It can be run in HTTPS mode, although there are better ways of doing that in production.

Generally, you don't want to manually install TerriaJS-Server. It comes installed with TerriaMap (see below).

Stand-alone installation (without serving TerriaMap)

Install

  1. git clone https://github.com/terriajs/terriajs-server
  2. cd terriajs-server
  3. npm install

Configure

Copy serverconfig.json.example to serverconfig.json and configure as needed. See comments inside that file. (Comments are allowed; see json5.org).

If you want to proxy authenticated layers, do the same for proxyauth.json.example.

TerriaJS-Server is run through PM2, a process manager which handles automatic restarting, logging and load balancing. The default configuration is for a development environment with a single process. To use multiple processes, modify the configuration in ecosystem.config.js.

Run

  1. npm start -- [options] [path/to/wwwroot]
terriajs-server.js [options] [path/to/wwwroot]

Options:
  --port         Port to listen on.                [default: 3001]      [number]
  --public       Run a public server that listens on all interfaces.
                                                       [boolean] [default: true]
  --config-file  File containing settings such as allowed domains to proxy. See
                 serverconfig.json.example
  --proxy-auth   File containing auth information for proxied domains. See
                 proxyauth.json.example
  --verbose      Produce more output and logging.     [boolean] [default: false]
  --help, -h     Show this help.                                       [boolean]

For example, to run with port 3009:

npm start -- --port 3009

To run the server in the foreground, you can do this:

node . [arguments as above]

Tests

  1. Run npm test

Installation with TerriaMap

Just install TerriaMap. TerriaJS-Server is installed to node_modules/terriajs-server, and you can run it manually as node_modules/terriajs-server ./wwwroot.

About

NodeJS server for TerriaJS, consisting of a CORS proxy, proj4 CRS lookup service, ogr2ogr conversion service, and express static server.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.9%
  • HTML 0.1%