Help us understand the problem. What is going on with this article?

Coder のセルフホスティング

目次

概要

Coder は オンライン版の Visual Studio Code である.
サーバー上にインストールをすることでクラウド開発環境を簡単に用意できる.
Coder は起動毎にパスワードを発行することでセキュリティを担保しているが, SSL 通信は自分で設定する必要がある.

Docker コンテナで稼働させる手もある. しかし, コンテナ内ではコンテナを使用できないため, 使い勝手が悪い.
使うなら適当な VPS あるいはインスタンスを借りてセルフホスティングすることをお勧めする.もっとも, 開発に Docker を使用しないのであれば有料ホスティングを使用することが一番手間がかからない.

ちなみに, 余談ではあるが 2019年5月6日に Visual Studio Online が発表されており Microsoft 自身が Visual Studio Code のクラウド対応を行うとのこと. Visual Studio Online の料金体系がどうなるかは分からないが Cloud9 より使い勝手がはるかに良いため, Visual Studio Online が始まるまでの代替として有効な選択肢だと思う.

Coder 公式ページ

環境

OS VERSION
Ubuntu Server 16.04 LTS
パッケージ VERSION
git 2.7.4
wget 1.17.1
unzip 6.0.0

インストール

※ ディレクトリ等の構成は自分の環境に合わせて適宜読み替えること.

  1. ディレクトリを作成する.
    • mkdir ~/coder
  2. ディレクトリ移動する.
    • cd ~/coder
  3. Coder のバイナリ版をダウンロードする.
    • wget https://github.com/cdr/code-server/releases/download/1.1119-vsc1.33.1/code-server1.1119-vsc1.33.1-linux-x64.tar.gz
  4. 展開する.
    • tar xvfz code-server1.1119-vsc1.33.1-linux-x64.tar.gz -C ~/coder
  5. バイナリを移動する.
    • mv code-server1.1119-vsc1.33.1-linux-x64/code-server ~/coder
  6. 実行する.
    • sudo ~/code-server <ワークスペース> -p <ポート番号>
    • <ワークスペース>にはディレクトリパスを指定.
    • <ポート番号>にはサービスを稼働させるポート番号を指定.
    • デフォルトでは HTTPS で起動される.
    • 標準出力にパスワードが表示される.
  7. ブラウザで Coder へアクセス.
    • https://<IPアドレス>:<ポート番号>
    • 証明書を設定していないためブラウザによっては開かない, あるいは警告が出る.
  8. ログイン画面が出たらインストール成功.
  9. 終了する場合は ctl-c で終了.

※ 起動するごとにパスワードは変わる.
※ 常駐させるよりは使用する時のみ起動するほうがセキュリティ的にも良いと思われる.

証明書発行手順と起動

※ ディレクトリ等の構成は自分の環境に合わせて適宜読み替えること.
※ ドメインの取得及び DNS の設定は行われているものとする.

  1. Certbot をインストールする
    • cd ~/
    • git clone https://github.com/certbot/certbot
  2. 80 ポートと 443 ポートを使用しているアプリケーションがあれば停止する.
    • バイナリ版の Coder はスタンドアロンで取得したほうが吉.
  3. 証明書の発行.
    • ~/certbot/certbot-auto certonly --standalone -d <ドメイン名> -m <メールアドレス>
    • 例:~/certbot/certbot-auto certonly --standalone -d example.com -d www.example.com -m info@example.com
    • ポートを使用しているアプリケーションを停止できない場合
      • webroot モードで取得する.
      • ~/certbot/certbot-auto certonly --webroot --webroot-path <ドキュメントルート> -d <ドメイン名> -m <メールアドレス>
      • ドキュメントルートでは 80 及び 443 で稼働しているサービスのドキュメントルートを指定する.
  4. 証明書の発行を確認.
    • sudo ls -l /etc/letsencrypt/live/
    • sudo ls -l /etc/letsencrypt/live/<ドメイン名>
  5. 証明書を指定して Coder を起動する.
    • sudo ./coder/code-server --cert /etc/letsencrypt/live/<ドメイン名>/fullchain.pem --cert-key /etc/letsencrypt/live/<ドメイン名>/privkey.pem <ワークスペース> -p 443
    • 例:sudo ./coder/code-server --cert /etc/letsencrypt/live/example.com/fullchain.pem --cert-key /etc/letsencrypt/live/example.com/privkey.pem workspace -p 443
  6. ブラウザから Coder へアクセスして警告が出ないことを確認する
    • https://<ドメイン名>

起動コマンドの登録

  1. bash に起動コマンドを登録する.
    • vi ~/.profile
    • alias coder='sudo ~/coder/code-server --cert /etc/letsencrypt/live/<ドメイン名>/fullchain.pem --cert-key /etc/letsencrypt/live/<ドメイン名>/privkey.pem <ワークスペース> -p 443' を追記して保存する.
  2. プロファイルの読み込み.
    • source .profile
  3. 以降は coder コマンドで Coder 起動できる.

証明書更新手順

Let's Encrypt は有効期限が 3 か月なので定期的な証明書更新が必要になる.

以下の手順で更新することが可能. cron に登録して自動化しても良いが本件では Coder は常に手動起動を想定しているため手動で更新する手順とする.

※ ディレクトリ等の構成は自分の環境に合わせて適宜読み替えること.

  1. Coder を終了する.
    • Coder を起動させているターミナルで Ctl-c
  2. ( スタンドアロンで証明書を取得している場合 ) 80 ポートと 443 ポートを使用しているアプリケーションがあれば終了する.
  3. 更新コマンドの実行.
    • ~/certbot/certbot-auto renew
    • Cert not yet due for renewal と表示された場合は更新の必要なし.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした