ProjectorでJetBrainsのIDEをリモートから使う
上記の記事のように、LinuxマシンにVS CodeのRemote - SSHでつないで開発環境として使ってるのですが、GoLandやRubyMineといったJetBrainsのIDEが使いたくなってきたため、Projectorを試してみました。
Projectorを使うことで、IntelliJ IDEA, GoLand, RubyMineなどのJetBrains製IDE(やSwingを使ったアプリ)をリモートからネットワーク越しに動かせます。
サーバ側でProjector + IDEを動かしておき、クライアント側ではブラウザやデスクトップアプリからアクセスすることで、ローカルで動いてるIDEとほぼ同じように操作できます。
ブラウザ内のGoLandでデバッグ実行している様子
インストール
https://github.com/JetBrains/projector-installer を使ってインストールします。
Projector + IDEがインストール済みのDockerイメージも公開されていますが、例えばRubyMineを使う場合、そのDockerコンテナ内にRubyの開発環境を整える必要があります。すでに構築された環境でIDEを使うためにprojector-installerを利用します。
https://github.com/JetBrains/projector-installer#installation に従って進めます。Python 3.6以降が入っている環境で、
sudo apt install less libxext6 libxrender1 libxtst6 libfreetype6 libxi6
pip3 install projector-installer --user
~/.local/bin
にprojector
コマンドが置かれるので適宜パスを通しておきます
export PATH="$HOME/.local/bin:$PATH"
projectorコマンドでIDEをインストールします
$ projector install --expert --no-auto-run
This software includes components licensed under GPLv2+CPE. Do you accept this license? [y/n]: y
1. Idea_Community
2. Idea_Ultimate
3. PyCharm_Community
4. PyCharm_Professional
5. CLion
6. GoLand
7. DataGrip
8. PhpStorm
9. WebStorm
10. RubyMine
11. Rider
12. DataSpell
13. MPS
Choose IDE type or 0 to exit: [0-13]: 6
Do you want to select from Projector-tested IDE only? [y/N]
1. GoLand 2021.1.3
2. GoLand 2021.1.2
3. GoLand 2021.1.1
4. GoLand 2021.1
(redacted)
Choose IDE number to install or 0 to exit: [0-25]: 1
Enter a new configuration name or press ENTER for default [GoLand]:
Would you like to specify listening address (or host) for Projector? [y/N]y
Enter a Projector listening address (press ENTER for default) [*]: 100.xxx.xxx.xxx
Would you like to specify hostname for Projector access? [y/N]
Would you like to set password for connection? [y/N]y
Please specify RW password:
Repeat password:
Would you like to set separate read-only password? [y/N]
Installing GoLand 2021.1.3
Downloading goland-2021.1.3.tar.gz
[##################################################] 100%
Unpacking goland-2021.1.3.tar.gz
[##################################################] 100%
--expert
を指定することで、インストールと同時に設定できます。
-
Would you like to specify listening address (or host) for Projector?
- デフォルトだとすべてのアドレスで開けるようになってしまいますが、絞っておいたほうが安全だと思います。IDEが開ける == 任意のコードが実行できる上、ターミナルも開けるので扱いには注意が必要です。私はTailscaleで降ってきているIPアドレスを指定しています。
-
Would you like to set password for connection?
- これも一応指定しておいたほうが無難
HTTPSで接続しないとクリップボードが使えないので、証明書を設定しておきます。クライアント側にmkcertをインストールし、
(client)$ mkcert goland.example
を実行するとgoland.example.pem
, goland.example-key.pem
が生成されます。もちろん、ドメインを持っている方はLet's Encryptなどで発行してもいいです。
適宜、サーバ側に持っていって、projector install-certificate
でインストールします。
$ projector install-certificate --certificate goland.example.pem --key goland.example-key.pem GoLand
Installing goland.example.pem certificate to config GoLand
projector run
で起動です。
$ projector run GoLand
Configuration name: GoLand
Checking for updates ... done.
To access IDE, open in browser
https://localhost:9999/?token=password
https://127.0.0.1:9999/?token=password
https://100.xxx.xxx.xxx:9999/?token=password
To see Projector logs in realtime run
tail -f "/home/ryotarai/.projector/configs/GoLand/projector.log"
Exit IDE or press Ctrl+C to stop Projector.
HTTPSで接続するため、クライアント側の/etc/hosts
に先程証明書を作ったドメインを書いておきます。
(client) $ echo '100.xxx.xxx.xxx goland.example' | sudo tee -a /etc/hosts
ブラウザから接続する
ブラウザで https://goland.example:9999/?token=password (passwordはインストール時に入力したパスワード)を開いて、ライセンス承諾画面が出たらokです。普通のJetBrains IDEのように進めます。
クライアントアプリを使う
ブラウザを使わずに専用のクライアントを使うこともできます。
からダウンロード、起動し、先程のURLを入力すれば接続できます。
In addition to the expected benefits like Dock/Taskbar integration, this app supports keyboard shortcuts such as Ctrl+W/Cmd+W, which are usually unavailable in the browser client.
(https://blog.jetbrains.com/blog/2021/03/11/projector-is-out/ より)
とのことです。
メモ
-
Waiting for response from wss://goland.example:9999...
で固まる場合はリロードする - Pluginインストール後のRestartはうまく行かないので、projectorコマンドごと再起動する
- 今の所日本語入力はできない(実装が進んでいるようです) https://youtrack.jetbrains.com/issue/PRJ-330
- サーバ側は
~/.projector
に諸々保存される
Discussion