Fedora35への更新に伴い、Crashplanのクライアント(not デーモン)のGUIが起動時にセグメンテーション違反で起動できなくなり、オフィシャルのLinuxサポート自体もUbuntuのみのため、クライントだけを他のPCで動かすことにした。
数年後に上記のことを忘れて困ることが目に見えているためここに備忘録として残しておく。
概要
Crashplanのアプリケーションは、サーバ(デーモン)とクライアントに分かれており、デーモン側は自前のjavaのランタイムを含む、javaアプリケーション、クライアント側はElectronを使ったWebアプリケーションになっている。
Electronから呼び出されるAPIは、javaアプリケーション側にあるため、そこをポートフォワードなりで、うまいこと繋いでやれば、サーバ側とクライアント側を別々のPCで動かすことが可能な構成になっている。
サーバ側の準備
環境
$ uname -a
Linux tndl.net 5.15.4-201.fc35.x86_64 #1 SMP Tue Nov 23 18:54:50 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
手順
オフィシャルの手順通り、Fedora35に依存関係を追加した上で、Crashplanをインストールし、サービスを起動するのみ。
$ dnf install GConf2 libXScrnSaver net-tools nss libnsl
$ cd code42-install
$ ./install.sh
Crashplanが、sysv initに依存しているため、initscripts
, initscripts-service
, chkconfig
あたりをインストールして、サービス登録するか、最近のsystemdを使った運用に合わせてオフィシャルにある、unitファイルの記載に合わせて起動する。
# sysv initの場合
$ chkconfig code42 on
$ service code42 start
# systemdの場合
$ $EDITOR /lib/systemd/system/code42.service
$ systemctl daemon-reload
$ systemctl enable code42.service --now
この時、Crashplanは、4244/tcp
でクライアント向けのデーモンを起動するが、他のサービスなどで該当ポートが使用されていた場合、自動的に他のポートを割り当てるそうなので使用しているサービスがあった場合には、ポートを変更するなど対策する。
$ lsof -i TCP:4244
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Code42Ser 96435 root 181u IPv6 523886 0t0 TCP localhost:4244 (LISTEN)
クライアント側の準備
環境
$ uname -a
Darwin main.tndl.net 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:23 PDT 2021; root:xnu-8019.41.5~1/RELEASE_X86_64 x86_64 i386 iMacPro1,1 Darwin
手順
オフィシャルの手順通り、macOSにCrashPlanをインストールする。
GUIでの操作になり、基本的に次へを押すだけなので操作内容は割愛する。
インストール後、自動的にデーモンやクライアントアプリケーションが立ち上がるので、この状態でクライアント側のデーモンが 4244/tcp
で起動していることを確認しておく。
$ lsof -i TCP:4244
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Code42〜と表示されるはず
次に、クライアント側のデーモンと不要なメニューバーアプリを無効化し、ポートフォワード時に邪魔にならないようにする。
$ sudo launchctl unload -w /Library/LaunchDaemons/com.code42.service.plist
$ sudo launchctl unload -w ~/Library/LaunchAgents/com.code42.menubar.plist
最後に、サーバ側からクライアント証明書?を複製しSSHを用いたポートフォワードを設定する。
$ scp tndl.net:/var/lib/crashplan/service.pem /tmp/
$ cd "/Library/Application Support/CrashPlan"
$ sudo cp service.pem{,.bak}
$ sudo mv /tmp/service.pem .
$ sudo chown root:admin service.pem
$ sudo chmod 444 service.pem # 644で問題ないが、クライアント側のデーモンが立ち上がると上書きされるため、念の為444にしておく
$ ssh -L 4244:localhost:4244 tndl.net
終わりに
この状態で、クライアント側のmacOSで Code42.app
を起動すれば、サーバ側のデーモンへ接続しバックアップの設定や状態の確認が行えるようになる。