2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

openvscode-serverを導入しました

Posted at

研究室の深層学習マシンに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/というのは今回解凍したファイルの場所です。

openvscode-server.sh
#!/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というファイルを作成します:

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は自分がこのサービスはなんのサービスなのかが分かるように記入した説明文で、内容はなんでもいいです。
UserGroupは実際のユーザ名とユーザグループ名を記入します。
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は常時起動しているようになりました。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?