インストール - Signal Desktop

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

Signal Desktopは、AndroidやiOSのSignalとリンクし、Windows、macOS、LinuxのPCからメッセージを送受信することができる。


Signalのインストール (x64向け)

リポジトリを追加してインストール

Signal Desktopの公式のソフトウェア署名キーをインストールする。

wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null


Signal Desktopのリポジトリを追加する。

echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' |\
sudo tee /etc/apt/sources.list.d/signal-xenial.list


パッケージデータベースを更新して、Signal Desktopをインストールする。

sudo apt update
sudo apt install signal-desktop


ソースコードからインストール

Signal Desktopに必要な依存関係のライブラリをインストールする。

# SUSE
sudo zypper install make cmake gcc g++ python3 ruby


NodeJSの公式Webサイトから、Signal Desktopに必要なNodeJSのバージョンをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf node-v<バージョン>-linux-<アーキテクチャ名>.tar.xz


~/.profileファイル等に、NodeJSの環境変数PATHを追記する。

vi ~/.profile


~/.profileファイル

export PATH="/<NodeJSのインストールディレクトリ>/bin:$PATH"


Signal DesktopのGithubにアクセスして、ソースコードをダウンロードする。
または、git cloneコマンドを実行して、Signal desktopのソースコードをダウンロードする。

git clone --depth 1 https://github.com/signalapp/Signal-Desktop.git -b <ブランチ名  例: 6.25.x>


必要ならば、yarnをインストールする。

npm install --global yarn


Signal Desktopのビルドに必要な依存関係のライブラリをインストールする。
この操作は、時間が掛かることに注意する。 (QEMU Staticを使用してAArch64向けに行う場合、55分程度掛かった)

yarn install --frozen-lockfile


上記のコマンドを実行した時、以下に示すようなエラーが出力される場合がある。

An unexpected error occurred: "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz: ESOCKETTIMEDOUT"


この時、yarn設定またはnpm設定のstrict-sslを無効にして、再度、yarnコマンドを実行する。

yarn config set "strict-ssl" false -g
# または
npm config set "strict-ssl" false -g
# または (strict-sslを無効にしたくない場合)
yarn config set registry https://registry.npmjs.org

yarn install --frozen-lockfile


上記のコマンドを実行した時、以下に示すようなエラーが出力される場合がある。

Error: Could not detect abi for version XX.X.X and runtime electron. Updating "node-abi" might help solve this issue if it is a new release of electron


この時、以下の手順に従う。

  • 方法 1
    1. まず、node_modulesディレクトリ、yarn.lockファイル、package-lock.jsonファイルを削除する。
    2. 次に、npm installコマンドを実行する。

  • 方法 2
    1. yarn.lockファイル内にあるnode-abiのエントリーを削除する。


上記のコマンドを実行した時、以下に示すようなエラーが出力される場合がある。

"ENOSPC: no space left on device, write"


この時、df -hコマンドを実行して、ディスクスペースの空きが存在するかどうかを確認する。

最終的なJSとCSSアセットを生成する。

yarn generate


必要であれば、Signal Desktopをテストを実行して確認する。

yarn test


Signal Desktopのリリースビルドを実行する。
この時、リリースファイルは、/<Signal Desktopのソースコードディレクトリ>/release/linux-unpackedディレクトリに保存される。

yarn run build:release


もし、リリースビルドを実行せずに、Signal Desktopを実行する場合は、以下に示すコマンドを実行する。

yarn start


ビルド完了後、不要なキャッシュファイルを削除する。
(サイズが大きいためストレージのスペースを逼迫するため)

yarn cache clean
rm -rf /<Signal Desktopのソースコードがあるディレクトリ>/node_modules


Signal Desktopのデスクトップエントリファイルを作成する。

vi ~/.local/share/applications/Signal-Dekstop.desktop


 # ~/.local/share/applications/Signal-Dekstop.desktop
 
 [Desktop Entry]
 Type=Application
 Name=Signal Desktop
 GenericName=Signal
 Comment=Private messaging from your desktop
 Exec=/<Signal Desktopのインストールディレクトリ>/signal-desktop --no-sandbox %U
 Icon=signal-desktop
 Categories=Network;InstantMessaging;Chat;
 Terminal=false
 StartupWMClass=Signal


Snap Craftからインストール

EPELリポジトリを追加する。

# RHEL 8の場合
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf upgrade


オプショナルリポジトリとエクストラリポジトリの追加も推奨される。

sudo subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
sudo dnf update


Snapをインストールする。

sudo yum install snapd


Snap通信ソケットを管理するSystemdサービスユニットを有効にする。

sudo systemctl enable --now snapd.socket


クラシックスナップサポートを有効にする場合は、/var/lib/snapd/snapと/snapの間にシンボリックリンクを作成する。

sudo ln -s /var/lib/snapd/snap /snap


再ログインする、または、PCを再起動して、Snapのパスが正しく更新されていることを確認する。

Signal Desktopをインストールする。

sudo snap install signal-desktop


バイナリファイルをダウンロード (Mobianのみ)

有志のGitLabからMobian向けSignal Desktopのバイナリファイルをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf signal-desktop_<バージョン>.tar.xz
mv signal-desktop_<バージョン> Signal-Desktop


解凍したファイルを任意のディレクトリに移動する。

mv Signal-Desktop <任意のインストールディレクトリ>


Signal Desktopのデスクトップエントリファイルを作成する。

vi ~/.local/share/applications/Signal-Dekstop.desktop


 # ~/.local/share/applications/Signal-Dekstop.desktop
 
 [Desktop Entry]
 Type=Application
 Name=Signal Desktop
 GenericName=Signal
 Comment=Private messaging from your desktop
 Exec=/<Signal Desktopのインストールディレクトリ>/signal-desktop --no-sandbox %U
 Icon=signal-desktop
 Categories=Network;InstantMessaging;Chat;
 Terminal=false
 StartupWMClass=Signal



Signalのインストール (AArch64向け)

バイナリをダウンロードしてインストール (Mobian向け)

まず、有志が作成したSignal DesktopをGitLabからダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf signal-desktop_<バージョン>.tar.xz
mv signal-desktop_<バージョン> Signal-Desktop


必要ならば、Signal Desktopを任意のディレクトリに配置する。

mv Signal-Desktop <任意のインストールディレクトリ>


Signal Desktopのデスクトップエントリファイルを作成する。

vi ~/.local/share/applications/Signal-Dekstop.desktop


 # ~/.local/share/applications/Signal-Dekstop.desktopファイル
 
 [Desktop Entry]
 Type=Application
 Name=Signal Desktop
 GenericName=Signal
 Comment=Private messaging from your desktop
 Exec=/<Signal Desktopのインストールディレクトリ>/signal-desktop --no-sandbox %U
 Icon=/<Signal Desktopのインストールディレクトリ>/icons/128x128.png
 Categories=Network;InstantMessaging;Chat;
 Terminal=false
 StartupWMClass=Signal


ソースコードからインストール

Signal Desktopのビルドに必要なライブラリをインストールする。

# Manjaro ARM
sudo pacman -S --needed make cmake gcc g++ python3 ruby git-lfs libnotify nss libnss_nis libxtst libxss alsa-lib

# Mobian
sudo apt install wget curl pkg-config build-essential make cmake gcc g++ python3 tcl ruby ruby-dev generate-ninja ninja-build \
                 clang llvm lld clang-tools git git-lfs \
                 libffi-dev libssl-dev libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 libx11-xcb1 libgdk-pixbuf-2.0-0 libgtk-3-0 \
                 libdrm2 libgbm1


まず、有志が作成したSignal Desktop BuilderをGitLabからクローンする。

git clone https://gitlab.com/undef1/signal-desktop-builder.git
cd signal-desktop-builder


次に、Signal DesktopのGithubにアクセスして、ソースコードをダウンロードする。
または、git cloneコマンドを実行して、Signal desktopのソースコードをダウンロードする。

git clone --depth 1 https://github.com/signalapp/Signal-Desktop.git -b <ブランチ名  例: 6.25.x>
cd Signal-Desktop


Git LFSをインストールする。

git-lfs install


任意ではあるが、Gitの初期設定を行う。

git config --global user.name name
git config --global user.email name@example.com


Signal Desktopのソースコードにパッチを当てる。

git am ../patches/0001-Minimize-gutter-on-small-screens.patch
git am ../patches/0001-reduce-minimum-dimensions-to-allow-for-mobile-screen.patch
git am ../patches/0001-Always-return-MIN_WIDTH-from-storage.patch


AArch64向けのビルドでは、モックテストが壊れるため、mockという文字列が存在する行を削除するように修正する。

sed -r '/mock/d' -i package.json


ビルドから--no-sandboxコミットを削除する。

git revert 1ca0d821078286d5953cf0d598e6b97710f816ef


試験実行のために、SQLite3の設定を修正する。

sed -r 's#("better-sqlite3": ").*"#\1file:../better-sqlite3"#' -i package.json


デプスを再構築するには、1度キャンセルして再度実行する必要があるかもしれない。

yarn install  # Signal Desktopでは非推奨であるが、上記2つを修正したために必要となる
yarn install --frozen-lockfile


AArch64向けでは、モックビルドは壊れるため削除する。

rm -rf ts/test-mock


最終的なJSとCSSアセットを生成する。

yarn generate
yarn build:webpack


Signal Desktopのリリースビルドを実行する。
リリースファイルは、/<Signal Desktopのソースコードディレクトリ>/release/linux-unpackedディレクトリに保存される。

yarn build:release --arm64 --linux --dir



Signal CLI

概要

Signal CLIは、Signalのコマンドラインインターフェイスである。
Android向けSignalのソースコードからパッチを当てたlibsignal-service-javaを使用している。

Signal CLIの登録には、SMSや着信を受け取れる電話番号が必要である。

Signal CLIは、主に重要なイベントを管理者に通知するためにサーバで使用することを想定している。
この用途のために、JSON RPCインターフェースとD-BUSインターフェースを備えたデーモンモードがある。
JSON RPCインターフェースには、Rustで書かれた簡単なクライアント例もある。

Signal CLIは自身でビルドすることもでき、提供されているバイナリファイルを使用することもできる。
また、Dockerイメージやコミュニティによって提供されているLinuxパッケージも存在する。

システム要件

  • JRE 21以降
  • x64向けlibsignal-client


バイナリファイルからインストール

Signal CLIの実行に必要なライブラリをインストールする。

# Mobian
sudo apt install default-jre


Signal CLIのGithubにアクセスして、Signal CLIのバイナリファイルをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf signal-cli-<バージョン>.tar.gz
mv signal-cli-<バージョン> Signal-CLI


解凍したSignal CLIを任意のディレクトリに配置する。

mv Signal-CLI <任意のディレクトリ>


~/.profileファイル等に、環境変数PATHを追記する。

vi ~/.profile


 # ~/.profileファイル
 
 export PATH="/<Signal CLIのインストールディレクトリ>/bin:$PATH"


ソースコードからインストール

Signal CLIでは、依存関係のビルドとメンテナンスにGradleを使用している。


Signal CLIのGithubにアクセスして、Signal CLIのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf signal-cli-<バージョン>.tar.gz
cd signal-cli


または、git cloneコマンドを実行して、Signal CLIのソースコードをダウンロードする。

git clone https://github.com/AsamK/signal-cli.git


Gradleを実行する。

./gradlew build


build/install/signal-cli/binディレクトリにシェルラッパーを作成する。

./gradlew installDist


build/distributionsディレクトリにtarファイルを作成する。

./gradlew distTar


build/libs/signal-cli-fatディレクトリにfat tarファイルを作成する。

./gradlew fatJar


Signal CLIをビルドして実行する。

./gradlew run --args="--help"


使用方法

詳細な使用方法については、manページとwikiを読むこと。

※注意
アカウントとは、ユーザの国際電話番号のことであり、国のコードを含む必要がある。
したがって +記号で始まる必要があることに注意する。

アカウント (SMS認証付き) を登録する。

signal-cli -a <アカウント名> register

# 例: 電話番号が09012345678の場合
signal-cli -a +819012345678 register


音声認証を使用してSignalのアカウントを登録することもできる。
この場合、上記のコマンドの最後に--voiceオプションを付加することにより、SMS認証をスキップして、音声認証することがでできる。

signal-cli -a <アカウント名> register --voice

# 例: 電話番号が09012345678の場合
signal-cli -a +819012345678 register --voice


登録には、CAPTCHAチャレンジを解く必要がある場合がある。
https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha

SMSまたは音声で受信した登録コードを使用して番号を確認する。
アカウントにPINコードを追加している場合は、オプションで-pin <PIN番号>オプションを付加する。

signal-cli -a <アカウント名> verify <登録コード>
# または
signal-cli -a <アカウント名> verify <登録コード> -pin <PIN番号>


メッセージを送信する場合、以下に示すコマンドを実行する。

signal-cli -a <アカウント名> send -m "This is a message" RECIPIENT


別のプロセスからメッセージの内容をパイプする場合、以下に示すコマンドを実行する。

uname -a | signal-cli -a <アカウント名> send --message-from-stdin RECIPIENT


メッセージを受信する場合、以下に示すコマンドを実行する。

signal-cli -a <アカウント名> receive


Signalプロトコルは、受信メッセージが定期的に受信されることを期待している。(デーモンまたは受信コマンドの使用)
これは、暗号化が効率的に動作し、グループや有効期限タイマー等の更新を取得するために必要である。

データの保存先

パスワードと暗号鍵は登録時に作成され、現在のユーザのホームディレクトリに保存される。

  • $XDG_DATA_HOME/signal-cli/data/
  • $HOME/.local/share/signal-cli/data/