Crashplanをヘッドレス運用する

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 を起動すれば、サーバ側のデーモンへ接続しバックアップの設定や状態の確認が行えるようになる。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください