vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

code-serverをdaemon化

今日はvSphere関係無い、開発環境ネタです。

code-serverって何ぞや?

ブラウザ上で動作する Visual Studio Code
https://github.com/codercom/code-server
coder.com というクラウド IDE サービスを提供していた Coder が
code-server としてオープンソースで公開したもの。

VSCode 自体 Electron ベースなのでブラウザベースでもほとんど違和感なく動作するし、 Extension もほとんどがそのまま動作する。

まだ alpha 版ということらしいので、
触っているとバグがあったり、認証周りは突貫っぽさがあったりするが、
個人用途の開発環境としては全然使える。

Install

といってもパッケージやインストーラがあるわけではなく、
github から適当な release を拾ってきて、解凍して実行するだけ。
https://github.com/codercom/code-server/releases

% curl -fsSL https://github.com/codercom/code-server/releases/download/1.792-vsc1.33.1/code-server1.792-vsc1.33.1-linux-x64.tar.gz | tar zx
% cd code-server1.792-vsc1.33.1-linux-x64/
% ./code-server 

環境によっては

libstdc++が古いと動かないです… CentOS7 のデフォルトバージョンだとアウト。

% ./code-server 
./code-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./code-server)
./code-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./code-server)
この場合はgccを make して libstdc++ を入れ替える必要あり。

これでブラウザからhttps://【code-server実行したホスト】:8443 を開く。
パスワードは実行コンソール上に↓のような感じでているはずなので

INFO  code-server v1.792-vsc1.33.1
INFO  Additional documentation: http://github.com/codercom/code-server
INFO  Initializing {"data-dir":"/home/vhoge/.local/share/code-server","extensions-dir":"/home/vhoge/.local/share/code-server/extensions","working-dir":"/home/vhoge/code-server1.792-vsc1.33.1-linux-x64","log-dir":"/home/vhoge/.cache/code-server/logs/20190414025039640"}
INFO  Starting webserver... {"host":"0.0.0.0","port":8443}
WARN  No certificate specified. This could be insecure.
WARN  Documentation on securing your setup: https://github.com/codercom/code-server/blob/master/doc/security/ssl.md
INFO   
INFO  Password: 291d1362713deb52d14192c9 ★ コレ ★
INFO   
INFO  Started (click the link below to open):
INFO  http://localhost:8443/
INFO   
INFO  Starting shared process [1/5]...
INFO  Connected to shared process

パスワードを入力してやれば code 本体が表示され操作できるようになる。

設定周り

ブラウザから設定したり Extension 導入したものは
ユーザディレクトリ下の以下にファイルとして残っている。

 % pwd                                                                                         
/home/vhoge/.local/share/code-server
 % ls                                                                                          
Backups/           User/          extensions/     languagepacks.json  rapid_render.json  self-signed.key
CachedExtensions/  dependencies/  globalStorage/  machineid           self-signed.cert

設定や extension を別ホストでという時は
上記のディレクトリを持っていくとよい。

それと cache (というかアプリログ?) が以下に吐かれている。

/home/vhoge/.cache/code-server

こちらは移行する必要はなさげ。問題時のデバック等に。。。

daemon

いちいちサーバにログインして code-server を立ち上げ、
コンソール残しっぱなしというのもわずらわしいので daemon 化。

[Unit]
Description = code-server

[Service]
ExecStart = /usr/local/bin/code-server -P hogehoge -d /home/vhoge/.local/share/code-server /home/vhoge/work
Restart = always
Type = simple
User = vhoge
Group = users

[Install]
WantedBy = multi-user.target
% sudo vim /etc/systemd/system/code-server.service
% sudo systemctl daemon-reload
% sudo systemctl start code-server

-Pは初回アクセス時のパスワード。この辺はもうチョイ改善してほしいな…
(psでパスワード見えるとかいけてない)
-dはユーザーデータディレクトリ。.localとか.cacheとかのアレ。 最後のパスはデフォルトワークディレクトリ。
daemon 化で指定しないと/とかで動いてしまうので、
ユーザのホームディレクトリ下を指定しておくのがよさげ。