diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/administration/configuration.rst | 197 | ||||
| -rw-r--r-- | doc/administration/installation.rst | 12 | 
2 files changed, 167 insertions, 42 deletions
diff --git a/doc/administration/configuration.rst b/doc/administration/configuration.rst index 5268903..feb3e40 100644 --- a/doc/administration/configuration.rst +++ b/doc/administration/configuration.rst @@ -36,51 +36,164 @@ Most of the configuration is in the ``[app:main]`` category and looks like this:      sqlalchemy.url = sqlite:///%(here)s/fietsboek.sqlite      fietsboek.data_dir = %(here)s/data +    redis.url = redis://localhost/      retry.attempts = 3 -* You should leave the ``use``, ``pyramid.reload_templates`` and -  ``pyramid.debug_*`` settings as they are. -* ``pyramid.default_locale_name`` can be used to set the default language of -  the installation. Note that Fietsboek will try to detect the user's language, -  so the ``default_locale_name`` is used as a fallback. -* ``available_locales`` sets the list of available languages. Currently, -  Fietsboek ships with English ("en") and German ("de"). Removing a language -  from this list will make it unavailable. If you create a custom language -  locally, make sure to add it to this list here! -* ``enable_account_registration`` can be used to enable and disable the -  creation of new accounts via the web interface, for example if you want to -  have a private instance. New accounts can always be created using the CLI -  management tool. -* ``session_key`` should be set to a random string of characters. This is the -  key used to sign session data, so it should not get into wrong hands! -* ``sqlalchemy.url`` is the URL to the database. See the `SQLAlchemy -  documentation -  <https://docs.sqlalchemy.org/en/14/core/engines.html#database-urls>`__ for -  more information. -* ``fietsboek.data_dir`` sets the directory for data uploads. This directory -  must be writable by the Fietsboek process, as Fietsboek will save track -  images in there. -* ``fietsboek.pages`` see :doc:`custom-pages`. -* ``email.from`` sets the sender of emails, for example for account verifications. -* ``email.smtp_url`` sets the URL of the SMTP server. The following formats are accepted: - -  * ``debug://`` a debug implementation that simply prints emails to the -    standard output. Should not be used in production, as no emails would ever -    arrive. -  * ``smtp://host:port`` use the given SMTP server (without transport encryption!) -  * ``smtp+ssl://host:port`` use the given SMTP server over a SSL connection -  * ``smtp+starttls://host:port`` use the given SMTP server and the STARTTLS -    command to start an encrypted channel. - -* ``email.username`` and ``email.password`` can be used to set the login -  information for the SMTP server. -* ``thunderforest.api_key`` can be set to an API key of `Thunderforest -  <https://www.thunderforest.com/>`__ to enable support for the OpenCycleMap, -  Landscape and Outdoors maps. +General Settings +---------------- +Use ``enable_account_registration`` enable or disable the creation of new +accounts via the web interface, for example if you want to have a private +instance. New accounts can always be created using the CLI management tool. + +Set ``session_key`` to a random string of characters. This is the key used to +sign session data, so it should not get into wrong hands! + +You can set up custom pages using ``fietsboek.pages``. See :doc:`custom-pages` +for more information. + +Pyramid Settings +---------------- + +You should leave the ``use``, ``pyramid.reload_templates`` and +``pyramid.debug_*`` settings as they are. Refer to the `Pyramid documentation +<https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html>`__ +for more information. + +Language Settings +----------------- + +You can set the default language with the ``pyramid.default_locale_name`` +setting. Note that Fietsboek will try to detect the user's language, so the +``default_locale_name`` is used as a fallback. + +You can use ``available_locales`` to set the list of available languages. +Currently, Fietsboek ships with English ("en") and German ("de"). Removing a +language from this list will make it unavailable. If you create a custom +language locally, make sure to add it to this list here! + +Database Settings +----------------- + +Fietsboek uses three different databases: +A SQL database for persistent data (like user accounts), a file storage on the +disk for big files (like images), and a redis server for ephemeral data (like +cached tiles). + +Set ``sqlalchemy.url`` to the URL of the SQL database. See the `SQLAlchemy +documentation +<https://docs.sqlalchemy.org/en/14/core/engines.html#database-urls>`__ for more +information on available URL formats. Make sure to install the driver necessary +to communicate with your database (e.g. ``psycopg2`` for PostreSQL)! + +Set ``fietsboek.data_dir`` to the directory for data uploads. This directory +must be writable by the Fietsboek process, as Fietsboek will save track images +in there. + +Set ``redis.url`` to the URL of the redis instance. See the `redis module +documentation +<https://redis.readthedocs.io/en/latest/connections.html#redis.Redis.from_url>`__ +for information about the possible syntaxes of this URL. Note that the redis +server is only used for caching and temporary data, so don't sweat to make it +persistent. A container running redis is fine. + +.. note:: + +    Fietsboek will cache map tiles in the redis server. +    To avoid using up too much memory, consider setting a maximum memory size +    and policy in redis: + +    https://redis.io/docs/management/config/#configuring-redis-as-a-cache + +Email Settings +-------------- + +Use ``email.from`` to set the sender of emails, for example for account verifications. + +Set ``email.smtp_url`` to the URL of the SMTP server. The following formats are +accepted: + +* ``debug://`` a debug implementation that simply prints emails to the +  standard output. Should not be used in production, as no emails would ever +  arrive. +* ``smtp://host:port`` use the given SMTP server (without transport encryption!) +* ``smtp+ssl://host:port`` use the given SMTP server over a SSL connection +* ``smtp+starttls://host:port`` use the given SMTP server and the STARTTLS +  command to start an encrypted channel. + +Use ``email.username`` and ``email.password`` to set the login credentials for +the SMTP server. + +Map Layers & Thunderforest Integration +-------------------------------------- + +By default, Fietsboek offers the following map layers: + +* ``osm``: `OpenStreetMap <https://www.openstreetmap.org>`__ +* ``osmde``: `OpenStreetMap Deutschland <https://www.openstreetmap.de/>`__ +* ``satellite``: Satellite imaging from `Esri <https://www.esri.com>`__ +* ``opentopo``: `OpenTopoMap <https://opentopomap.org/>`__ +* ``topplusopen``: `TopPlus-Open +  <https://www.bkg.bund.de/SharedDocs/Produktinformationen/BKG/EN/P-2017/171114-TopPlus-Web-Open.html>`__ + +As well as the following overlay layers: + +* ``opensea``: `OpenSeaMap <https://openseamap.org>`__ +* ``cycling``: `Waymarked Trails: Cycling <https://cycling.waymarkedtrails.org>`__ +* ``hiking``: `Waymarked Trails: Hiking <https://hiking.waymarkedtrails.org/>`__ + +You can use ``fietsboek.default_tile_layers`` to set the list of activated +layers (by default, all of them), for example: + +.. code:: ini + +    fietsboek.default_tile_layers = osm osmde cycling + +You can enable `Thunderforest <https://www.thunderforest.com>`__ support by +setting ``thunderforest.api_key``, and ``thunderforest.maps`` to a list of +Thunderforest maps (e.g. "cycle" or "landscape"). By default, only logged in +users will be able to use the Thunderforest maps (to protect your quota), this +can be changed by setting ``thunderforest.access = public`` (default is +"restricted"). + +You can add custom tile layers in the following way: + +.. code:: ini + +    fietsboek.tile_layer.ID = My Custom Layer +    fietsboek.tile_layer.ID.url = https://tiles.example.com/{z}/{x}/{y}.png +    # Optional, set the type (base or overlay), default base +    fietsboek.tile_layer.ID.type = base +    # Optional, set the maximum zoom factor, default 22 +    fietsboek.tile_layer.ID.zoom = 22 +    # Optional, set the attribution +    fietsboek.tile_layer.ID.attribution = Copyright Example +    # Optional, set the access restriction (public or restricted), default +    # public +    fietsboek.tile_layer.ID.access = public + +``ID`` must be an alphanumerical identifier. + +By default, Fietsboek will proxy all tile requests through the Fietsboek +instance. While this can slow down the user experience, it has the following +benefits: + +* Your users' IPs stay private and protected, as no third party is contacted. +  The tile servers will only see the IP from the Fietsboek server. +* If you use private tile servers or servers that require a key, your key is +  protected as it will not be given out to the users. +* Fietsboek caches tile requests, which reduces the strain on the providers and +  might even make maps faster if many people use them. + +You can disable the tile proxy by setting ``fietsboek.tile_proxy.disable = +true``. This will cause the tiles to be loaded directly by the client.  .. warning:: -    The API key will be embedded in the source of the website, therefore it is -    possible for visitors to "steal" the API key. Keep that in mind when -    setting an API key for a publicly accessible site! +    If you disable the tile proxy, all tile source URLs will be given to the +    user. If you use API keys or other private sources, **those keys will be +    leaked to the users**. + +    In addition, depending on the jurisdiction, you might be required to tell +    your users that third party content is included in your site, and that +    their IP will be accessible to the third party. diff --git a/doc/administration/installation.rst b/doc/administration/installation.rst index b8ede06..4af0941 100644 --- a/doc/administration/installation.rst +++ b/doc/administration/installation.rst @@ -3,6 +3,18 @@ Installation  This document will outline the installation process of Fietsboek, step-by-step. +Requirements +------------ + +Fietsboek has the following requirements (apart from the Python modules, which +will be installed by ``pip``): + +* Python 3.7 or later +* A `redis <https://redis.com/>`__ server, used for caching and temporary data +* (Optionally) an SQL database server like `PostgreSQL +  <https://www.postgresql.org/>`__ or `MariaDB <https://mariadb.org/>`__ (if +  SQLite is not enough) +  Creating an Environment  -----------------------  | 
