研究室の深層学習マシンにopenvscode-serverを入れて、同じネットワーク内のどのデバイスからでもアクセスできるように、簡単に設定しました。本文はその手順のメモです。
openvscode-serverのインストール
https://github.com/gitpod-io/openvscode-server の説明に沿って簡単にインストールできます。最新版のtarファイルをダウンロードして解凍したら完成です。
試しに起動してみる、解凍したディレクトリで実行します:
$ ./bin/openvscode-server --host 0.0.0.0 --without-connection-token
--host 0.0.0.0
は外からのアクセスを許可するという意味、--without-connection-token
はトークンなしでIPとポートだけでアクセスできるようにする、ただし安全性は下がるので、信頼できるネット環境じゃないと推奨しません。今回は研究室内部の限られてるメンバーで使うので便利性を重視します。
起動すると他のパソコンからインストールしたマシンの内部IP:3000
でアクセスすれば開くはずです。
openvscode-serverの自動起動
毎回毎回手動で起動するのはやはりめんどい、そしてsshで手動起動しても、sshのsessionが死んだらopenvscode-serverも死ぬというのはまだ面倒臭い、なのでservice化にしてOSが立ち上がったら自動的にopenvscode-serverも起動させるように設定します。
今回はsystemdの仕組みを利用して設定します。参考サイトはこちらです:
https://github.com/microsoft/vscode-remote-release/issues/7125
https://qiita.com/tkato/items/6a227e7c2c2bde19521c
まず/opt/openvscode-server/bin
というディレクトリ構造を作り、その中にopenvscode-server.sh
というスクリプトを置きます。/home/username/openvscode-server-v1.78.2-linux-x64/
というのは今回解凍したファイルの場所です。
#!/bin/sh
exec /home/username/openvscode-server-v1.78.2-linux-x64/bin/openvscode-server --host 0.0.0.0 --without-connection-token
openvscode-server.sh
に755権限を付与しときます:
$ sudo chmod 755 /opt/openvscode-server/bin/openvscode-server.sh
これで半分の準備ができました。
次はsystemdが管理するserviceを定義するファイルを作成します。
/etc/systemd/system/
にopenvscode-server.service
というファイルを作成します:
[Unit]
After = network-online.target
Description = Open VSCode Server
[Service]
User = username
Group = usergroup
ExecStart = /opt/openvscode-server/bin/openvscode-server.sh
Restart = on-failure
RestartSec = 30
KillMode = mixed
[Install]
WantedBy=default.target
After
は「〇〇のサービスが起動した後にこのサービスを起動する」という意味で、ここでnetwork-online.target
を入れると、ちゃんとネットに繋がった後にopenvscode-serverを起動するということになります。
Description
は自分がこのサービスはなんのサービスなのかが分かるように記入した説明文で、内容はなんでもいいです。
User
とGroup
は実際のユーザ名とユーザグループ名を記入します。
ExecStart
はこのサービスを具体的に何を実行するかを指定します。ここではさっき作ったopenvscode-serverの起動コマンドopenvscode-server.sh
を入れます。
Restart
はもしなんらかの状況で再起動を試みる必要があるかの設定です。ここはon-failure
に設定して、サービスが起動失敗している場合は再起動を試みる。
KillMode
はサービスを停止するとき、このサービスが立ち上げたプロセスを殺す時の挙動を設定するところです。openvscode-serverの実行時は複数のプロセスを作成するので、ここはmixed
設定して、漏れないように殺します。
WantedBy
の役割とdefault.target
の意味はあまり分かりませんでした。
そしてopenvscode-server.service
に644権限を付与したらOK。
最後にサービスを使えるようにする手順:
# サービスのリストをリロード
$ sudo systemctl daemon-reload
# openvscode-server.serviceの状態を確認、このコマンドの出力に「disabled」という単語が入ってるはず
$ sudo systemctl status openvscode-server.service
# openvscode-server.serviceをenabledにする
$ sudo systemctl enable openvscode-server.service
# もう一回状態を確認したら、「enabled」になっているはず
$ sudo systemctl status openvscode-server.service
# サービスを起動します
$ sudo systemctl status openvscode-server.service
これでopenvscode-serverは常時起動しているようになりました。