2023-09-06 22:54:12 +00:00
# signal-cli
2023-09-06 23:11:40 +00:00
First and foremost a big thank you to AsamK(https://github.com/AsamK) most of this guide is copied from AsamK's signal-cli repo modified to fit my own needs.
2023-09-06 22:54:12 +00:00
This guide is for installing and running signal-cli as a daemon and setting up a system-wide dbus.
signal-cli is a commandline interface for the [Signal messenger ](https://signal.org/ ).
It supports registering, verifying, sending and receiving messages.
signal-cli uses a [patched libsignal-service-java ](https://github.com/Turasa/libsignal-service-java ),
extracted from the [Signal-Android source code ](https://github.com/signalapp/Signal-Android/tree/main/libsignal/service ).
For registering you need a phone number where you can receive SMS or incoming calls.
2023-09-06 20:51:43 +00:00
2023-09-06 22:54:12 +00:00
## Installation
System requirements:
- at least Java Runtime Environment (JRE) 17
- wget
2023-09-06 23:17:48 +00:00
Debian/Ubuntu:
2023-09-06 22:54:12 +00:00
```sh
2023-09-06 23:17:48 +00:00
$ sudo apt install wget openjdk-17-jre
2023-09-06 22:54:12 +00:00
```
### Install system-wide on Linux
See [latest version ](https://github.com/AsamK/signal-cli/releases ).
```sh
2023-09-06 23:17:48 +00:00
$ export VERSION=< latest version , format " x . y . z " >
$ wget https://github.com/AsamK/signal-cli/releases/download/v"${VERSION}"/signal-cli-"${VERSION}"-Linux.tar.gz
$ sudo tar xf signal-cli-"${VERSION}"-Linux.tar.gz -C /opt
$ sudo ln -sf /opt/signal-cli-"${VERSION}"/bin/signal-cli /usr/local/bin/
2023-09-06 22:54:12 +00:00
```
## Initial Setup
2023-09-06 23:17:48 +00:00
Create user for running the service, --system creates a system user without home dir and password. :
2023-09-06 22:54:12 +00:00
```sh
# adduser --system --group signal-cli
```
Create a folder for signal account configs:
```sh
# mkdir /var/lib/signal-cli
# chown signal-cli: /var/lib/signal-cli
```
## Register Account
```sh
# su signal-cli -s /bin/bash
2023-09-06 23:11:40 +00:00
$ /usr/local/bin/signal-cli --config /var/lib/signal-cli -u < PHONE NUMBER > register
2023-09-06 22:54:12 +00:00
```
Registering may require solving a CAPTCHA challenge: [Registration with captcha ](https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha )
Verify the number using the code received via SMS or voice, optionally add `--pin PIN_CODE` if you've added a pin code to your account:
```sh
signal-cli$ /usr/local/bin/signal-cli --config /var/lib/signal-cli -u < PHONE NUMBER > verify < CODE >
```
## Setup systemd service and dbus
To run on the system bus you need to take some additional steps. It’ s advisable to run signal-cli as a separate unix user, the following steps assume you created a user named signal-cli. To run a service on the system bus, a config file is needed to allow the signal-cli user to take a name on the system bus. An example config file can be found in data/org.asamk.Signal.conf. This file also configures that any user can talk with the signal-cli daemon. The data/org.asamk.Signal.service and data/signal-cli.service files configure a dbus activated systemd service for signal-cli, so the service is automatically started when the dbus service is requested.
Git clone this repo as you will need files from the data folder.
```sh
2023-09-06 23:11:40 +00:00
git clone https://git.data.coop/sune/Signal-cli.git
2023-09-06 22:54:12 +00:00
```
2023-09-06 23:17:48 +00:00
These steps, executed as root, should work on all distributions using systemd.
Move the files:
2023-09-06 22:54:12 +00:00
```sh
# mv data/org.asamk.Signal.conf /etc/dbus-1/system.d/
# mv data/org.asamk.Signal.service /usr/share/dbus-1/system-services/
# mv data/signal-cli.service /etc/systemd/system/
```
2023-09-06 23:17:48 +00:00
Edit service file to match phone number and enable systemd service:
2023-09-06 22:54:12 +00:00
```sh
2023-09-06 23:11:40 +00:00
# sed -i -e "s|%number%|<PHONE NUMBER>|" /etc/systemd/system/signal-cli.service
# systemctl daemon-reload
# systemctl enable signal-cli.service
# systemctl reload dbus.service
# systemctl start signal-cli.service
```
## Test
Send a message:
```sh
$ signal-cli --dbus-system send -m "hey test" < RECIPIENT >
2023-09-06 22:54:12 +00:00
```