https://coder.com/docs/code-server/latest/guide#using-a-self-signed-certificate
Raspberry Pi 上のcode-server でSSL通信を有効にしてみました。

  • Webアプリ(PWA)としてのインストールは問題ありませんでした。
  • Draw.ioは問題なく表示できました。
  • vscode-revealのプレビューはブラウザ表示ボタンで動作しました。

環境

  • Raspberry Pi 4B
  • Ubuntu 23.04
  • code-server 4.10.0
  • mkcert 1.4.4

各種パラメタ

  • ユーザ名
    ubuntu
  • サーバ名
    ホスト名はubuntuで、リモートからubuntu.localでアクセス可能
  • CA ディレクトリ兼証明書用ディレクトリ
    /home/ubuntu/.local/share/mkcert/
  • code-server 設定ファイル
    /home/ubuntu/.config/code-server/config.yaml

通信

  • Protocol
    TLS 1.3
  • Key exchange
    X25519
  • Server signature
    RSA-PSS with SHA-256
  • Cipher
    AES_256_GCM

サーバ側の環境設定

  • code-server の導入
    curl -fsSL https://code-server.dev/install.sh | sh
    sudo systemctl enable --now code-server@$USER
  • 念のため実行
    ssh-keygen
  • CA の作成
    sudo apt install mkcert libnss3-tools
    mkcert -install
    以下のファイルが生成される。
    • /home/ubuntu/.local/share/mkcert/rootCA.pem
    • /home/ubuntu/.local/share/mkcert/rootCA-key.pem
  • サーバ証明書の作成
    cd ~/.local/share/mkcert
    mkcert ubuntu.local
    以下のファイルが生成される。
    • /home/ubuntu/.local/share/mkcert/ubuntu.local.pem
    • /home/ubuntu/.local/share/mkcert/ubuntu.local-key.pem
  • code-server の設定
    ~/.config/code-server/config.yaml
    #bind-addr: 127.0.0.1:8080
    bind-addr: 0.0.0.0:443
    #auth: password
    auth: none
    cert: /home/ubuntu/.local/share/mkcert/ubuntu.local.pem
    cert-key: /home/ubuntu/.local/share/mkcert/ubuntu.local-key.pem
  • code-server に443/tcp (1024以下のポート)へのバインドを許可
    sudo setcap cap_net_bind_service=+ep /usr/lib/code-server/lib/node
  • code-server の再起動
    sudo systemctl restart --now code-server@$USER

クライアント側の環境設定

  • ブラウザの「信頼されたルート証明機関」にrootCA.pemを登録
  • ブラウザの「信頼された発行元」にubuntu.local.pemを登録

利用

  • ブラウザでhttps://ubuntu.localを開く
  • 必要に応じてブラウザのアドレスバーにあるボタンからWebアプリとしてインストール