SparkleShareメモ

SparkleShareは、バージョン管理システムGitを利用したリアルタイムファイル共有システムです。 誤解を恐れず書くと オープンソース版オレオレDropboxが作れるツール というとわかりやすいでしょう。

SparkleShareを利用するにはクライアントソフトのSparkleShareのほかに、ファイルを中継して共有するための共有Gitリポジトリが必要になります。 そう書くと、とても面倒なように聞こえますがGitを利用したWebサービスのgithubGitoriousBitbucketなどに対応しており、アカウントがあればすぐにSparkleShareを利用できます。

ただ、Webサービスを利用する場合、これらのサービスは「ファイルを公開して共有」を目的にサービスを提供しているので、SparkleShareを使うと全世界に公開してしまいます。ファイルを非公開で利用する場合は独自にレンタルサーバーやVPSなどに共有Gitリポジトリを用意する必要があります。 (注: githubの有料プランなら非公開で使えます。Bitbucketもprivateのリポジトリが作れるそうなので、そちらでも大丈夫だと思います。)

共有Gitリポジトリを用意といっても難しいことをする必要はありません。Gitが使えるサーバーにSSHでアクセスして、適当なディレクトリで git init –bare とすれば中継用の共有リポジトリになります。ほかにもGitoliteなどで管理しているGitサーバーのリポジトリなど、Gitで利用できるリポジトリであれば、なんでもSparkleShare用の共有リポジトリに利用できます。

また、SparkleShare自体は 特定のディレクトリに置いたファイルを自動的にコミット・プッシュするGitクライアント ですので、Gitに抵抗のある人向けのGitクライアントとしても利用できます。

SparkleShareが対応しているOSはLinux, Windows, Macです。 AndroidとiOSはSparkleShare Dashboardの開発が中止になったのでなくなりました。

SparkleShreの情報についてはGithubのWikiに情報が集まっているので、それを参照するとよいでしょう。

「DropBox」という言葉に過渡に 期待しない

SparkleShare自体は素晴らしいソフトウェアですが、DropBoxと比べて同期速度は遅いですし、まだ発展途上のソフトウェアなので、大量のファイルを置くとSparkleShareがクラッシュする事があったり、ごくまれにですが同期がおかしい事があり、片方のクライアントでディレクトリを削除しても、もう片方のクライアントではディレクトリが残っていたりするようなことが起こったりします。1) なので、今、SparkleShareを使う人は暖かい目で見守ってあげられる気持ちで使うとよいと思います。

似ているソフト

SparkleShareと同じように分散型バージョン管理システム(DVCS)をバックエンドに使って、ファイルを同期するソフトです。

インストール

Sid/Wheezyを利用しているかたはaptでインストールできます。

$ sudo apt-get install sparkleshare

Squeezeを利用しているかたはWheezyのSparkleshareパッケージを使うか、パッケージソースを取得して再ビルドして使用するとよいでしょう。

Natty-backportやOneiric以降のUniverseリポジトリに入っているようです。新しいバージョンのSparkleShareを利用する場合は、PPAリポジトリを追加して利用するとよいでしょう。

sudo add-apt-repository ppa:warp10/sparkleshare 
sudo apt-get update
sudo apt-get install sparkleshare
Windows Vista/7のみです。Windows XPはサポート外 です。

githubにWindows用msiパッケージが用意されているので、これをダウンロードしてインストールします。

セットアップについてはLinuxなどと同じですのでsparkleshareのセットアップを参照してセットアップしてください。

もし自分でビルドをする場合は、ビルド方法がgithubのページかソースの README.md にまとめられているので、これを参考にするとよいでしょう。

文字化けについて

Windows用SparkleShare 0.8.4にはmsysgit 1.7.8が同梱されていますが、このバージョンはUTF-8ファイル名対応以前のバージョンで、そのまま使うと日本語ファイル名が文字化けして使い物になりません。

文字化けを回避するには、SparkleShareをインストールしたフォルダ内にあるmsysgitフォルダをUTF-8ファイル名に対応したmsysgitに置き換えると文字化けをせずに利用できるようです。

すみません。Macを持っていないので確認できません。 バイナリは以下に用意されています。

SparkleShareのセットアップ

初めてSparkleShareを起動すると利用するためのウィザードが起動します。

名前とメールアドレスの入力

名前とメールアドレスの入力を求められるので入力します。

スキップするかチュートリアルを読むか

続けてチュートリアルを読むか、スキップするか尋ねられるので選択します。

初期設定完了

完了を押すと設定は終了します。タスクトレイにSparkleShareが常駐し以下のファイルが作成されます。(Linux/Mac)

  • ~/SparkleShare/: 共有ディレクトリです。ここにプロジェクトごとのディレクトリが作成され、その中にファイルを置きます(DropBoxと違い階層が一段深くなるので注意)。ほかに (名前)'s key.txt というファイルが置かれていますが、これはSparkleShareが作成したSSH公開鍵です。中継サーバーへアクセスするために使います。
  • ~/.config/sparkleshare/: 設定とGitのアクセスに使うSparkleShareのSSH鍵ペアがあります。

Windowsの場合は共有ディレクトリと設定ディレクトリは以下の場所に作成されます。

  • %HOMEPATH%\SparkleShare\
    • Windows 7: C:\Users\(ユーザー名)\SparkleShare\
  • %APPDATA%\sparkleshare\
    • Windows 7: C:\Users\(ユーザー名)\AppData\Roaming\sparkleshare\

ファイルの中継に利用する共有リポジトリがあるホストを追加します。

ホストの追加は、タスクトレイのSparkleShareをクリックしてメニューを開き、Add Hosted Project…を選択します。

タスクトレイのメニュー

追加するホストの種別一覧のウィンドウが開くので、アドレスとパスを入力します。 SparkleShareは複数のホスト(共有リポジトリ)が登録できます。

具体的な設定については利用するサーバーごとに変わるので、このあとの利用サーバー別の解説で述べます。

すでにファイルを同期させているリポジトリを追加すると、とても時間がかかります。びっくりするぐらい遅いので、気長にお待ちください。

サーバーにgithubを利用する

githubのアカウントはすでに取得済みということを前提に説明します。

github( https://github.com/ )にアクセスし、SparkleShareと共有するリポジトリを作成します。 ブラウザ画面右側にある「New Repository」ボタンをクリックして https://github.com/repositories/new にアクセスします。

「Project Name」に共有するプロジェクト名を入力して「Create Repository」ボタンを押します。

githubの無料プランでは非公開リポジトリは作成できません。ファイルを非公開にしたい場合は有料プランに加入してください。

次にgithubにアクセスするためのSSH公開鍵を登録します。 githubブラウザ画面右上にある「Account Settings」をクリック、アカウント設定左にあるメニューの「SSH Public Keys」メニューを選択して https://github.com/account/ssh にアクセスします。

「Add another public key」のリンクをクリックし、SSH公開鍵を登録します。

Titleはわかりやすいタイトルを入力します(例ではSparkleShareと入力)。 Keyには エディタなどで ~/SparkleShare/(名前)'s key.txt を開き、内容をコピー・アンド・ペーストします。 「Add Key」ボタンを押して登録完了です。

github側の設定はこれで終わりです。続いてSparkleShare側の設定に移ります。

SparkleShareに戻っての設定です。

SparkleShareタスクトレイメニューの「Add Hosted Project」を開き、githubに登録したプロジェクトを登録します。 githubのアドレスは設定済みなので、パスを入力して追加ボタンを押します。

アドレス なし(入力済み)
パス /ユーザー名/プロジェクト名

以上でgithubのリポジトリを使ったSparkleShareの設定は終わりです。

サーバーにGitリポジトリを利用する

githubを利用した場合、簡単に設定できる反面、無料のプランではファイルを非公開にできない、容量に制限があるなど以外に後述のgitのフックを利用した仕組みが利用できないなどの制限があります。

レンタルサーバーやVPSなどのサーバーがありSSHとgitが利用できるのであれば、そこをSparkleShareの中継サーバーとして利用できます。

SSHでサーバーにログインして、SparkleShareで使うgitリポジトリを作成します。

$ mkdir sparkleshare
$ cd sparkleshare/
$ git init --bare

次にSparkleShareのSSH公開鍵を ~/.ssh/authorized_keys に登録します。登録の手順は以下の順に行います。

  1. ローカル側で適当なエディタを使って~/SparkleShare/(名前)'s key.txtを開いておきます。
  2. リモート側のファイル ~/.ssh/authorized_keys に公開鍵の内容をコピー・アンド・ペーストします。

SSH公開鍵を登録するために ~/.ssh/authorized_keys を作成してパーミッションを変更します。 すでにサーバーにSSH公開鍵が登録されてるなら飛ばして次の作業をします。

$ mkdir ~/.ssh/
$ touch ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh/
$ chmod 600 ~/.ssh/authorized_keys

viなどで ~/.ssh/authorized_keys を開き、ファイルの末尾にローカル側で開いたエディタの内容(SSH公開鍵)をコピー・アンド・ペーストします。

$ vi ~/.ssh/authorized_keys

以上でサーバー側の作業は終わりです。

クライアント側、SparkleShareに戻っての設定です。 SparkleShareタスクトレイメニューの「Add Hosted Project」を開きます。

サーバーの登録方法は「On my own server」を選び、アドレス(サーバー)とリモートパスを登録します。

アドレス ssh://[ユーザー名/省略可@] サーバー名 [:ポート/省略可]
パス /リポジトリが/ある/パス

パスはフルパス(ルートディレクトリからのパス)なので、わからない場合はサーバーにログインして作成したSparkleShareのディレクトリに入り pwd とコマンドを入力してパスを調べます。

複数のクライアントでgitリポジトリを共有するには、サーバーの ~/.ssh/authorized_keys にそれぞれのクライアントのSSH公開鍵(~/SparkleShare/(名前)'s key.txt)を登録します。

SSH公開鍵を追加するもう一つの方法

Linuxなどの環境で、もう ~/.ssh/authorized_keys がある場合はこういうふうにしてもいいかも。

$ cat ~/SparkleShare/(名前)\'s\ key.txt | ssh (名前)@(サーバー) "cat >> ~/.ssh/authorized_keys"

共有リポジトリのフックを利用してWebコンテンツを自動更新する

Gitでは特定のアクションが起こった時にスクリプトを起動できます。この仕組みとSparkleShareを利用すると、ローカルのファイルを変更すると、意識すること無くコンテンツを自動更新させることができます。

(あとで書く)

Dazzle

ホストサーバーにGitリポジトリを簡単にセットアップするためのスクリプトが公開されました。

SparkleShare Dashboard

開発中止になりました。 理由を要約するとリソース不足でメンテができない/放置している。GitlabGitoriousで代替できる。だからだそうです。

SparkleShare Dashboardは、SparkleShareのWebインターフェースです。node.jsとredisで動きます。 Debian Sidでまだ確認できていないので、gihyo.jpのUbuntu Weekly Recipeを参考にするとよいでしょう。

1)
バグ報告したいけど再現できなくて、いつ起こるのかよくわからないのですが…