CopySync

CopySync / 接続方法

公開サーバーに置く

グローバル IP を持つ Linux のクラウドサーバー。最小構成で足ります。各コンピューターが直接つながり、自宅でも会社でも外出先でも同期でき、ほかに入れるものはありません。

  1. 準備
  2. ポートを開ける
  3. インストール
  4. 確認
  5. アドレスの入力
  6. よくある質問

すべてのコンピューターが直接つながる

サーバーはインターネット上にあるので、各コンピューターはどのネットワークからでも直接つながります。コピーした内容はできるかぎり 2 台のあいだを直接流れ、直接つながらないときはサーバーで中継します。その場合も暗号化されたままです。

公開サーバーを使う CopySync 公開サーバーのアドレスは 203.0.113.10。会社のネットワークの Mac と自宅のネットワークの Windows PC が、どちらもシグナリングでサーバーに接続します。コピーした内容は 2 台のあいだを直接流れ、直接つながらないときはサーバーで中継します。 公開サーバー グローバル IP のクラウドサーバー 203.0.113.10 会社のネットワーク 自宅のネットワーク シグナリング TCP 8787 中継 UDP(直接不可のとき) Mac CopySync を使用 Windows CopySync を使用 直接接続 データ(直接) データ(中継、予備) シグナリング
  • シグナリング、TCP 8787。各コンピューターが常に接続し、相手の発見、ペアリング、接続情報の交換に使います。
  • 直接接続。別々のネットワークにある 2 台は NAT 穴あけで直接つながります。ほとんどの家庭と会社のネットワークで成功します。
  • 中継、UDP 3478 と中継用ポート。直接つながらないときはサーバーが転送します。暗号化されたままで、速度はサーバーの帯域に左右されます。

始める前に

クラウドサーバー
Linux(x86_64 または ARM64)。サーバーのメモリは約 15 MB なので最小構成で足ります。root 権限が必要です。
グローバル IP
クラウドサーバーに付いているもので構いません。固定(Elastic IP など)が理想です。変わると全部のコンピューターで入れ直しになります。
ログインの手段
ssh、またはクラウドのコンソールにある Web ターミナル。
中国本土のクラウドサーバー
ICP 登録のないドメインは使えないので、アプリにはドメインではなく IP を入力します(よくある質問)。

ステップ 1

セキュリティグループでポートを開ける

クラウドのコンソールで、このサーバーのセキュリティグループに次の 3 つのインバウンドルールを追加します。

  • 呼び名の違い:事業者によって「ファイアウォール」「ネットワーク ACL」などと呼ばれますが、同じ設定です。
  • 中継用ポートは OS が割り当て、範囲はサーバーによって異なります。cat /proc/sys/net/ipv4/ip_local_port_range で確認でき、インストールスクリプトも最後に表示します。
  • OS のファイアウォール:ufw や firewalld が有効なら同じポートを開けます。コマンドはスクリプトの最後に表示されます。

ステップ 2

インストールスクリプトを実行

スクリプトにグローバル IP を渡すと、サーバーをインストールし、起動時に立ち上がる systemd サービスを登録して、最後にアプリへ入力するアドレスを表示します。

  1. ssh でログインします(例:ssh root@203.0.113.10、あなたのグローバル IP に置き換え)。
  2. 次の行を順に実行します。最後の行はあなたのグローバル IP に置き換えます:ARM では amd64 を arm64 に置き換えます。
    curl -LO https://github.com/baiyuze/copysync/releases/latest/download/copysync-server-linux-amd64.tar.gz
    tar xzf copysync-server-linux-amd64.tar.gz
    cd copysync-server-linux-amd64
    sudo ./install.sh 203.0.113.10
  3. 最後に表示される ws://203.0.113.10:8787/signal がアプリに入力するアドレスです。
  • systemd サービスとして登録され、起動時に立ち上がります。設定は /etc/copysync/server.env。
  • 更新:新しいバージョンをダウンロードして展開し、もう一度 sudo ./install.sh を実行。設定は引き継がれます。
  • Docker でも動かせます:サーバーの構築手順(英語・中国語)をご覧ください。

ステップ 3

つながるか確認

どのコンピューターでもよいので、ブラウザーで http://203.0.113.10:8787/healthz(あなたのグローバル IP)を開きます。次の 1 行が表示されれば成功です。

開けない場合は、下のよくある質問をご覧ください。

ステップ 4

各コンピューターにアドレスを入力

  1. 設定を開く

    各コンピューターで CopySync を開き、「設定」に進みます。

  2. 公開アドレスを入力

    「シグナリングサーバー」に ws://203.0.113.10:8787/signal(あなたのグローバル IP)を入力し、Return か Enter を押します。

  3. 状態を確認

    「接続状態」が緑の「接続済み」になれば完了です。まだペアリングしていなければ「デバイス」でペアリングします。

CopySync の設定画面:シグナリングサーバーは ws://203.0.113.10:8787/signal、接続状態は接続済み

アプリがまだなら、はじめかたをご覧ください。

あとで使うもの
状態systemctl status copysync-server
ログjournalctl -u copysync-server -f
再起動sudo systemctl restart copysync-server
設定/etc/copysync/server.env。編集したらサービスを再起動
更新新しいバージョンをダウンロードして展開し、もう一度 sudo ./install.sh を実行。設定は引き継がれます
アンインストールsudo ./install.sh uninstall

よくある質問

ドメインではつながらず、IP ならつながる

ICP 登録(备案)のないドメインへの平文 HTTP リクエストは、中国本土のクラウド事業者に横取りされ、ブロックページへのリダイレクトが返されます。テストでは 8787 のような一般的でないポートでも同じでした。WebSocket のハンドシェイクも HTTP リクエストなので同じく止められ、アプリは未接続になります。

アドレスには ws://サーバーのIP:8787/signal のように IP を直接入力するか、ドメインを登録してください。

どのくらいの性能が必要ですか?

最小構成で十分です。サーバーのメモリは約 15 MB で、ふだんは少しのシグナリングメッセージを転送するだけです。コピーした内容は直接つながればサーバーを通らず、中継になったときだけ速度がサーバーの帯域に左右されます。

デバイスが「直接」ではなく「中継」になる

つながった直後は中継、少しして直接に変わるのは正常です。まず中継で使えるようにし、アイドル時に直接接続に切り替えます。ずっと中継のままなら、2 台のあいだで直接つながっていません。ポートをランダムに割り当てる NAT や厳しいファイアウォールが原因です。暗号化はそのままで、速度がサーバーの帯域に左右されるだけです。

HTTPS(wss://)で使えますか?

WebSocket のアップグレードに対応した HTTPS のリバースプロキシの後ろに置けば使えます。アドレスは wss:// で始めます。中国本土のドメインには ICP 登録が必要です。STUN と TURN は UDP でプロキシを通らないので、そのポートは開けたままにします。

自宅の回線にグローバル IP があります。それで代わりになりますか?

なりますが、クラウドサーバーより手間がかかります。ルーターで TCP 8787、UDP 3478、中継用の広い範囲の UDP ポートをそのコンピューターに転送する必要があり、自宅のグローバル IP は変わることもあります。全部が自宅にあるなら同じネットワークでサーバーそのものが要らず、ポート転送なしでネットワークをまたぐなら Tailscale があります。

クラウドサーバー 1 台で、
どこからでも同期。

バージョン 1.6.4、無料・オープンソース。macOS 13 以降、Windows 10・11、Linux(x64 と ARM64)。

サーバーの詳しい構築手順(Docker とすべてのオプション、英語・中国語)