設定
始めるために設定することは何もありません。このページは、中で何が起きているかを知りたいときのためのものです。
アクセスできる人
デフォルトでは、リクエストは 2 つのチェックを通る必要があります:
- あなたのアカウント。トンネルはプライベートです。Dev Tunnels のリレーは、
coderemote upを実行した GitHub または Microsoft アカウントだけを通します。 - あなたのスマートフォン。 QR コードのトークンでスマートフォンを登録できます。その後は Secure Enclave で作られ外に出ない自分の鍵でサインインし、トークンだけではほかに何も開けません。
coderemote devicesでスマートフォンを一覧表示し、coderemote devices revokeで 1 台を外します。
スマートフォンとエージェントの間はすべて、QR コードに入っているコンピューターの鍵でエンドツーエンド暗号化されます。間のリレーが中継するのは暗号文だけです。ターミナルを開く、コーディングエージェントに入力する・起動する、ビルドを始めるときも Face ID を求めます。coderemote devices policy でその厳しさ(しない、コマンド、コマンドと変更)と、1 回の確認の長さ(5 分、30 分、1 時間)を設定できます。
coderemote up --allow-anonymous では 1 つ目の確認が省かれます。どちらの場合も、ファイルと git は共有フォルダーの中にとどまり、ターミナルはあなたのユーザー権限で動く本物のシェルです。
プレビューの公開リンクは唯一の例外です。終了するまで、リンクを持つ人は誰でも、どちらのチェックもなしでその開発サーバーを開けます。エージェント、そのファイル、ターミナルには届きません。
コンピューター上のファイル
すべて ~/.coderemote(Windows では %USERPROFILE%\.coderemote)にあり、あなただけが読み取れます:
| パス | 内容 |
|---|---|
config.json | アクセストークン、このコンピューターのトンネルとそのプレビュー用トンネルの id。これを残せば、すべてのペアリングが維持されます。 |
e2e/, lan/ | このコンピューターのエンドツーエンド暗号化の鍵と、ネットワーク上のスマートフォンが確認する証明書。rotate-token で置き換わります。 |
devices/ | 共有フォルダーごとに登録されたスマートフォンと、その Face ID の設定。rotate-token で空になります。 |
bin/ | 初回実行時にダウンロードされる Dev Tunnels CLI。 |
agents/ | 実行中のエージェントごとに 1 エントリ。status、kill、stop がそれを見つけるために使います。 |
update.json | npm の最新バージョンと、up が最後に問い合わせた時刻(1 日に 1 回まで)。 |
runtime/ | インストールスクリプトが Node.js をダウンロードした場合のみ: その Node.js と、その中にインストールされた coderemote、そして PATH に追加された coderemote と node コマンドが入る runtime/bin。 |
このフォルダを削除する(インストールスクリプトが runtime/ を作った場合はそれを残す)と、Code Remote がリセットされます。次の up が新しいトークンとトンネルを作り、すべてのデバイスがペアリングし直す必要があります。
環境変数
| 変数 | 動作 |
|---|---|
CODEREMOTE_DEVTUNNEL | 使用する devtunnel バイナリへのパス。指定しない場合は PATH 上のもの、次にダウンロードしたものを使います。 |
CODEREMOTE_CODE | up --web 用の VS Code の code コマンドへのパス。指定しない場合は PATH 上の code を使います。 |
CODEREMOTE_NO_UPDATE_CHECK | 1 にすると、up は新しいバージョンがあるか npm に問い合わせなくなります。 |
インストールスクリプトは、独自の変数もいくつか読み取ります:
| 変数 | 動作 |
|---|---|
CODEREMOTE_VERSION | インストールするバージョンまたは npm の dist-tag。0.3.7 や next など。デフォルトは latest。 |
CODEREMOTE_PRIVATE_NODE | 1 にすると、すでに新しい Node.js があっても coderemote 用に Node.js をダウンロードします。 |
CODEREMOTE_NO_MODIFY_PATH | 1 にすると PATH とシェルの起動ファイルを変更しません。どのフォルダを追加すればよいかはスクリプトが表示します。 |
トンネル
コンピューターごとにトンネルは 1 つです。その URL は実行のたびに変わらず、up は期限切れにならないよう毎回更新します。共有するフォルダは一度に 1 つです。複数のプロジェクトに届かせるには、親フォルダを共有してください。Git タブがその中のすべてのリポジトリを見つけます。
トンネルには coderemote というラベルが付き、アプリはこれで他のマシンを見つけます。プレビューは 2 つ目のトンネルを使い、ラベルは coderemote-preview、最初のプレビューで作られ、エージェントの停止時に削除されます(仕組み)。coderemote tunnels は、他のコンピューターのトンネルとあわせて両方を一覧表示します。
Dev Tunnels アカウントで保持できるトンネルは 10 個です。使わなくなったコンピューターのトンネルは、coderemote tunnels delete で削除するまで残ります。
アプリでは
- Machine Info(マシンのメニュー)には、そのトンネルが表示されます: アドレス、アカウント、アクセスできる人、有効期限(
coderemote upを起動するたびに延長されます)、現在接続中のクライアント、これまでのトラフィック、プレビュー中のポートの数。 - Settings › Connections には、ペアリング済みのコンピューターが接続しているアカウントが一覧表示されます。各アカウントには、そのアカウントで coderemote を動かしているすべてのコンピューター(オンラインかどうか、この iPhone がペアリング済みかどうか)と、アカウントの 10 個のトンネルのうちいくつ使われているかが表示されます。コンピューターを追加するには、そこで
coderemote upを実行して QR コードを読み取ります。
アプリは表示するだけです。トンネルはコンピューターの所有者のものなので、アカウントにサインインしたコンピューターで coderemote tunnels を使って一覧表示と削除を行います。そのために、Connections でマシンをタッチして長押しすると、そのトンネル ID をコピーできます。アプリの一覧からマシンを削除しても、その iPhone がマシンを忘れるだけです。
トラブルシューティング
"Port 31580 is already in use"
別のエージェントまたはプログラムがポートを使っています。coderemote status でエージェントを確認できます。それ以外は、何が使っているかを調べてください:
$ lsof -nP -iTCP:31580 -sTCP:LISTEN # macOS, Linux PS> netstat -ano | findstr :31580 # Windows
それを停止するか、coderemote stop --all を実行するか、--port で別のポートを指定してください。
iPhone が接続できない
coderemote up が動いていること、コンピューターが起動していてオンラインであることを確認してください。iPhone が、コンピューターと同じアカウントでサインインしていることも確認してください(Access: の行に表示されます)。
"Your Dev Tunnels account already has 10 tunnels"
アカウントがいっぱいで、削除できる使われていないプレビュー用トンネルがありませんでした。メッセージに一覧が表示されます。古いコンピューターのものなど、使われていないものを coderemote tunnels delete <id> で削除し、もう一度 coderemote up を実行してください。
サインインの有効期限が切れた
up が検知してブラウザを再び開きます。ブラウザがない場合は coderemote login --device-code を実行してください。
Ports タブに「Update coderemote」と表示される
コンピューターで動いている coderemote が、ポートとプレビューの機能より前のものです。coderemote update を実行し、coderemote up を再起動してください。
プレビューに「nothing is listening on port …」と表示される
その裏の開発サーバーが停止したか、別のポートで再起動しました。もう一度起動して再読み込みしてください。Ports タブに、いま待ち受けているものが表示されます。
Linux でインストールに失敗する
ターミナルのサポートはインストール時にコンパイルされ、python3、make、C++ コンパイラ(Debian と Ubuntu では build-essential)が必要です。サインインには libsecret-1-0 が必要です。
解決しませんか?サポートをご覧ください。