VisualStudioCode >

目次

概要

  • code-server はリモートサーバでVisualStudioCodeを実行し、ブラウザからのアクセスを可能にしてくれるOSSです。いわゆるクラウドIDEプロダクトです。

インストール

  • クラウドでのコンテナ実行が最終的なゴールだと思われますが、セットアップの手間と制限を考慮すると現時点ではサーバローカルでの実行がおすすめです。

サーバローカル

  1. こちらから最新のアーカイブをダウンロードします。
    $ curl -L -O $(curl -s -L https://api.github.com/repos/cdr/code-server/releases/latest | jq -r '.assets[] | select(.name | contains("linux-x64")) | .browser_download_url')
  2. 解凍して適当な場所に配備します。
    $ sudo tar xvzf code-server*-linux-x64.tar.gz -C /usr/local/bin/ --strip=1 --wildcards '*/code-server'
  3. 以下のような要領で起動させます。デフォルトではフォアグラウンドで 0.0.0.0:8443 のHTTPSサービスとして起動されます。サーバ証明書と秘密鍵を省略した場合には自己署名証明書が自動で作成されます(ブラウザアクセス時に警告されます)。オープンフォルダの指定は必須ではありません。
    $ /usr/local/bin/code-server \
      --disable-telemetry \
      --cert=/path/to/server.crt \
      --cert-key=/path/to/server.key \
      ~/dev
  4. https://code-server.example.com:8443 のようなURLでアクセスし、起動時に出力されたパスワードを入力します。
    • code-server は実行ユーザ(あなた)権限で起動しており、IDE内のターミナルからは通常のシェルと同じ操作が可能です。
    • 設定はデフォルトで ~/.local/share/code-server に保存されます。インストールした拡張機能等も保存されます。これは、--user-data-dir 起動オプションでで変更することも可能。
    • また、あなたの環境ではおそらく ssh-agent によるSSH認証もセットアップ済みだろうと思われますので、SSH経由のgit操作なども問題なく行えます。
    • なお、code-serverコマンドの起動オプションは以下の通りです。
      $ code-server --help
      Usage: code-server [options]
      
      Run VS Code on a remote server.
      
      Options:
        -V, --version                output the version number
        --cert <value>
        --cert-key <value>
        -e, --extensions-dir <dir>   Set the root path for extensions.
        -d --user-data-dir <dir>      Specifies the directory that user data is kept in, useful when running as root.
        --data-dir <value>           DEPRECATED: Use '--user-data-dir' instead. Customize where user-data is stored.
        -h, --host <value>           Customize the hostname. (default: "0.0.0.0")
        -o, --open                   Open in the browser on startup.
        -p, --port <number>          Port to bind on. (default: 8443)
        -N, --no-auth                Start without requiring authentication.
        -H, --allow-http             Allow http connections.
        -P, --password <value>       DEPRECATED: Use the PASSWORD environment variable instead. Specify a password for authentication.
        --disable-telemetry          Disables ALL telemetry.
        --socket <value>             Listen on a UNIX socket. Host and port will be ignored when set.
        --install-extension <value>  Install an extension by its ID.
        --bootstrap-fork <name>      Used for development. Never set.
        --extra-args <args>          Used for development. Never set.
        -h, --help                   output usage information

on WSL

  • Windows版のVS CodeはWSLのファイルシステムにアクセスできませんが、WSL上でcode-serverを実行することによりWSL環境を全面的に活用してVS Codeを利用した開発ができるようになります。
  1. こちらから最新のアーカイブをダウンロードします。
  2. 解凍して適当な場所に配備します。
    $ tar xvzf code-server<version>-vsc<version>-linux-x64.tar.gz
    $ sudo mv code-server<version>-vsc<version>-linux-x64/code-server /usr/local/bin/
  3. 以下のような要領で起動させます。ローカルホストとしてアクセスすれば十分ですので、認証なしのHTTPサービスでよいでしょう。オープンフォルダの指定は必須ではありません。
    $ /usr/local/bin/code-server \
      --disable-telemetry \
      --allow-http --no-auth \
      --host 127.0.0.1 --port 8080 \
      ~/dev
  4. http://localhost:8080 にアクセスします。
    • code-server は実行ユーザ(あなた)権限で起動しており、IDE内のターミナルからは通常のシェルと同じ操作が可能です。
    • 設定はデフォルトで ~/.local/share/code-server に保存されます。インストールした拡張機能等も保存されます。これは、--user-data-dir 起動オプションでで変更することも可能。
    • また、あなたの環境ではおそらく ssh-agent によるSSH認証もセットアップ済みだろうと思われますので、SSH経由のgit操作なども問題なく行えます。

sshcode

  • すでにLinuxデスクトップでVisualStudioCodeを利用している場合には、sshcodeコマンドでサーバにcode-serverを起動されるのが便利です。開発にサーバのリソースを利用することができます。
  • https://github.com/codercom/sshcode

on Docker

  • サービス再起動の便のため、DockerComposeを利用します。
  • lightbulb.png以下の内容はこちらのリポジトリにまとめてあります。このリポジトリを git clone すればすぐに起動させることができます。
  1. 適当なアプリケーションフォルダを用意します。開発環境をある程度永続化するためにホームディレクトリをマウントするためのディレクトリ(coder/)も作成し、コンテナ起動ユーザ(coder (1000:1000))をオーナーにします。
    $ mkdir -p ~/docker-compose/app/code-server
    $ cd ~/docker-compose/app/code-server
    $ mkdir coder
    $ sudo chown 1000:1000 coder
  2. 以下のような設定ファイル(~/docker-compose/app/code-server/docker-compose.yml)を用意します。
    1. ---
    2. version: '2'
    3. services:
    4.   code-server:
    5.     image: codercom/code-server:latest
    6.     command:
    7.     - --disable-telemetry
    8.     # with server certificate and key
    9.     #- --cert=/server.crt
    10.     #- --cert-key=/server.key
    11.     # for local access
    12.     #- --allow-http --no-auth
    13.     ports:
    14.     - 8443:8443
    15.     # for local access
    16.     #- 127.0.0.1:8080:8443
    17.     volumes:
    18.     - "${PWD}/coder:/home/coder:rw"
    19.     - "${PWD}/opt:/opt:rw"
    20.     - "${SSH_AUTH_SOCK}:/ssh-agent:rw"
    21.     # with server certificate and key
    22.     #- "/path/to/server.crt:/server.crt:ro"
    23.     #- "/path/to/server.key:/server.key:ro"
    24.     environment:
    25.       # ICU
    26.       LD_LIBRARY_PATH: /opt/icu/lib
    27.       # Optware-ng, .Net
    28.       PATH: '${PATH}:/opt/bin:/opt/sbin:/opt/dotnet:/home/coder/dotnet'
    29.       SSH_AUTH_SOCK: /ssh-agent
    • 起動オプションに --allow-http --no-auth を指定しない場合、0.0.0.0:8443 のHTTPSサービス(フォーム認証付き)として起動されます。
    • gitのアクセスの便のためSSH認証のため認証ソケットをコンテナ内にマウントしています。したがって、認証ソケットがすでに利用可能であることをあらかじめご確認ください。また、ホストサーバへのSSHログインセッションが閉じるとこの認証ソケットも利用不可(再マウントが必要)となりますのでご注意ください。
    • lightbulb.png認証なしのローカルホストサービスにしてリモートからセキュアにアクセスしたい場合には、SSHトンネルをセットアップするとよいでしょう。
  3. coder ユーザにSSH認証ソケットへの読み書き権限を付与*1してから起動させます。これらは起動スクリプトにしておくとよいかもしれません。
    $ sudo chgrp 1000 $SSH_AUTH_SOCK
    $ sudo chmod g+w  $SSH_AUTH_SOCK
    $ docker-compose up -d
    docker-compose の実行にsudo権限が必要な場合には、環境変数を引き継ぐため -E オプションを付加します。
    $ sudo -E docker-compose up -d
  4. https://code-server.example.com:8443 のようなURLでアクセスします。
    • パスワードは、 docker-compose logs コマンドで確認できます。
    • 起動ユーザは coder (1000:1000)ですので、マウントした ${PWD}/coder ディレクトリへの読み書きに支障はないでしょう。クラウド環境を含めてそれ以外の場合はその限りではありません。
    • このイメージでは coder ユーザにパスワード入力不要のsudo権限が付与されていますので、開発に必要なツールのインストールにも不便はないでしょう。

開発言語やツールのインストール

  • コンテナは揮発しますので、ディストリビューションのパッケージによる言語SDKのインストールは起動毎の手間になるかもしれません。
  • 上記のセットアップ例ではホームディレクトリ(/home/coder)と /opt ディレクトリを永続化するようにマウントしていますので、それらのディレクトリにインストールするようにするとよいでしょう。
  • 詳細については、こちらのリポジトリをご参照ください。

既知の問題、制限

共通

  1. Microsoftのオフィシャルマーケットプレイスがまだ利用できません。
    • 直接オフィシャルサイトから .vsix ファイルをダウンロード(各プラグインページのDownload Extensionリンク)してインストールすることは可能です。
  2. Japanese Language Pack for VS Code が有効になりません。
  3. .vsix ファイルで拡張がインストールできない#508で修正済)。

.Net

  1. ライセンスの制限でデバッグ機能が使えない(Debugging .NET Core
  2. BOMのあるファイルの編集、保存ができない(Cannot save *.cs or *.fs file. #389

サーバローカル、on WSL

  1. Open Folder... でホームディレクトリ直下をブラウズできない場合があります。

on Docker

  1. 以下のエラーで認証機能が正しく動作しません。
    code-server_1  | Error: ENOENT: no such file or directory, open '/src/packages/server/build/web/login/index.html' 

CentOS 7

  • gccのバージョンが古く、起動に失敗します。比較的新しいgccをソースからビルドしインストールすれば解決しますが、上記のDockerを利用する方が簡単でしょう。
    $ 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)
    code-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by code-server)

Tips

  • エディタとターミナルの Font Family を Consolas, 'Courier New', monospace*2 に変更すると、通常版と同じ体裁になります。
  • Chromeのショートカット(リンク先の例: "...\chrome.exe" --app=https://code-server.example.com:8443/ )を作成し、アプリケーションとして起動するとアドレスバーなどが非表示となりすっきりします。

リソース


*1 GIDが1000のグループに対して認証ソケットへのアクセス権を付与することにリスクがある場合にはそのサーバでの利用は控えましょう。
*2 エディタのデフォルト設定は、'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-05-02 (木) 18:08:59 (168d)