This is a SaltyRTC server implementation for Python 3.6 or 3.7 using asyncio. (Note that currently Python 3.8+ is not supported! We recommend using Python 3.7.)
On machines where Python 3 is not the default Python runtime, you should
use pip3 instead of pip.
sudo apt-get install python3 python3-pipWe recommend using venv to create an isolated Python environment:
pyvenv venvYou can switch into the created virtual environment venv by running this command:
source venv/bin/activateWhile the virtual environment is active, all packages installed using
pip will be installed into this environment.
To deactivate the virtual environment, just run:
deactivateIf you want easier handling of your virtualenvs, you might also want to take a look at virtualenvwrapper.
If you are using a virtual environment, activate it first.
Install the module by running:
pip install saltyrtc.serverThe dependency libnacl will be installed automatically. However, you
may need to install libsodium for libnacl to work.
The script saltyrtc-server will be automatically installed and
provides a command line interface for the server.
Run the following command to see detailed usage information:
saltyrtc-server --helpAll command line options are also available as environment variables by prefixing them with SALTYRTC_SERVER_ and the upper case command name, followed by the option name in upper case. For example: SALTYRTC_SERVER_SERVE_PORT=8765.
Generate a new private permanent key:
saltyrtc-server generate /path/to/permanent-keyRun the following command to start the server on any address with port 8765:
saltyrtc-server serve \
-p 8765 \
-tc /path/to/x509-certificate \
-tk /path/to/key \
-k /path/to/permanent-keyAlternatively, provide the options via environment variables:
export SALTYRTC_SERVER_SERVE_PORT=8765 \
SALTYRTC_SERVER_SERVE_TLSCERT=/path/to/x509-certificate \
SALTYRTC_SERVER_SERVE_TLSKEY=/path/to/key \
SALTYRTC_SERVER_SERVE_KEY=/path/to/permanent-key
saltyrtc-server serveYou can also use our official Docker images to run the server:
docker run \
-v /path/to/cert-and-keys:/var/saltyrtc \
-p 8765:8765
-it saltyrtc/saltyrtc-server-python:<tag> serve \
-p 8765 \
-tc /var/saltyrtc/x509-certificate \
-tk /var/saltyrtc/key \
-k /var/saltyrtc/permanent-keyThe above command maps port 8765 of the server within the container to port 8765 on the host machine.
Of course it is also possible to use environment variables to provide the options, as explained in the previous section.
If you want to contribute to this project, you should install the
optional dev requirements of the project in an editable environment:
git clone https://github.com/saltyrtc/saltyrtc-server-python.git
cd saltyrtc-server-python
pip install -e .[dev]Before creating a pull request, it is recommended to run the following
commands to check for code style violations (flake8), optimise
imports (isort), do a static type analysis and run the project's tests:
flake8 .
isort .
MYPYPATH=${PWD}/stubs mypy saltyrtc examples
py.testPlease report security issues directly to one or both of the following contacts:
- Danilo Bargen
- Email: [email protected]
- Threema: EBEP4UCA
- GPG: EA456E8BAF0109429583EED83578F667F2F3A5FA
- Lennart Grahl
- Email: [email protected]
- Threema: MSFVEW6C
- GPG: 3FDB14868A2B36D638F3C495F98FBED10482ABA6