Coder でクラウド開発環境を立ち上げる

2025-07-27
クラウド開発環境といえば Codespaces や Gitpod などマネージドなサービスが多いですが、
Coder では環境をセルフホストできます。

気になって試してみました。
Coder とは?
architecture.png
Coder は、クラウド開発環境をセットアップするアプリケーションです。いわゆる管理サーバーに相当します。

開発環境のテンプレートを書いて登録しておくことで、好きな時に環境を立ち上げできます。
そしてエディタで開けます。
公式サイト
では、実際に Coder を試していきましょう。
1. ダウンロード
はじめに Coder をダウンロードします。
GitHub の Releases よりダウンロードしましょう。
releases.png
2. PostgreSQL を立ち上げる
Coder のデータの保存先です。
docker compose で立ち上げましょう。
</>
# docker-compose.yml

services:
  db:
    image: postgres:15
    environment:
      - POSTGRES_USER=coder
      - POSTGRES_PASSWORD=coder
      - POSTGRES_DB=coder
    ports:
      - 5432:5432
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:
</>
$ docker compose up
3. Coder を立ち上げる
ダウンロードしたバイナリを実行しましょう。
coder server コマンドで立ち上がります。
</>
$ coder server \
    --postgres-url "postgres://coder:coder@localhost:5432/coder?sslmode=disable" \
    --access-url "http://127.0.0.1:3000"
4. セットアップ
ブラウザで http://127.0.0.1:3000 を開きましょう。

セットアップページが表示されます。
メールアドレスでアカウントを作成するか、GitHub でログインしましょう。
setup.png
5. テンプレートの登録
はじめにテンプレートを登録します。
画像赤枠の「Templates」をクリック。テンプレートの登録へ進みましょう。
templates.png
スターターがいくつかありますが、そのうちの「Docker Containers」を選択します。
templateselect.png
設定項目がいくつかありますが、デフォルトの値で大丈夫です。
そのまま Save しましょう。

しばらくするとテンプレートの登録が完了します。
templatecreated.png
ちなみに、このテンプレートは Terraform で書かれており、いろいろリソースがありますが、
削ぎ落とすと次のような感じになります。
</>
terraform {
  required_providers {
    coder = {
      source = "coder/coder"
    }
    docker = {
      source = "kreuzwerker/docker"
    }
  }
}

provider "docker" {}

data "coder_provisioner" "me" {}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}

resource "coder_agent" "main" {
  arch = data.coder_provisioner.me.arch
  os   = "linux"
}

module "code-server" {
  source   = "registry.coder.com/coder/code-server/coder"
  version  = "~> 1.0"
  agent_id = coder_agent.main.id
  order    = 1
}

resource "docker_container" "workspace" {
  name       = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
  image      = "codercom/enterprise-base:ubuntu"
  entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
  env        = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]

  host {
    host = "host.docker.internal"
    ip   = "host-gateway"
  }
}
テンプレートを自作するときは、参考にしてください。
6. 環境の立ち上げ
さて、環境を立ち上げます。
画像赤枠の「Workspaces」をクリック。テンプレートを選択してワークスペースを作ります。
workspaces.png
名前やパラメータを入力して、ワークスペースを作成します。
workspacecreate.png
作成ボタンを押すと、Coder は内部で terraform を実行します。
加えて、docker コンテナを立ち上げたりもします。
そのため時間がかかりますが、
しばらくするとワークスペースが立ち上がります。
workspacecreated.png
「code-server」というボタンを押すと、別ウィンドウでエディタが立ち上がります。
codeserver.png
もちろん VS Code からも接続できます。

 
おわり
Coder は、Platform Engineering にマッチします。

例えば
  1. インフラ担当者が、テンプレートを作成
  2. アプリケーション開発者が、好きな時に立ち上げ

という風な使い方ができます。

カスタマイズ性がありますし、UI も優れているので、上手く使えば便利そうです。