インストール - Signal Desktop
概要
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
- まず、node_modulesディレクトリ、yarn.lockファイル、package-lock.jsonファイルを削除する。
- 次に、
npm install
コマンドを実行する。
- 方法 2
- 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/