準備

CentOS7では拡張機能インストール時にSSL証明書のCAが見つからなくてエラーが出たので、~/.tcshrcに以下を追記する。

1
2
# .tcshrc
setenv NODE_EXTRA_CA_CERTS "/etc/ssl/certs/ca-bundle.crt"

設定を読み込み直すために、

1
source ~/.tcshrc

を実行する。

code-serverをサーバーにインストール

https://github.com/cdr/code-server/releases

適当に最新版をダウンロードする

1
2
3
4
5
6
7
8
9
10
11
12
13

cd <インストールしたいディレクトリ>

# バージョンは適宜修正

wget https://github.com/cdr/code-server/releases/download/2.1665-vsc1.39.2/code-server2.1665-vsc1.39.2-linux-x86_64.tar.gz

tar xfv code-server2.1665-vsc1.39.2-linux-x86_64.tar.gz
cd code-server2.1665-vsc1.39.2-linux-x86_64

# データ用ディレクトリ作成
mkdir userdata
mkdir extensions

起動

1
./code-server --user-data-dir userdata/ --extensions-dir extensions/ --port 8080 --locale ja-JP &

ポートが使われてる~的なことを言われたら、適当に空いてるポートを探す。これで、サーバー内にVSCodeサーバーが立った。

SSH経由で接続

サーバーを持っていればあとは適当にやればいいが、サーバーの管理者ではなく一般ユーザーの場合はポートを開放できないし、ウェブサーバーの設定も変更できないので、ここではSSHのポートフォワーディングを使う。

ローカルから

1
ssh [email protected] -L 8081:localhost:8080

でSSH接続すると、ローカルの8081番ポートとサーバーの8081番ポートがSSH接続している間だけつながる。

そのまま先程のディレクトリに行き、以下のコマンドでVSCodeサーバーを起動する。

1
./code-server --user-data-dir userdata/ --extensions-dir extensions/ --port 8080 --locale ja-JP
1
2
3
4
5
info  Server listening on http://localhost:8080
info - Password is 9819dbd85371ed18
info - To use your own password, set the PASSWORD environment variable
info - To disable use `--auth none`
info - Not serving HTTPS

すると、このように表示されるので、ローカルのブラウザで http://localhost:8081/ に接続し、パスワードを入力する。

Androidでも・・・

エラー

リバースプロキシでWebSocketができない

nginxのlocationを

1
2
3
4
5
6
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

こうすると動く。