init commit

This commit is contained in:
Sune 2023-09-07 00:54:12 +02:00
parent f9bf58862d
commit 30d8fd5888
4 changed files with 113 additions and 1 deletions

View File

@ -1,2 +1,76 @@
# Signal-cli
# signal-cli
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.
## Installation
System requirements:
- at least Java Runtime Environment (JRE) 17
- wget
```sh
debian: $ sudo apt install wget openjdk-17-jre
```
### Install system-wide on Linux
See [latest version](https://github.com/AsamK/signal-cli/releases).
```sh
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/
```
## Initial Setup
Create user for running the service, --systen creates a system user without home dir and password. :
```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
signal-cli$ /usr/local/bin/signal-cli --config /var/lib/signal-cli -u <PHONE NUMBER> register
```
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. Its 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.
These steps, executed as root, should work on all distributions using systemd.
Git clone this repo as you will need files from the data folder.
```sh
git clone
```
move the files:
```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/
```
edit service file to match phone number and enable systemd service:
```sh
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
```

View File

@ -0,0 +1,16 @@
<?xml version="1.0"?> <!--*-nxml-*-->
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="signal-cli">
<allow own="org.asamk.Signal"/>
<allow send_destination="org.asamk.Signal"/>
<allow receive_sender="org.asamk.Signal"/>
</policy>
<policy context="default">
<allow send_destination="org.asamk.Signal"/>
<allow receive_sender="org.asamk.Signal"/>
</policy>
</busconfig>

View File

@ -0,0 +1,4 @@
[D-BUS Service]
Name=org.asamk.Signal
Exec=/bin/false
SystemdService=dbus-org.asamk.Signal.service

18
data/signal-cli.service Normal file
View File

@ -0,0 +1,18 @@
[Unit]
Description=Send secure messages to Signal clients
Requires=dbus.socket
After=dbus.socket
Wants=network-online.target
After=network-online.target
[Service]
Type=dbus
Environment="SIGNAL_CLI_OPTS=-Xms2m"
ExecStart=signal-cli --config /var/lib/signal-cli --trust-new-identities=always -u %number% daemon --system
User=signal-cli
BusName=org.asamk.Signal
# JVM always exits with 143 in reaction to SIGTERM signal
SuccessExitStatus=143
[Install]
Alias=dbus-org.asamk.Signal.service