Standalone

Standalone installation might be useful for environments where Docker is not suitable.

Install signal-cli

Either install signal-cli w/ DBus using packaging/signal-cli or from upstream signal-cli Releases.

  • create a dedicated user: useradd -r -s /usr/sbin/nologin -m -d /var/lib/signal-cli signal-cli
  • follow signal-cli installation instructions
    • for all actions using the cli, please run as signal-cli user (sudo -u signal-cli -H signal-cli ...)
  • setup the system dbus service
    • make sure ExecStart in signal-cli.service looks like this:
      • ExecStart=%your-installation-dir%/bin/signal-cli -a %your_phonenumber% daemon --system

Install signal-cli-dbus-rest-api

When signal-cli has been installed and setup properly to send messages via DBus, you can install the gateway:

System packages

  • apt-get install python3-virtualenv python3-pydbus python3-dbus python3-magic

Create virtualenv

Virtualenv needs access to system site-packages (DBus bindings).

  • sudo -u signal-cli -i bash -c 'python3 -m virtualenv -p /usr/bin/python3 "${HOME}"/venv --system-site-packages'

Install signal-cli-dbus-rest-api

  • sudo -u signal-cli -i bash -c '"${HOME}"/venv/bin/pip install signal-cli-dbus-rest-api'

Install SystemD units

curl -L "https://gitlab.com/morph027/signal-cli-dbus-rest-api/-/raw/main/contrib/systemd/signal-cli-dbus-rest-api@.service" > "/etc/systemd/system/signal-cli-dbus-rest-api@.service"
systemctl enable --now "signal-cli-dbus-rest-api@$(systemd-escape <your_phonenumber>).service"
curl -L "https://gitlab.com/morph027/signal-cli-dbus-rest-api/-/raw/main/contrib/systemd/signal-cli-dbus-rest-api.service" > /etc/systemd/system/signal-cli-dbus-rest-api.service
systemctl enable --now signal-cli-dbus-rest-api.service

Configure signal-cli-dbus-rest-api

Configuration can be done in /etc/default/signal-cli-dbus-rest-api. For possible values, see Configuration

Install reverse proxy

It is advised to setup a reverse proxy in front of the gateway to add TLS, authentication and so on. As there are plenty of proxies or webservers: nginx, apache, caddy, traefik,…), just pick your favourite.