code-serverをVPS上のUbuntu 22.04にインストールする
code-server(ブラウザでアクセス可能なVSCode)で開発環境を作成したかったので、新規に契約したVPS上にインストールしてみました。
環境
国内のVPSサービスではおそらく最安値だったので、WebARENA Indigoを契約しました。
このVPSインスタンスで様々なプログラムを利用する予定なので4GBプランを契約しましたが、code-serverの動作要件は2CPU/メモリ1GBなので2GBプランでも良いと思います。
VPS
- WebARENA Indigo 4GBプラン(月額1,399円)
- CPU: 4vCPU
- メモリ: 4GB
- SSD: 80GB
- IP: IPv4/IPv6
- NW: 500Mbps上限
- Ubuntu 22.04.1 LTS
- code-server: v4.7.1
- VSCode: 1.71.2
- nginx: 1.18.0
ローカルマシン
- HP Chromebook x2 11-da0013QU
- Debian GNU/Linux 11 (bullseye)
ローカルマシンからVPSインスタンスへSSH接続する
公開鍵認証用の鍵はインスタンス作成時に生成することができるので、インスタンス作成後に生成した秘密鍵をダウンロードしておきます。
今回はChromebookのLinux環境を利用しているので、Linux環境のストレージにダウンロードした秘密鍵を移します。
配置先は~/.ssh
です。
自分以外のユーザーが秘密鍵のファイルを操作できないよう、権限を変更します。
chmod 600 .ssh/private_key.txt
この操作を行わないとSSH接続時にメッセージが表示され、アクセスができません。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/username/.ssh/private_key.txt' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/username/.ssh/private_key.txt": bad permissions
username@xxx.xxx.xxx.xxx: Permission denied (publickey).
権限を変更したら、ssh
コマンドで接続します。
ssh -i ~/.ssh/private_key.txt username@xxx.xxx.xxx.xxx
ここから先の手順はSSH接続した状態で実行します。
code-serverをインストールする
インストールスクリプトを利用してインストールします。
curl -fsSL https://code-server.dev/install.sh | sh
インストール後、バックグラウンドで起動できるように設定します。
sudo systemctl enable --now code-server@$USER
インストール自体はこれで完了です。
ただしこの状態ではインストールしたマシン(ローカルホスト)からしかアクセスできないので、Nginxを利用してリバースプロキシを設定する必要があります。
Nginxをインストールする
下記のコマンドでNginxをインストールします。
sudo apt install -y nginx certbot python3-certbot-nginx
リバースプロキシを設定する
設定ファイルを記述する
sudo nano /etc/nginx/sites-available/code-server
設定ファイルを以下のように編集します。
mydomain.com
は自分のドメインに置き換えます。
server {
listen 80;
listen [::]:80;
server_name mydomain.com;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
設定を有効化する
下記のコマンドで設定を有効化します。
sudo ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/code-server
Let’s Encryptを設定する
下記のコマンドを実行してLet’s Encryptを有効化します。
有効期限近くになると更新を促す通知を受け取るため、mail@example.com
の部分に自分のメールアドレスを指定します。
sudo certbot --non-interactive --redirect --agree-tos --nginx -d mydomain.com -m mail@example.com
実行すると、先程のcode-serverのNginx設定ファイルが更新されます。
ここまで設定できたら、sudo nginx -s reload
か一旦VPSインスタンスを再起動するなどしてNginxに設定を反映します。
設定したドメインにアクセスすると、パスワードを入力する画面が表示されます。
~/.config/code-server/config.yaml
にあるファイルに記載されているパスワードを入力すると、おなじみのエディターの画面が表示されます。