こんにちは、楽して働きたい人です。最近は記事を書くネタはあるのですが記事にまとめる時間がとれていません……。
さて、大分前にファイル共有で失敗した話をしました。その際にSyncthingなるツールに軽く触れました。今回はもう少し踏み込んでみたいと思います。
具体的には常時起動するサーバーにインストールしてみたいと思います。
今回やりたいこと
Syncthingはピアツーピア、ざっくり言うと普通に使うPCやスマートフォン同士で直接ファイルを同期するソフトです。たまに同期エラーなどは発生しますが、クラウドを経由するDropboxやOneboxなどのサービスと比較すると非常に高速であるという利点が挙げられます。
一方で、個人で使う場合、直接ファイルを同期するというのがネックになります。というのも、同期したい両者のPCの電源が入っており、かつSyncthingが起動していなくてはならないからです。
例えば「会社のPCと自宅のPC」、「メインで使うデスクトップPCと出先用のノートPC」間で同期したい場合など、常に最新版を維持するには両者を(最低でもどちらか一方を)起動し続けなくてはいけません。
ただし、Syncthingでは共有を1:1で行う必要はなく、何台でも追加できます。そのため、常時起動しているファイルサーバーを1台用意して、そこにもSyncthingを導入します。
追加でやりたいこと
仮想環境(VMWare)上での開発が多いのでそのデータのやりとりもSyncthingで行えたら行いたい。
Ubuntu(16.04)をインストール
割愛。今回は試験的に導入なのでVMWare上に導入しました。
aptにパッケージ追加
Ubuntu公式のパッケージには含まれていませんが、幸い、aptパッケージがSyncthing側から提供されていますので、これを利用します。作業はほぼ、参考URLのママです。
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
まずはreleaseキーを追加します。
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
続いて、stable(安定版)をaptのソースリストに加えます。candidate(リリース候補?)版を希望する場合は、stableのところをcandidateに置き換えてください。ただ、通常はstableで問題ないと思います。
aptからインストール
ここまで正常にできた場合は、通常通りaptからインストールが行えます。先に、updateするのを忘れないでください。
sudo apt-get update sudo apt-get install syncthing
ただし、たまにhttps関連でエラーが発生する場合があります。その場合、以下のようにapt用にhttps用のパッケージをインストールしてください。
sudo apt-get install apt-transport-https
これでSyncthingがインストールされました。aptを利用する場合は写経時にタイプミスに気をつける以外は特に気をつける点などはないと思います。これならWindowsやMacなどにインストールするのと大差がないですね。
ただし、この状態では通常のコマンドとして
syncthing &
として起動する必要があり、サービスとしては登録されていません。また、GUIをインストールしていればいいですが、通常サーバーマシンにはXなどは入れていないと思いますので他のPCからWeb管理画面にアクセスできるようにします。
Syncthing管理画面の解放
以下、作業を行う一般ユーザーは「share」とします。他のサービス(HTTPなど)と併用する場合は権限などに注意してください。
また、Syncthingは基本的にユーザー単位で動作する点に気をつけてください。
vi ~/.config/syncthing/config.xml
などとして設定ファイルを編集します。エディタはお好みでnanoなど使い馴れたものにしてください。
通常、27行目辺りに
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address>
という記載があるので、これを
<gui enabled="true" tls="false" debugging="false"> <address>0.0.0.0:8384</address>
このように変更します(127.0.0.1を0.0.0.0に変更するだけ)。この設定だとどのPCからでもアクセス出来てしまうので、管理用PCなどが決まっていて気になる場合はそのPCのIPアドレスを指定してください。ただし、後ほどパスワードを設定しますのでVPSなど外部に完全に公開されているサーバーにインストールなどしない限り、通常は問題ありません。
Systemdで管理
最後にsystemdに登録してサービスとして管理します。
systemctl enable syncthing@share.service systemctl start syncthing@share.service
shareの部分はそれぞれの環境でのユーザー名に直してください。これで、サービスとしてSyncthingが実行されます。
また、–userオプションを利用することで、ユーザーサービスとしても登録できますが、通常は必要ないと思います。
Web管理画面へのアクセス方法
IPアドレスの設定が出来ていれば同じLAN内からであれば(もしくはポートフォワーディングが設定されていれば)管理画面にアクセス出来るようになっています。
ブラウザのアドレスバーに「syncthingをインストールしたサーバーのIPアドレス:8384」と入力することでアクセスできます。DHCPでIPアドレスを設定していてサーバーのIPアドレスが分からない場合は、
ifconfig
とすることで確認することができます。
ずらずらっと表示されますが、この「inet addr:」の後がIPアドレスとなります。
本記事の手順通りの設定でWeb管理画面にアクセスすると、以下のようにパスワードを設定することを促すメッセージが表示されますので、「設定」ボタンをクリックして設定を行ってください。
設定画面は特に難しいことはないと思いますが、以下のようにしてユーザー名、パスワードを入力してください。
その他の部分については特にいじる必要がありません。
GUIのパスワードを設定後、portの重複警告が表示される場合がありますが、通常は無視して問題ありません。
以上でUbuntuサーバー上でSyncthingを常時起動する準備ができました。後は、通常のSyncthingやSynctrayzorと同様にピアの登録や共有フォルダの設定を行ってください。ただ、基本的に一般ユーザーでの動作となるのでSymlinkなどを駆使するか、適切なパーミッションとディレクトリを設定する点には注意してください。
終わりに
いかがでしたか? 本当ならWindows上などで便利なSynctrayzorなどを使ってピアの登録など基本機能をご紹介してからにすべきでしたが、またいつ書けなくなるか分からなかったので取り急ぎのご紹介でした。
またSyncthingには単純な同期機能の他に、バージョン管理やユニークな「送信専用フォルダ」もあります。
容量の限られているスマートフォンやSSDのみを搭載したノート/タブレットPCなどではこの「送信専用フォルダ」とSMB(Windowsのファイル共有)や伝統的なFTPなどお好みの方法を組み合わせることで必要なファイルのみを取り出すことができると思います。
また仮想環境以外でもこういったファイルサーバーを構築した場合は記事にしたいと思いますのでよろしくお願いします。