VS Codeを Webベースで使える code-serverをインストールして味わってみます。
こんにちは。
いつのことだったか、マイクロソフトの VS Codeを Webベースで使えるサービスがリリースされたニュースを聞きましたけど、自分の PCには VS Codeは入っていて、特にニーズもなくスルーしていた気がします。
先日この機能を提供するサーバープログラムが一般に公開されていると知りましたので、とりあえず環境を作ってみようと思いました。
GitHubなんですけど、こちらになります。
coder / code-server
「Highlights」ってところに code-server の存在意義というか利用価値が書いてありましたので、拙いながら翻訳を。
- どんなデバイスからも同じ開発環境でコーディングできる
- クラウドサーバーを使ってテスト・コンパイル・ダウンロード・その他をスピードアップ
- サーバーにタスクを集中させて外出時にノートPCの電池を長持ちさせる
言われてみりゃそうかと思います。
私はスタバとかでコードを書いたりはしませんが…。
1.環境
サーバーには Ubuntu Server 22.04.4を使います。
2024年2月18日時点で code-serverの最新版は 4.21.1です。
開発用クライアントは、Lubuntu 22.04.4 の Firefox 122.0.1です。
2.インストール
ここにインストールの方法も書いてあります。
Getting started
1行でダウンロードとインストールを一度にやっています。
subro@UbuntuServer2204-1:~$ sudo curl -fsSL https://code-server.dev/install.sh | sh Ubuntu 22.04.4 LTS Installing v4.21.1 of the amd64 deb package from GitHub. + mkdir -p ~/.cache/code-server + curl -#fL -o ~/.cache/code-server/code-server_4.21.1_amd64.deb.incomplete -C - https://github.com/coder/code-server/releases/download/v4.21.1/code-server_4.21.1_amd64.deb ######################################################################## 100.0% + mv ~/.cache/code-server/code-server_4.21.1_amd64.deb.incomplete ~/.cache/code-server/code-server_4.21.1_amd64.deb + sudo dpkg -i ~/.cache/code-server/code-server_4.21.1_amd64.deb [sudo] subro のパスワード: [UbuntuServer2204-1]サーバーの[subro]ユーザーのパスワード 以前に未選択のパッケージ code-server を選択しています。 (データベースを読み込んでいます ... 現在 174327 個のファイルとディレクトリがインストールされています。) .../code-server_4.21.1_amd64.deb を展開する準備をしています ... code-server (4.21.1) を展開しています... code-server (4.21.1) を設定しています ... deb package has been installed. To have systemd start code-server now and restart on boot: sudo systemctl enable --now code-server@$USER Or, if you don't want/need a background service you can run: code-server Deploy code-server for your team with Coder: https://github.com/coder/coder
自動で OSが何かも検出してインストールしてくれたようです。
インストール中のメッセージで、「起動時に systemdで開始する場合は有効化しろ」と言っていますので、ピンクの文字の通りにやっておきます。
subro@UbuntuServer2204-1:~$ sudo systemctl enable --now code-server@$USER
Created symlink /etc/systemd/system/default.target.wants/code-server@subro.service → /lib/systemd/system/code-server@.service.
この自動起動指定の仕方と、[/lib/systemd/system/code-server@.service]ファイルの内容は、個々のユーザーで起動する仕組みです。
実際にプロセスは [root]ユーザーではなく [subro]ユーザーが実行していますね。
subro@UbuntuServer2204-1:~$ ps -ef | grep code-server
subro 1725 1 0 11:12 ? 00:00:00 /usr/lib/code-server/lib/node /usr/lib/code-server
subro 1743 1725 0 11:12 ? 00:00:00 /usr/lib/code-server/lib/node /usr/lib/code-server/out/node/entry
subro 1758 1592 0 11:15 pts/0 00:00:00 grep --color=auto code-server
何かをサーバーで集中管理するのが目的ではなく、あくまで「PCでやる作業をサーバーで提供してあげますよ」という設計思想なんでしょう。
どのポートを使っているか確認してみます。
subro@UbuntuServer2204-1:~$ systemctl status code-server@subro ● code-server@subro.service - code-server Loaded: loaded (/lib/systemd/system/code-server@.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2024-02-18 11:12:40 JST; 4min 26s ago Main PID: 1725 (node) Tasks: 22 (limit: 9347) Memory: 54.2M CPU: 1.360s CGroup: /system.slice/system-code\x2dserver.slice/code-server@subro.service ├─1725 /usr/lib/code-server/lib/node /usr/lib/code-server └─1743 /usr/lib/code-server/lib/node /usr/lib/code-server/out/node/entry 2月 18 11:12:40 UbuntuServer2204-1 systemd[1]: Started code-server. 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.193Z] info Wrote default config file to /home/subro/.config/code-server/config.yaml 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.546Z] info code-server 4.21.1 45164bf749515cf826e3ccdaa3d45c714dc55e63 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.547Z] info Using user-data-dir /home/subro/.local/share/code-server 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.563Z] info Using config file /home/subro/.config/code-server/config.yaml 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.563Z] info HTTP server listening on http://127.0.0.1:8080/ 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.563Z] info - Authentication is enabled 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.563Z] info - Using password from /home/subro/.config/code-server/config.yaml 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.563Z] info - Not serving HTTPS 2月 18 11:12:41 UbuntuServer2204-1 code-server[1725]: [2024-02-18T02:12:41.563Z] info Session server listening on /home/subro/.local/share/code-server/code-server-ipc.sock
[8080/tcp] で動いちゃいるんですが、バインドされているネットワークインターフェイスは [127.0.0.1] で、これでは Webブラウザがインストールされていない Ubuntu Serverでは使えませぬ。
SSHトンネルを使っても良いのですが、そもそも [0.0.0.0](IP ALL) にできないんでしょうか。
設定ファイルをこんな感じなんで、ここを直せば行けそう。
subro@UbuntuServer2204-1:~$ cat ~/.config/code-server/config.yaml bind-addr: 127.0.0.1:8080 auth: password password: 629ce4ee4201b8c4a04c1a66 cert: false
[127.0.0.1] を [0.0.0.0] に変更しました。
subro@UbuntuServer2204-1:~$ cat ~/.config/code-server/config.yaml bind-addr: 0.0.0.0:8080 auth: password password: 629ce4ee4201b8c4a04c1a66 ← 覚えておく cert: false
ここにあったパスワードは後で使いますので覚えておきましょう。
同じサーバーで他のユーザーが code-serverを使う場合は、ポートも他に誰も使ってないものに変えておく必要がありますね。
code-serverを再起動します。
subro@UbuntuServer2204-1:~$ systemctl restart code-server@subro ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === 'code-server@subro.service'を再起動するには認証が必要です。 Authenticating as: Subro (subro) Password: [UbuntuServer2204-1]サーバーの[subro]ユーザーのパスワード ==== AUTHENTICATION COMPLETE ===
状態を確認してみましょう。
subro@UbuntuServer2204-1:~$ systemctl status code-server@subro ● code-server@subro.service - code-server Loaded: loaded (/lib/systemd/system/code-server@.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2024-02-18 11:28:20 JST; 1min 14s ago Main PID: 1792 (node) Tasks: 22 (limit: 9347) Memory: 54.5M CPU: 1.270s CGroup: /system.slice/system-code\x2dserver.slice/code-server@subro.service ├─1792 /usr/lib/code-server/lib/node /usr/lib/code-server └─1811 /usr/lib/code-server/lib/node /usr/lib/code-server/out/node/entry 2月 18 11:28:20 UbuntuServer2204-1 systemd[1]: Starting code-server... 2月 18 11:28:20 UbuntuServer2204-1 systemd[1]: Started code-server. 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.255Z] info code-server 4.21.1 45164bf749515cf826e3ccdaa3d45c714dc55e63 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.259Z] info Using user-data-dir /home/subro/.local/share/code-server 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.273Z] info Using config file /home/subro/.config/code-server/config.yaml 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.273Z] info HTTP server listening on http://0.0.0.0:8080/ 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.274Z] info - Authentication is enabled 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.274Z] info - Using password from /home/subro/.config/code-server/config.yaml 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.274Z] info - Not serving HTTPS 2月 18 11:28:21 UbuntuServer2204-1 code-server[1792]: [2024-02-18T02:28:21.275Z] info Session server listening on /home/subro/.local/share/code-server/code-server-ipc.sock
良さげです。
3.クライアントからアクセス
では Webブラウザでアクセスしてみます。
私の環境の場合 [http://UbuntuServer2204-1:8080] です。
ちゃんとパスワード認証はあるんですよね。
だけどマルチユーザーじゃなく、立ち上げたユーザーオンリーなんでしょう。
2で覚えていたパスワードを入れて、SUBMITを押します。
こんな画面で、VS Codeまんまです。
日本語化しましょう。
左にある田の字から口が離れたようなアイコンをクリックすると、右の入力域が出るので「japanese」と入れてやるとこのプラグインが候補に出てきます。
installを押すとインストールされます。
一度リスタートを促されますので、Change Language and Restartを押します。
このように日本語化されました。
実際に使ってみると「うん、まぁ VS Codeだよね」って感じです。
環境構築はこれで終わりです。
特に難しいことがあるわけでもなく、簡単に動かし始めることができました。
==========
IDEがインストールされていない環境にいる人がこれを使うってのは分からないでもないですが、そんな仕事をしている人は IDEを入れてますよね。
私のように家でしかコードを書かないなら特に必要を感じませんし、VS Codeにリモート機能もあります。
でも世の中には最初に書いた「Highlights」のような要件が有る人がいるんですね。
「どんなデバイスからでも」ってことは、お外からスマホやタブレットでも開発できるってことなんですけど、私はそこまで余裕の無い開発しなくない…。
Solaris・HP-UX・Aix・FreeBSDなどの UNIX周りを想定しているのかなぁ。
GitHubには、チームで code-serverをまとめて管理するのなら coder / coder を見てみろと書いてありました。
いずれ coder / coder の方もあたってみようと思いますが、それでもクライアントPCに VS Codeを入れているのに勝るものでもなさげ。
SaaSとして提供されているサーバー製品を公開してくれているというだけのことで、別にオンプレで使えって言ってる訳じゃないのかな?
とまぁ、使いどころの良く分からないものでした。
私がプログラマではないからでしょうか。