.. SPDX-FileCopyrightText: 2022 The Tor Project, Inc.
..
.. SPDX-License-Identifier: CC0-1.0
.. _install:
Installation
============
System dependencies
--------------------
The following software must be installed:
- [tor]_ (last stable version is recommended, see [CoreTorReleases]_)
To use only exits that implement congestion control, tor >= 0.4.7.4-alpha-dev
- [PostgreSQL]_ ([libpq-dev]_)
- [Python3]_ (>= 3.7)
Additionally, a PostgreSQL database is needed
(see :ref:`Create-the-database`) and a system user with HOME to store the
configuration, logs and other data.
There are example scripts to install and run ``onbrisca`` at
`./deploy_onbrisca `_.
Python dependencies
--------------------
The version of the following dependencies might be unupdated.
The list of updated versions is in the [setup.cfg]_ file.
- [aiohttp]_ >= 3.7, only in the case of installing ``onbrisca``
- [aiohttp-socks]_ >= 0.5, only in the case of installing ``onbrisca``
- [colorlog]_ >= 4.7
- [Django3]_ or [Django_4.1]_ only in the case of installing ``onbrisca``
- [gunicorn]_ >= 2.1, only in the case of installing ``onbrisca``
- [Psycopg2]_ >= 2.8
- [stem]_ >= 1.8.0
- [requests]_ (with [socks]_ support) >= 2.10.0
- [toml]_ >= 0.10
It is recommend to install the dependencies from your system package manager.
As of February 2023, the following dependencies can be install from Debian
bullseye by an user with root permissions::
apt install python3-stem python3-aiohttp-socks python3-psycopg2 \
python3-requests python3-toml python3-virtualenv
[Django_4.1]_ is not available in Debian stable, as well as the versions of
two of its dependencies: ``asigref`` and ``python-socks``.
For ``onbrisca`` see also the script at
`./deploy_onbrisca/install_root.sh `_ .
Installation from source
------------------------
At the moment, there're no system packages for ``onbasca`` and it must be
install from source.
A system user with HOME can install ``onbasca`` with the following steps:
Clone ``onbasca``::
git clone https://gitlab.torproject.org/tpo/network-health/onbasca.git
git checkout $(git describe --abbrev=0 --tags)
(``git describe --abbrev=0 --tags`` provides the latest stable version which
should be used in production)
If you're installing ``onbasca`` for development or testing, it's recommend to
install all the dependencies and packages in a [virtualenv]_.
To create a virtualenv using the already installed system packages::
virtualenv --system-site-packages
source
After creating and activating the virtualenv you can install the dependencies
with the command::
cd onbasca
pip install .
If the virtualenv was created with ``--system-site-packages`` option, only
[Django_4.1]_, ``python-socks`` and ``asgiref`` (>=3.6) should be install
from [PyPI]_.
.. note:: In Debian, ``python3-python-sock`` is a different package than
``python3-socks``.
See also the script at
`./deploy_onbrisca/install_onbrisca.sh `_ .
.. _create-the-database:
Create the database
-------------------
In a Debian system with root permissions::
su postgres
psql
create user with password '';
create database ;
grant all privileges on database to ;
See also the script at
`./deploy_onbrisca/install_root.sh `_ .
Database configuration and initialization
-----------------------------------------
After having a database for ``onbasca``, set the credentials in either
``onbascapr/settings/local.py`` (if installing the relay bandwidth scanner) or
``onbriscapr/settings/local.py`` (if installing the bridge bandwidth scanner).
There's an example file that you can copy and customize at
`./deploy_onbrisca/local.py `_.
After that, create the database schema for ``onbasca`` running::
./manage.py makemigrations onbasca
Or for ``onbrisca`` running::
./manage_onbrisca.py makemigrations onbasca
./manage_onbrisca.py makemigrations onbrisca
Then create the tables::
./manage.py migrate
See also the script at
`./deploy_onbrisca/install_onbrisca.sh `_ .
Configuration
-------------
A ``config.toml`` is needed.
In the case of ``onbasca`` place it in $HOME/.onbasca/.
In the case of ``onbrisca`` place it in $HOME/.onbrisca/.
For ``onbrisca``, there is an example file at
`./deploy_onbrisca/config.toml `_ .
When ``onbrisca`` is configured to use specific middle relays (the default),
it is also needed to place a file call ``middles.txt`` in ``$HOME/.onbrisca/``.
This file will have a middle relay fingerprint by line.
For ``onbasca``, see :ref:`deploy`.
Run the scanner and the generator for development
-------------------------------------------------
To run the scanner and the generator::
./manage.py scan
./manage.py generate
or::
./scan.py
./generate.py
Run the bridge scanner for development
--------------------------------------
To run the bridge scanner::
./manage_onbrisca bridgescan
or::
./bridgescan.py
To run the development Web API server::
./manage_onbrisca runserver
Run the scanner and the generator for production
-------------------------------------------------
See ``_ (in the local directory or Tor Project Gitlab)
or ``_ (local build).
Run the bridge scanner for production
--------------------------------------
It's recommended to create systemd units to run both the scanner and the Web
API server.
There're example systemd files at
`./deploy_onbrisca/systemd/user `_
and how to launch them at
`./deploy_onbrisca/start.sh `_ .