blob: 04cdce059a2e3630e41337d0b0cd8ce93209196f [file] [edit]
.. _running_server:
Running a LNT Server
====================
We provide a Docker Compose service that brings up a LNT web server attached
to a Postgres database. To start the server, run::
docker compose -f docker/compose.yaml --env-file docker/dev.env up
Once the server is running, you are ready to submit data to it. See the section
on :ref:`importing data <importing_data>` for details.
The ``dev.env`` file provides default secrets suitable for local use. For your
own deployment, create an env file with your own values for ``LNT_DB_PASSWORD``
and ``LNT_AUTH_TOKEN``. Refer to the Docker Compose file for all available
environment variables.
Adding an Nginx Reverse Proxy
-----------------------------
To add an Nginx reverse proxy in front of the webserver (as done for the
lnt.llvm.org deployment), use the ``nginx`` profile::
docker compose -f docker/compose.yaml --profile nginx --env-file <env-file> up
This starts the Nginx service on port 80 (configurable via
``LNT_NGINX_EXTERNAL_PORT``) in addition to the database and webserver.
Running without Docker
----------------------
Running a ``lnt`` server outside Docker is possible too:
#. Install ``lnt`` as explained in the :ref:`installation section <installation>`.
#. Create a LNT installation::
lnt create path/to/installation
#. You can then run the server on that installation::
lnt runserver path/to/installation
Note that running the server in this way is not recommended for production, since
it runs a single-threaded Flask server instead of running behind ``gunicorn``.
Server Architecture
-------------------
The LNT web app is implemented as a Flask WSGI web app, with Jinja2 for the
templating engine. The database layer uses SQLAlchemy for its ORM, backed by
Postgres.