コンテンツにスキップ

「Syncthing」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
編集の要約なし
同期
3行目: 3行目:
[[en:Syncthing]]
[[en:Syncthing]]
{{Related articles start}}
{{Related articles start}}
{{Related|バックアッププログラム}}
{{Related|Resilio Sync}}
{{Related|Dropbox}}
{{Related|Dropbox}}
{{Related|バックアッププログラム}}
{{Related articles end}}
{{Related articles end}}


[https://syncthing.net Syncthing] はオープンソースのファイル同期クライアント・サーバーアプリケーションです。Go で書かれており、Block Exchange Protocol を実装しています。Syncthing ノード間のトランジットは全て暗号化され、全てのノードは暗号証明書によって一意に識別されます。
[https://syncthing.net Syncthing] はオープンソースのファイル同期クライアント・サーバーアプリケーションです。[[Go]] で書かれており、[https://docs.syncthing.net/specs/bep-v1.html Block Exchange Protocol] を実装しています。Syncthing ノード間のトランジットは全て暗号化され、全てのノードは暗号証明書によって一意に識別されます。


== インストール ==
== インストール ==


Syncthing は {{Pkg|syncthing}} または {{Pkg|syncthing-gtk}} パッケージで[[インストール]]できます。後者のパッケージには inotify による同期、デスクトップ通知、Nautilus や Nemo、Caja との投稿などの機能が追加されています。
Syncthing は {{Pkg|syncthing}} または {{Pkg|syncthing-gtk}} パッケージで[[インストール]]できます。後者のパッケージには inotify による同期、[[デスクトップ通知]][[Nautilus]][[Nemo]]、Caja との統合などの機能が追加されています。


== Syncthing の起動 ==
インストールしたら、ターミナルから手動で ''syncthing'' バイナリを実行するか、パッケージに含まれている {{ic|syncthing.service}} を使って [[systemd/ユーザー]]インスタンスで起動してください:
{{Tip|syncthing を複数実行することもできますが、syncthing によってデータベースがロックされるため一人のユーザーが実行できるインスタンスはひとつだけです。データベースのロックに関するエラーがないかログを確認してください。}}


=== バイナリの実行 ===
$ systemctl --user start syncthing.service
ターミナルから手動で ''syncthing'' バイナリを実行してください。


=== システムサービス ===
もしくは、必要であれば {{ic|syncthing@.service}} を[[systemd#ユニットを使う|利用]]することもできます。この場合アクティブなユーザーセッションを必要としません。


サーバーで Syncthing を使用する場合、システムサービスとして Syncthing を実行するよう設定することで、ユーザーがログインしていなくてもシステムのブート時に起動するようになります。
systemd サービスは特定のユーザーで起動する必要があります。サービスに関する詳細は [http://docs.syncthing.net/users/autostart.html#using-systemd Autostart-syncthing with systemd] を見て下さい。


以下のコマンドでサービスを起動・有効化してください (@ の後の 'myuser'' は実際に使っている Syncthing のユーザーに置き換えてください):
syncthing を起動したら、デフォルトで [http://localhost:8384 localhost port 8384] からウェブインターフェイスを使うことができます。syncthing を手動で起動したときは、ブラウザで管理ページを開いてさい。
# systemctl enable syncthing@myuser.service
# systemctl start syncthing@myuser.service


=== ユーザーサービス ===
{{Note|In syncthing releases before 0.11 (or when you have updated from 0.10) the web interface is available at port 8080. Since port 8080 often conflicts with web development utilities [https://github.com/syncthing/syncthing/commit/960c0cbddf8802ae440f2f9ae33bced4e2d72e44 the default port has been changed to port 8384] ('ST' in ASCII). Custom port number can be configured under "GUI Listen Addresses" in the settings, configuration from versions prior to 0.11 were '''not''' adjusted automatically.}}
[[systemd/ユーザー|ユーザーサービス]]として Syncthing を起動するよう設定した場合、Syncthing はユーザーがシステムに (グラフィカルなログイン画面や [[SSH]] などで) ログインした後に起動するようになります。(マルチユーザーの) デスクトップコンピュータで使用する場合はユーザーサービスを使ってください。無駄に Syncthing のインスタンスを起動しなくなります。以下のコマンドでパッケージに含まれている {{ic|syncthing.service}} を起動・有効化してください:
$ systemctl --user enable syncthing.service
$ systemctl --user start syncthing.service


systemd サービスは特定のユーザーで起動する必要があります。サービスに関する詳細は [http://docs.syncthing.net/users/autostart.html#using-systemd Autostart-syncthing with systemd] を見て下さい。
{{Tip|You can run multiple copies of syncthing, but only one instance per user as syncthing locks the database to it. Check logs for errors related to locked database.}}

== ウェブインターフェイスを使う ==
{{Tip|デフォルトでは Syncthing にアクセスできるのは Syncthing を動かしているコンピュータだけです。{{ic|~/.config/syncthing/config.xml}} の {{ic|1=<address>127.0.0.1:8384</address>}} を {{ic|1=<address>0.0.0.0:8384</address>}} に変更して [[systemd]] サービスを再起動することで他のコンピュータからもアクセスできるようになります。}}
Syncthing を起動したら、デフォルトで [http://localhost:8384 localhost のポート 8384] からウェブインターフェイスを使うことができます。syncthing を手動で起動したときは、ブラウザで管理ページを開いてください。

{{Note|syncthing のリリース 0.11 以前では (もしくは 0.10 からアップデートした場合)、ウェブインターフェイスにアクセスする際に使用するポートは 8080 でした。ポート 8080 はウェブ開発のユーティリティがよく使っているため、デフォルトポートはポート 8384 に変更されました [https://github.com/syncthing/syncthing/commit/960c0cbddf8802ae440f2f9ae33bced4e2d72e44] ('ST' in ASCII)。"GUI Listen Addresses" から設定を変更することで使用するポート番号を変えることができます。0.11 以前の設定が勝手に変えられることはありません。}}


== 設定 ==
== 設定 ==
39行目: 53行目:
次に、デフォルトノードの設定を変更するか (名前をクリックして {{ic|Edit}})、データを共有する新しいノードを作成します。データを共有したいノードにチェックを入れれば、アクセスできるようになります。
次に、デフォルトノードの設定を変更するか (名前をクリックして {{ic|Edit}})、データを共有する新しいノードを作成します。データを共有したいノードにチェックを入れれば、アクセスできるようになります。


== Inotify を使う ==
== Tips and tricks ==

=== Inotify を使う ===


Inotify (inode notify) はファイルシステムの変更を検出してアプリケーションに変更を報告する Linux カーネルのサブシステムです。Syncthing は Inotify をサポートしていませんが、Syncthing REST API と対話する公式の拡張モジュールが存在します。Inotify を利用することで毎分ごとに再スキャンすることがなくなります。フォルダの再スキャン間隔は自動的に増えていき再スキャンを出来るだけしないようになります。Syncthing-inotify は {{Pkg|syncthing-inotify}} パッケージでインストールできます。Syncthing を systemd で管理している場合、{{ic|syncthing-inotify.service}} は自動的に起動・停止します。
Inotify (inode notify) はファイルシステムの変更を検出してアプリケーションに変更を報告する Linux カーネルのサブシステムです。Syncthing は Inotify をサポートしていませんが、Syncthing REST API と対話する公式の拡張モジュールが存在します。Inotify を利用することで毎分ごとに再スキャンすることがなくなります。フォルダの再スキャン間隔は自動的に増えていき再スキャンを出来るだけしないようになります。Syncthing-inotify は {{Pkg|syncthing-inotify}} パッケージでインストールできます。Syncthing を systemd で管理している場合、{{ic|syncthing-inotify.service}} は自動的に起動・停止します。


{{ic|syncthing-inotify}} サービスが正しく機能しているか確認すると良いでしょう:
== リレーの実行 ==
{{hc|# systemctl status syncthing-inotify@'''user'''.service|2=
Jan 12 16:37:33 <host> systemd[1]: Started Syncthing Inotify File Watcher for <user>.
Jan 12 16:37:33 <host> syncthing-inotify[16916]: [OK] Watching <folder>: <status>
..
}}


==== カスタム設定 ====
バージョン 0.12 から Syncthing は2つのデバイスを直接接続できない場合に、リレーを使って接続することができるようになりました。リレーのデフォルトセットが存在するため何も設定しなくても実行できます。リレー接続は基本的に、エンドツーエンドで暗号化されるため、接続の中身を盗聴することは不可能になっています [https://forum.syncthing.net/t/syncthing-v0-12-beryllium-bedbug-release-notes-v0-12-0-beta1/5480?u=rumpelsepp]。リレーを実行するには AUR から {{aur|syncthing-relaysrv-git}} をインストールして、{{ic|syncthing-relaysrv.service}} サービスを[[起動]]・[[有効化]]してください。
{{ic|$ syncthing-inotify -help}} で API キーの設定など利用可能なオプションを確認できます。


syncthing-inotify サービスのオプションを設定したい場合、{{ic|/etc/systemd/user/syncthing-inotify.service.d/}} に {{ic|.conf}} ファイルを作成するか ([[#ユーザーサービス|ユーザーサービス]]として実行している場合) あるいは {{ic|/etc/systemd/system/syncthing-inotify@'''user'''.service.d/}} を作成してください ([[#システムサービス|システムサービス]]として実行している場合)。例:
{{aur|syncthing-relaysrv-git}} パッケージに関詳細は [https://forum.syncthing.net/t/syncthing-relaysrv-for-arch-linux/5862u=rumpelsepp Syncthing のフォーラム] にあります
{{hc|/etc/systemd/user/syncthing-inotify.service.d/start.conf|2=
[Unit]
ExecStart=
ExecStart=/usr/bin/syncthing-inotify -logflags=0 -api="0M6ubcgtcy7KBLucu0jeXrgqB8U7YKp9"
RuntimeDirectory=syncthing-inotify
}}

=== リレーの実行 ===

バージョン 0.12 から Syncthing は2つのデバイスを直接接続できない場合に、リレーを使って接続することができるようになりました。リレーのデフォルトセットが存在するため何も設定しなくても実行できます。リレー接続は基本的に、エンドツーエンドで暗号化されるため、接続の中身を盗聴することは不可能になっています [https://forum.syncthing.net/t/syncthing-v0-12-beryllium-bedbug-release-notes-v0-12-0-beta1/5480?u=rumpelsepp]。リレーを実行するには {{Pkg|syncthing-relaysrv}} をインストールして、{{ic|syncthing-relaysrv.service}} サービスを[[起動]]・[[有効化]]してください。

[[AUR]] には git 版の {{aur|syncthing-relaysrv-git}} が存在していま詳細は [https://forum.syncthing.net/t/syncthing-relaysrv-for-arch-linux/5862 Syncthing のフォーラム] を見てください


デフォルトではリレーは [https://relays.syncthing.net/ Syncthing のリレープール] に参加して誰でも利用できる状態になります。コマンドラインフラグを使うことでレートの制限などのオプションが設定できます ({{ic|syncthing-relaysrv -help}} を確認してください)。コマンドラインフラグを編集するには {{ic|syncthing-relaysrv.service}} の[[Systemd#ドロップインスニペット|ドロップインスニペット]]を作成して {{ic|ExecStart}} ディレクティブを置き換えて下さい:
デフォルトではリレーは [https://relays.syncthing.net/ Syncthing のリレープール] に参加して誰でも利用できる状態になります。コマンドラインフラグを使うことでレートの制限などのオプションが設定できます ({{ic|syncthing-relaysrv -help}} を確認してください)。コマンドラインフラグを編集するには {{ic|syncthing-relaysrv.service}} の[[Systemd#ドロップインスニペット|ドロップインスニペット]]を作成して {{ic|ExecStart}} ディレクティブを置き換えて下さい:
56行目: 90行目:
ExecStart=/usr/bin/syncthing-relaysrv FLAGS</nowiki>}}
ExecStart=/usr/bin/syncthing-relaysrv FLAGS</nowiki>}}


トラフィックの統計はポート 22070 で閲覧できます。例: http://5.9.90.188:22070/status 。
トラフィックの統計はポート 22070 で閲覧できます。例: http://78.47.248.86:22070/status 。

=== Discovery Server ===

Syncthing Discovery Server は {{aur|syncthing-discosrv}} パッケージでインストールできます。ドキュメントは [https://docs.syncthing.net/users/discosrv.html こちら] にあります。

ディスカバリサーバーを動かすには証明書が必要であり、できるだけ {{ic|/var/discosrv}} に保存してください。そして {{ic|syncthing}} ユーザーやグループは証明書ファイルを読み込めるようにパーミッションを設定してください。いまのところ、systemd ユニットファイルを編集して証明書を手動で指定する必要があります (他の変更したい設定も同じく記述してください。詳しくは [https://docs.syncthing.net/users/discosrv.html#configuring] を参照):

{{hc|/usr/lib/systemd/system/syncthing-discosrv.service|<nowiki>
[Unit]
Description=Syncthing discovery server
After=network.target

[Service]
User=syncthing
Group=syncthing
ExecStart=/bin/sh -c "/usr/bin/syncthing-discosrv -db-dsn='file:///var/discosrv/discosrv.db' -cert /var/discosrv/chain.pem -key /var/discosrv/key.pem"
Restart=on-failure
SuccessExitStatus=2

PrivateDevices=true
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target</nowiki>}}

クライアントからディスカバリサーバーを使えるようにするには、設定から {{ic|Global Discovery Servers}} 変数に {{ic|<nowiki>https://yourserver:8443/</nowiki>}} (デフォルトポートの場合) などと記述してください。カンマで区切ることで複数のディスカバリサーバーを指定することができます。

自己署名証明書を使う場合、ドメインにディスカバリサーバー ID を追加しないとクライアントは接続を拒否します。ID はディスカバリサーバーの起動時に標準出力に出力されます。Global Discovery Servers のエントリを修正して ID を追加してください: {{ic|<nowiki>https://yourserver.com:8443/?id=AAAAAAA-BBBBBBB-CCCCCCC-DDDDDDD-EEEEEEE-FFFFFFF-GGGGGGG-HHHHHHH</nowiki>}}。


== トラブルシューティング ==
== トラブルシューティング ==


[http://docs.syncthing.net/dev/debugging.html Debugging syncthing] を見てさい。
[http://docs.syncthing.net/dev/debugging.html Debugging syncthing] を見てください。

=== 無駄なログ出力を止める ===

何もしていないときでも Syncthing は大量のログを出力することがあります。サービスの ExecStart を以下のように上書きすることで出力を直接フィルタリングすることができます ("grep" は必要に応じて調整してください):
{{hc|/etc/systemd/system/syncthing@.service.d/nospam.conf|<nowiki>
[Service]
ExecStart=
ExecStart=/bin/bash -c 'set -o pipefail; /usr/bin/syncthing -no-browser -no-restart -logflags=0 | grep -v "INFO: "'</nowiki>}}

2017年2月19日 (日) 01:34時点における版

Syncthing はオープンソースのファイル同期クライアント・サーバーアプリケーションです。Go で書かれており、Block Exchange Protocol を実装しています。Syncthing ノード間のトランジットは全て暗号化され、全てのノードは暗号証明書によって一意に識別されます。

インストール

Syncthing は syncthing または syncthing-gtk パッケージでインストールできます。後者のパッケージには inotify による同期、デスクトップ通知NautilusNemo、Caja との統合などの機能が追加されています。

Syncthing の起動

ヒント syncthing を複数実行することもできますが、syncthing によってデータベースがロックされるため一人のユーザーが実行できるインスタンスはひとつだけです。データベースのロックに関するエラーがないかログを確認してください。

バイナリの実行

ターミナルから手動で syncthing バイナリを実行してください。

システムサービス

サーバーで Syncthing を使用する場合、システムサービスとして Syncthing を実行するよう設定することで、ユーザーがログインしていなくてもシステムのブート時に起動するようになります。

以下のコマンドでサービスを起動・有効化してください (@ の後の 'myuser は実際に使っている Syncthing のユーザーに置き換えてください):

# systemctl enable syncthing@myuser.service
# systemctl start syncthing@myuser.service 

ユーザーサービス

ユーザーサービスとして Syncthing を起動するよう設定した場合、Syncthing はユーザーがシステムに (グラフィカルなログイン画面や SSH などで) ログインした後に起動するようになります。(マルチユーザーの) デスクトップコンピュータで使用する場合はユーザーサービスを使ってください。無駄に Syncthing のインスタンスを起動しなくなります。以下のコマンドでパッケージに含まれている syncthing.service を起動・有効化してください:

$ systemctl --user enable syncthing.service
$ systemctl --user start syncthing.service

systemd サービスは特定のユーザーで起動する必要があります。サービスに関する詳細は Autostart-syncthing with systemd を見て下さい。

ウェブインターフェイスを使う

ヒント デフォルトでは Syncthing にアクセスできるのは Syncthing を動かしているコンピュータだけです。~/.config/syncthing/config.xml<address>127.0.0.1:8384</address><address>0.0.0.0:8384</address> に変更して systemd サービスを再起動することで他のコンピュータからもアクセスできるようになります。

Syncthing を起動したら、デフォルトで localhost のポート 8384 からウェブインターフェイスを使うことができます。syncthing を手動で起動したときは、ブラウザで管理ページを開いてください。

ノート syncthing のリリース 0.11 以前では (もしくは 0.10 からアップデートした場合)、ウェブインターフェイスにアクセスする際に使用するポートは 8080 でした。ポート 8080 はウェブ開発のユーティリティがよく使っているため、デフォルトポートはポート 8384 に変更されました [1] ('ST' in ASCII)。"GUI Listen Addresses" から設定を変更することで使用するポート番号を変えることができます。0.11 以前の設定が勝手に変えられることはありません。

設定

インストールしたら Syncthing はすぐに使うことができます。ウェブインターフェイスから新しいサーバーやフォルダを追加できます。シンプルなネットワークをセットアップする方法は Syncthing's getting started を読んで下さい。

最初の起動時に、~/Sync にデフォルトリポジトリが作成されます。ウェブ管理インターフェイスで確認できます。右側が追加したノードのリストで、左側がリポジトリ(他のノードと共有するフォルダ)のリストになります。

新しくノードを追加するには、ノードのリストの下方にある "Add Node" をクリックして下さい。ノードの Node ID (他のマシンで Edit > Show ID をクリックすることで確認できます) と名前、アドレスの入力を求められます。アドレスに "dynamic" と指定すると、syncthing アナウンスサーバーによって自動的にノード間でアドレスが交換されます。Node ID についてもっとよく知りたい場合は、適当な syncthing documentation page を読んで下さい。

設定を保存すると、syncthing サーバーを再起動するように表示されます。再起動することで変更が適用されます。

次に、デフォルトノードの設定を変更するか (名前をクリックして Edit)、データを共有する新しいノードを作成します。データを共有したいノードにチェックを入れれば、アクセスできるようになります。

Tips and tricks

Inotify を使う

Inotify (inode notify) はファイルシステムの変更を検出してアプリケーションに変更を報告する Linux カーネルのサブシステムです。Syncthing は Inotify をサポートしていませんが、Syncthing REST API と対話する公式の拡張モジュールが存在します。Inotify を利用することで毎分ごとに再スキャンすることがなくなります。フォルダの再スキャン間隔は自動的に増えていき再スキャンを出来るだけしないようになります。Syncthing-inotify は syncthing-inotify パッケージでインストールできます。Syncthing を systemd で管理している場合、syncthing-inotify.service は自動的に起動・停止します。

syncthing-inotify サービスが正しく機能しているか確認すると良いでしょう:

# systemctl status syncthing-inotify@user.service
Jan 12 16:37:33 <host> systemd[1]: Started Syncthing Inotify File Watcher for <user>.
Jan 12 16:37:33 <host> syncthing-inotify[16916]: [OK] Watching <folder>: <status>
..

カスタム設定

$ syncthing-inotify -help で API キーの設定など利用可能なオプションを確認できます。

syncthing-inotify サービスのオプションを設定したい場合、/etc/systemd/user/syncthing-inotify.service.d/.conf ファイルを作成するか (ユーザーサービスとして実行している場合) あるいは /etc/systemd/system/syncthing-inotify@user.service.d/ を作成してください (システムサービスとして実行している場合)。例:

/etc/systemd/user/syncthing-inotify.service.d/start.conf
[Unit]
ExecStart=
ExecStart=/usr/bin/syncthing-inotify -logflags=0 -api="0M6ubcgtcy7KBLucu0jeXrgqB8U7YKp9"
RuntimeDirectory=syncthing-inotify

リレーの実行

バージョン 0.12 から Syncthing は2つのデバイスを直接接続できない場合に、リレーを使って接続することができるようになりました。リレーのデフォルトセットが存在するため何も設定しなくても実行できます。リレー接続は基本的に、エンドツーエンドで暗号化されるため、接続の中身を盗聴することは不可能になっています [2]。リレーを実行するには syncthing-relaysrv をインストールして、syncthing-relaysrv.service サービスを起動有効化してください。

AUR には git 版の syncthing-relaysrv-gitAUR が存在しています。詳細は Syncthing のフォーラム を見てください。

デフォルトではリレーは Syncthing のリレープール に参加して誰でも利用できる状態になります。コマンドラインフラグを使うことでレートの制限などのオプションが設定できます (syncthing-relaysrv -help を確認してください)。コマンドラインフラグを編集するには syncthing-relaysrv.serviceドロップインスニペットを作成して ExecStart ディレクティブを置き換えて下さい:

/etc/systemd/system/syncthing-relaysrv.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/syncthing-relaysrv FLAGS

トラフィックの統計はポート 22070 で閲覧できます。例: http://78.47.248.86:22070/status

Discovery Server

Syncthing Discovery Server は syncthing-discosrvAUR パッケージでインストールできます。ドキュメントは こちら にあります。

ディスカバリサーバーを動かすには証明書が必要であり、できるだけ /var/discosrv に保存してください。そして syncthing ユーザーやグループは証明書ファイルを読み込めるようにパーミッションを設定してください。いまのところ、systemd ユニットファイルを編集して証明書を手動で指定する必要があります (他の変更したい設定も同じく記述してください。詳しくは [3] を参照):

/usr/lib/systemd/system/syncthing-discosrv.service
[Unit]
Description=Syncthing discovery server
After=network.target

[Service]
User=syncthing
Group=syncthing
ExecStart=/bin/sh -c "/usr/bin/syncthing-discosrv -db-dsn='file:///var/discosrv/discosrv.db' -cert /var/discosrv/chain.pem -key /var/discosrv/key.pem"
Restart=on-failure
SuccessExitStatus=2

PrivateDevices=true
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

クライアントからディスカバリサーバーを使えるようにするには、設定から Global Discovery Servers 変数に https://yourserver:8443/ (デフォルトポートの場合) などと記述してください。カンマで区切ることで複数のディスカバリサーバーを指定することができます。

自己署名証明書を使う場合、ドメインにディスカバリサーバー ID を追加しないとクライアントは接続を拒否します。ID はディスカバリサーバーの起動時に標準出力に出力されます。Global Discovery Servers のエントリを修正して ID を追加してください: https://yourserver.com:8443/?id=AAAAAAA-BBBBBBB-CCCCCCC-DDDDDDD-EEEEEEE-FFFFFFF-GGGGGGG-HHHHHHH

トラブルシューティング

Debugging syncthing を見てください。

無駄なログ出力を止める

何もしていないときでも Syncthing は大量のログを出力することがあります。サービスの ExecStart を以下のように上書きすることで出力を直接フィルタリングすることができます ("grep" は必要に応じて調整してください):

/etc/systemd/system/syncthing@.service.d/nospam.conf
[Service]
ExecStart=
ExecStart=/bin/bash -c 'set -o pipefail; /usr/bin/syncthing -no-browser -no-restart -logflags=0 | grep -v "INFO: "'