https://github.com/terriajs/terriajs-server
NodeJS server for TerriaJS, consisting of a CORS proxy, proj4 CRS lookup service, ogr2ogr conversion service, and express static server.
https://github.com/terriajs/terriajs-server
Last synced: about 1 year ago
JSON representation
NodeJS server for TerriaJS, consisting of a CORS proxy, proj4 CRS lookup service, ogr2ogr conversion service, and express static server.
- Host: GitHub
- URL: https://github.com/terriajs/terriajs-server
- Owner: TerriaJS
- License: other
- Created: 2016-01-06T12:39:33.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-04-12T00:11:32.000Z (about 2 years ago)
- Last Synced: 2024-04-12T05:17:10.803Z (about 2 years ago)
- Language: JavaScript
- Size: 1.13 MB
- Stars: 47
- Watchers: 21
- Forks: 39
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE.md
Awesome Lists containing this project
README
## TerriaJS-Server
[](https://greenkeeper.io/)
[](https://travis-ci.org/TerriaJS/terriajs-server)
--------------------
**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](https://docs.terria.io/guide/contributing/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](https://github.com/TerriaJS/TerriaJS)-based site (such as [National Map](http://nationalmap.gov.au)) 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/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`.
#### Run
1. `npm start -- [options] [path/to/wwwroot]`
```
terriajs-server.js [options] [path/to/wwwroot]
Options:
--help, -h Show this help. [boolean]
--version Show version number [boolean]
--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]
```
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](http://terria.io/Documentation). TerriaJS-Server is installed to `node_modules/terriajs-server`, and you can run it manually as `node_modules/terriajs-server ./wwwroot`.