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


published: 2025-07-27

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

気になって試してみました。


## Coder とは？

![architecture.png](https://lab.enuesaa.dev/prototype/coder-server-try/architecture.png)

Coder は、クラウド開発環境をセットアップするアプリケーションです。いわゆる管理サーバーに相当します。

開発環境のテンプレートを書いて登録しておくことで、好きな時に環境を立ち上げできます。
そしてエディタで開けます。


## 公式サイト

- [coder.com](https://coder.com/)

では、実際に Coder を試していきましょう。


## ダウンロード

はじめに Coder をダウンロードします。
GitHub の Releases よりダウンロードしましょう。


- [github.com/coder/coder/releases](https://github.com/coder/coder/releases)
![releases.png](https://lab.enuesaa.dev/prototype/coder-server-try/releases.png)

## PostgreSQL を立ち上げる

Coder のデータの保存先です。
docker compose で立ち上げましょう。


```yml
# 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:

```

```bash
$ docker compose up

```

## Coder を立ち上げる

ダウンロードしたバイナリを実行しましょう。
coder server コマンドで立ち上がります。


```bash
$ coder server \
    --postgres-url "postgres://coder:coder@localhost:5432/coder?sslmode=disable" \
    --access-url "http://127.0.0.1:3000"

```

## セットアップ

ブラウザで http://127.0.0.1:3000 を開きましょう。

セットアップページが表示されます。
メールアドレスでアカウントを作成するか、GitHub でログインしましょう。


![setup.png](https://lab.enuesaa.dev/prototype/coder-server-try/setup.png)

## テンプレートの登録

はじめにテンプレートを登録します。
画像赤枠の「Templates」をクリック。テンプレートの登録へ進みましょう。


![templates.png](https://lab.enuesaa.dev/prototype/coder-server-try/templates.png)

スターターがいくつかありますが、そのうちの「Docker Containers」を選択します。


![templateselect.png](https://lab.enuesaa.dev/prototype/coder-server-try/templateselect.png)

設定項目がいくつかありますが、デフォルトの値で大丈夫です。
そのまま Save しましょう。

しばらくするとテンプレートの登録が完了します。


![templatecreated.png](https://lab.enuesaa.dev/prototype/coder-server-try/templatecreated.png)

ちなみに、このテンプレートは Terraform で書かれており、いろいろリソースがありますが、
削ぎ落とすと次のような感じになります。


```tf
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"
  }
}

```

テンプレートを自作するときは、参考にしてください。


## 環境の立ち上げ

さて、環境を立ち上げます。
画像赤枠の「Workspaces」をクリック。テンプレートを選択してワークスペースを作ります。


![workspaces.png](https://lab.enuesaa.dev/prototype/coder-server-try/workspaces.png)

名前やパラメータを入力して、ワークスペースを作成します。


![workspacecreate.png](https://lab.enuesaa.dev/prototype/coder-server-try/workspacecreate.png)

作成ボタンを押すと、Coder は内部で terraform を実行します。
加えて、docker コンテナを立ち上げたりもします。


そのため時間がかかりますが、
しばらくするとワークスペースが立ち上がります。


![workspacecreated.png](https://lab.enuesaa.dev/prototype/coder-server-try/workspacecreated.png)

「code-server」というボタンを押すと、別ウィンドウでエディタが立ち上がります。


![codeserver.png](https://lab.enuesaa.dev/prototype/coder-server-try/codeserver.png)

もちろん VS Code からも接続できます。

　


## おわり

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

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

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

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


