オンプレミス

独自の HopToDesk ネットワークをオンプレミスまたはクラウドで運用できます。

独自のネットワークを構築

64 ビットの Linux または Windows サーバー上に独自の HopToDesk ネットワークを構築します。

最速の方法:ダッシュボードで設定、Network Settings、Set up a private network を開きます。すぐ使える AWS 起動リンクか Docker コマンドが得られ、新しいサーバーは自動的にダッシュボードへ報告します。 ダッシュボードを開く

OS:
Linux
LinuxWindows
この構成では、LAN 内のデバイスは直接接続し、外部との接続には HopToDesk の既定のリレーサーバーを使用します。
独自の TURN サーバーを設定すると、リレー接続を完全に制御できます。すべての項目が必須です。

セットアップ手順

HopToDesk のセルフホスティング

ステップバイステップのセットアップガイド

インストーラーの動作、確認方法、そしてデバイスを自分のネットワークに接続する方法。

仕組み

HopToDesk は 2 種類のサーバーを使います。シグナルサーバーはデバイス同士が互いを見つけてセッションを確立するのを助けます。TURN リレーは、2 台のデバイス間で直接接続できない場合にのみセッションのトラフィックを中継します。

セッションはエンドツーエンドで暗号化されているため、どちらのサーバーも画面、ファイル、チャットを読むことはできません。シグナルサーバーが見えるのはデバイス ID と接続要求だけです。

このページのインストーラーはシグナルサーバーをセットアップします。リレーのトラフィックは既定では HopToDesk のリレーを通り、指定すれば独自の TURN サーバーを通ります。

セルフホストのネットワーク上のデバイスも管理のためにダッシュボードへリンクでき、ダッシュボードからネットワーク設定を配信できます。

ダッシュボードも自社サーバーに置きたいですか? お気軽にご相談ください

始める前に

  • systemd を備えた 64 ビットの Linux サーバー(Ubuntu や Debian など)、または Windows サーバー。
  • そのサーバーの root または sudo アクセス。
  • すべてのデバイスから到達できる IP アドレスまたはホスト名。LAN の外に出ないネットワークであれば、プライベートアドレスで十分です。
  • デバイス向けにサーバーのファイアウォールで TCP ポート 80 を開いていること。
  • 独自のリレーを使いたい場合: TURN サーバーのホスト、ポート、ユーザー名、パスワード。

手順 1: Linux にシグナルサーバーをインストールする

  1. root、または sudo 権限を持つユーザーとしてサーバーにログインします。
  2. このページの上部で LAN + Default Relay または Custom TURN Server を選びます。インストールコマンドは選択によって変わります。
  3. Copy をクリックし、コマンドをターミナルに貼り付けて Enter を押します。
  4. スクリプトが終わるまで待ちます。1 分もかかりません。
  5. 最後にスクリプトは HopSignal Setup Complete と表示し、続けてサーバーのアドレスと、すぐに使えるネットワーク設定ブロックを表示します。この出力は手順 3 で必要になるので保存しておいてください。
curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sudo sh hsinstall.sh

独自の TURN サーバーを使う場合は、コマンドの末尾に 4 つの値をこの順序で追加します: ホスト、ポート、ユーザー名、パスワード。

sudo sh hsinstall.sh turn.example.com 443 myuser mypassword

スクリプトの動作

  • お使いのプロセッサー(Intel、AMD、ARM)に合ったシグナルサーバーを /home/hopsignal フォルダーにダウンロードします。
  • ダウンロードしたファイルを公開されている SHA256SUMS リストと照合し、一致しない場合は何も変更せずに停止します。
  • hopsignal という名前の systemd サービスを作成し、起動のたびに開始します。
  • 推奨の接続上限とランダムなフェデレーションパスワードでサーバーを起動します。パスワードは /home/hopsignal/hopsignal.env に root のみがアクセスできる形で保存されます。
  • サービスが応答しなくなった場合に再起動し、ログが 100 MB を超えたらローテーションする cron のウォッチドッグを追加します。
  • ufw が有効な場合、ufw で TCP ポート 80 を開きます。

Windows での手順 1: シグナルサーバーを起動する

  1. このページ上部の OS スイッチを Windows に切り替え、Download をクリックします。hopsignal.exe という 1 つのファイルが得られます。
  2. C:\hopsignal のようなフォルダーを作成し、hopsignal.exe をその中に移動します。
  3. 同じフォルダーに fedlist.txt という名前の空のテキストファイルを作成します。
  4. 管理者としてコマンドプロンプトを開き、サーバーを起動します。
cd C:\hopsignal
for /f %i in ('powershell -NoProfile -Command "[guid]::NewGuid().ToString('N')"') do @(setx /M FEDPWD %i >nul & set FEDPWD=%i)
hopsignal.exe --ADDR 0.0.0.0:80 --FEDLIST fedlist.txt --FEDADDR 127.0.0.1:82 --LOGFILE hs.log

2 行目はランダムなフェデレーションパスワードを Windows のシステム設定として保存するため、サーバーのコマンドラインに表示されることはありません。

Windows ファイアウォールでポートを許可します:

netsh advfirewall firewall add rule name="HopSignal" dir=in action=allow protocol=TCP localport=80

再起動後もサーバーを動かし続けるには、SYSTEM アカウントで起動時に開始するスケジュールタスクとして登録します:

schtasks /Create /TN HopSignal /SC ONSTART /RU SYSTEM /TR "C:\hopsignal\hopsignal.exe --ADDR 0.0.0.0:80 --FEDLIST C:\hopsignal\fedlist.txt --FEDADDR 127.0.0.1:82 --LOGFILE C:\hopsignal\hs.log"
schtasks /Run /TN HopSignal

Docker での手順 1: シグナルサーバーをコンテナで起動する

イメージ hoptodesk/hopsignal は、Intel、AMD、ARM のホストで同じシグナルサーバーを実行します。推奨の上限を指定して起動します:

docker run -d --name hopsignal --restart unless-stopped -p 80:80 \
  -e HS_MAX_MESSAGE_KB=64 -e HS_QUEUE_LIMIT=256 -e HS_MAX_CONNS=20000 \
  -e HS_CONNS_PER_IP=100 -e HS_LOOKUPS_PER_IP=20 \
  -e HS_IDLE_TIMEOUT=300 -e HS_UPGRADE_TIMEOUT=10 \
  hoptodesk/hopsignal

各 HS_ 値は 1 つの上限を有効にします。メッセージサイズ (KB)、接続ごとのキュー内メッセージ数、オープン接続数、アドレスごとの毎秒の新規接続数と検索数、アイドル秒数、ハンドシェイク秒数です。値を省略すると、その上限は無効のままです。

コンテナをダッシュボードのアカウントに自動でリンクするには、ダッシュボードの Set up a private network にある Docker コマンドを使います。HS_SETUP_TOKEN と HS_DASHBOARD_URL が追加され、サーバーは初回起動時に一度だけアドレスを報告します。

手順 2: サーバーが動作していることを確認する

Linux では、サービスとログを確認します:

sudo systemctl status hopsignal
tail /home/hopsignal/hs.log

Windows では、ポートが待ち受けていることを確認します:

netstat -an | find ":80 "

Docker では、コンテナとそのログを確認します:

docker ps --filter name=hopsignal
docker logs hopsignal

任意のコンピューターから WebSocket ポートをテストします。SERVER_IP をサーバーのアドレスに置き換えてください。正常なサーバーは HTTP/1.1 101 Switching Protocols と応答します。

curl -i -N -m 5 -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" http://SERVER_IP:80/

手順 3: デバイスをサーバーに向ける

各デバイスは小さな JSON ドキュメントからネットワーク設定を読み取ります。これは手順 1 の最後にインストーラーが表示したブロックです。SERVER_IP をサーバーのアドレスに置き換え、独自のリレーを運用する場合は TURN ブロックを記入してください。

{
  "turnservers": [
    {
      "protocol": "turn",
      "host": "turn.hoptodesk.com",
      "port": "443",
      "username": "hoptodesk",
      "password": "hoptodesk1234"
    }
  ],
  "rendezvous": {
    "host": "SERVER_IP",
    "port": "80"
  },
  "winversion": "1.0.0",
  "macversion": "1.0.0",
  "linuxversion": "1.0.0",
  "none": "none"
}

rendezvous ブロックがシグナルサーバーです。Cloudflare Worker など、サーバーに TLS で接続する場合は rendezvous の代わりに rendezvousssl キーを使います。turnservers リストには 1 つ以上のリレーを記載します。通常の接続ではプロトコルを turn に、TLS 接続では turn-tls に設定します。バージョンのキーはそのままにしてください。

上の例のように、ポート番号はすべて引用符で囲んでください。引用符のない数値のポートはアプリに無視されます。

このドキュメントをデバイスに渡す方法は 3 つあります。環境に合うものを選んでください。

方法 A: 各デバイスに api.json ファイルを置く

このドキュメントを api.json という名前のファイルとして HopToDesk の設定フォルダーに保存し、HopToDesk を再起動します。アプリは起動時にこのファイルを読み込み、以後 HopToDesk の API には接続しません。

プラットフォームパス
Windows、すべてのユーザーとサービス(管理者権限が必要)C:\ProgramData\HopToDesk\config\api.json
Windows、現在のユーザーのみ%APPDATA%\HopToDesk\config\api.json
macOS~/Library/Preferences/com.hoptodesk.HopToDesk/api.json
Linux~/.config/hoptodesk/api.json

Linux では、/root/.config/hoptodesk にもう 1 つコピーを置いてください。ユーザーがサインインする前のログイン画面では、アプリはこのコピーを使います。

方法 B: ファイルを URL で公開し、アプリで選択する

  1. デバイスから到達できる任意の Web サーバーに api.json をアップロードします。HTTPS を推奨します。
  2. HopToDesk で歯車アイコンをクリックして設定を開きます。
  3. Network で Choose Network をクリックします。
  4. Custom Network Settings を選択し、ファイルの URL を貼り付けて確定します。
  5. HopToDesk はファイルをダウンロードし、有効な rendezvous エントリと turnservers リストが含まれているか確認してから、あなたのサーバー経由で再接続します。

公開ネットワークに戻すには、Choose Network をもう一度開いて HopToDesk Network (Default) を選択します。

Android と iOS では、設定を開き、ネットワークのセクションで Use HopToDesk Network をオフにしてから、ファイルの URL を入力します。EMM で管理されている端末は、管理対象設定 custom_api_url で同じ URL を受け取れます。

方法 C: ダッシュボードから設定を配信する

デバイスが HopToDesk ダッシュボードにリンクされている場合、アカウント全体に対してネットワークを一度で設定できます。ダッシュボードから作成したカスタムクライアントには、この設定があらかじめ組み込まれています。

新しいサーバー:ダッシュボードで設定、Network Settings、Set up a private network を開きます。In my AWS account か On my own server を選びます。サーバーは起動時に自分のアドレスを報告し、リンクされたすべてのデバイスが設定を受け取ります。入力は不要です。

すでに運用中のサーバー:その設定を手で入力します。

  1. オーナーまたは管理者としてダッシュボードにサインインし、設定を開きます。
  2. Network Settings で Custom Network を選択します。
  3. シグナルサーバーのホスト、ポート、プロトコルとして WS を入力します。独自のリレーを運用する場合は TURN サーバーを追加し、HopToDesk のリレーを使い続ける場合は空欄のままにします。
  4. Save Network Settings をクリックします。リンクされた各デバイスは新しい設定を受け取り、再インストールなしで適用します。

独自の TURN リレーを運用する (任意)

直接接続できないセッションは、既定では HopToDesk のリレーを経由します。すべてのトラフィックを自社のインフラ内にとどめるには、TURN サーバーを運用します。標準的な TURN サーバーならどれでも使え、Linux では coturn が一般的な選択肢です。

  1. リレーサーバーに coturn をインストールします。
sudo apt install coturn
  1. /etc/turnserver.conf を編集し、少なくとも以下の値を設定します。realm、認証情報、パブリック IP は自分のものに置き換えてください。
listening-port=443
fingerprint
lt-cred-mech
user=myuser:mypassword
realm=example.com
external-ip=PUBLIC_IP
  1. /etc/default/coturn に TURNSERVER_ENABLED の行がある場合は、コメントを外します。その後サービスを有効化して開始します。
sudo systemctl enable --now coturn
sudo systemctl restart coturn
  1. リレーのファイアウォールで、待ち受けポートを TCP と UDP の両方で開き、さらに UDP リレー範囲 49152 から 65535 を開きます。
  2. リレーをデバイスに配布します: 4 つの TURN 値を付けてインストーラーを再実行するか、ネットワーク設定の turnservers ブロックを編集します。リレーが TLS を終端する場合はプロトコルに turn-tls を使ってください。

Linux でサーバーを管理する

sudo systemctl status hopsignal
sudo systemctl restart hopsignal
sudo systemctl stop hopsignal
tail -f /home/hopsignal/hs.log

サーバーを更新するには、サービスを停止してインストールコマンドを再実行します。最新のバイナリをダウンロードし、サービスを書き直します。

サービスと cron エントリごとサーバーを削除するには:

curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sudo sh hsinstall.sh remove

トラブルシューティング

  • ID が Generating のままになる、またはアプリがネットワークへの接続を試み続ける場合: デバイスがシグナルサーバーに到達できていません。サービスが動作しているか、ポート 80 が開いているか、ネットワーク設定のアドレスが正しいかを確認してください。
  • デバイスが LAN 内では接続できるが外部からは接続できない場合: リレーに到達できていません。既定のリレーを使う場合、デバイスから turn.hoptodesk.com のポート 443 への送信アクセスが必要です。独自のリレーを使う場合は、そのファイアウォール規則と認証情報を確認してください。
  • アプリが api.json を無視する場合: ファイルが末尾のカンマのない有効な JSON であること、正しいフォルダーにあること、HopToDesk を再起動したことを確認してください。ファイルが読み込まれると、アプリのログに Loaded local api.json という行が記録されます。
  • ポート 82 は複数の自前シグナルサーバーを連携させるためのフェデレーションポートです。インターネットに対しては閉じておいてください。
  • シグナルサーバーはセッションデータを保存しません。何かが止まっているように見える場合はサービスを再起動してください。デバイスは約 1 分以内に自動的に再接続します。

サードパーティホスティング

マネージドプラットフォームをご希望ですか?HopToDesk ネットワークを Cloudflare または AWS に展開できます。

Cloudflare 上の HopToDesk

  1. Cloudflare アカウントにログインし、使用したいドメインゾーンを開きます。
  2. ファイル名 index.js で新しい Worker を作成します。
  3. Worker のコードを index.js にコピーし、保存してデプロイします。 Worker のコード
  4. Worker の設定で、SessionGroup クラスに group という名前の Durable Object バインディングを追加します。
  5. Cloudflare Worker の URL が準備できました。"rendezvousssl" の値として使用します。 api.json カスタム API

AWS 上の HopToDesk

  1. AWS Marketplace で HopToDesk Private Network をサブスクライブします。製品は無料で、AWS からはサーバー料金のみが請求されます。 AWS Marketplace
  2. ダッシュボードにサインイン済みですか?設定、Network Settings、Set up a private network を開き、In my AWS account を選びます。起動リンクには設定が入力済みで、サーバーは自動的にダッシュボードへ報告するため、以降の手順は省略できます。
  3. Launch with CloudFormation を選択します。1 つのフォームで、選択したリージョンにサーバー、その固定アドレス、ファイアウォールルールが作成されます。
  4. スタックの作成が完了したら、その Outputs タブを開きます。アプリ用の api.json が表示されます。
  5. その api.json を各コンピューターに保存するか、ダッシュボードのネットワーク設定からすべてのデバイスに配信します。 api.json

注: この Worker は Durable Objects を使用します。費用はご利用の Cloudflare プランと使用量によって異なります。 Durable Objects の料金

AWS Marketplace および AWS Marketplace ロゴは、Amazon.com, Inc. またはその関連会社の商標です。
Cloudflare、Cloudflare ロゴ、および Cloudflare Workers は、米国およびその他の法域における Cloudflare, Inc. の商標または登録商標です。

セルフホストでの導入をご検討ですか? 見積もりを依頼