Introduction ============ OpenADMS Server stores observations, log messages, and heartbeats from OpenADMS Node instances or 3rd party applications. In order to run an instance, install * `PostgreSQL `_ 11 (or higher), and * `nginx `_ or `OpenResty `_. PostgreSQL is used as a JSONB-based document store, and nginx as an HTTP front-end. Additional software is not required to provide the REST interfaces, as nginx will access the PostgreSQL database directly. A traditional web application written in Python 3 might require an infrastructure similar to the following one to make calls to a database backend: :: +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ | | | | | | | | | | | | | | | nginx +-->| uWSGI +-->| Python +-->| Falcon +-->| App +-->| Psycopg |-->| PostgreSQL | | | | | | | | | | | | | | | +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ In contrast, the nginx module ``ngx_postgres`` provides direct access to PostgreSQL: :: +------------+ +------------+ +------------+ | | | | | | | nginx +-->|ngx_postgres|-->| PostgreSQL | | | | | | | +------------+ +------------+ +------------+ The server can either return data in JSON or CSV format, depending on the HTTP accept header sent by the client. Instead of PostgreSQL and nginx, the `Apache CouchDB `_ NoSQL database can be used to store observations. Read/write access is provided by a built-in HTTP server. For security reasons, it is still recommended to run a reverse proxy with TLS like nginx in front of the service.