# Quickstart

Follow this guide to get your first Coder development environment
running in under 10 minutes. This guide covers the essential concepts and shows
you how to create your first workspace and run VS Code from it.

## What You'll Build

In this quickstart, you'll:

* ✅ Install Coder server
* ✅ Create a **template** (blueprint for dev environments)
* ✅ Launch a **workspace** (your actual dev environment)
* ✅ Connect from your favorite IDE

## Understanding Coder: 30-Second Overview

Before diving in, here are the core concepts that power Coder explained through
a cooking analogy:

| Component      | What It Is                                                                           | Real-World Analogy             |
| -------------- | ------------------------------------------------------------------------------------ | ------------------------------ |
| **You**        | The engineer/developer/builder working                                               | The head chef cooking the meal |
| **Templates**  | A Terraform blueprint that defines your dev environment (OS, tools, resources)       | Recipe for a meal              |
| **Workspaces** | The actual running environment created from the template                             | The cooked meal                |
| **Users**      | A developer who launches the workspace from a template and does their work inside it | The people eating the meal     |

**Putting it Together:** Coder separates who *defines* environments from who *uses* them. Admins create and manage Templates, the recipes, while developers use those Templates to launch Workspaces, the meals.

## Prerequisites

* A machine with 2+ CPU cores and 4GB+ RAM
* 10 minutes of your time

<div className="fd-steps">
  <div className="fd-step">
    ## Install Docker and Setup Permissions

    <OSTab items="[&#x22;Linux&#x22;, &#x22;macOS&#x22;, &#x22;Windows&#x22;]">
      <Tab value="Linux" id="linuxmacos">
        1. Install Docker:

           ```bash
           curl -sSL https://get.docker.com | sh
           ```

           For more details, visit:

           * [Linux instructions](https://docs.docker.com/desktop/install/linux-install/)
           * [Mac instructions](https://docs.docker.com/desktop/install/mac-install/)

        2. Assign your user to the Docker group:

           ```shell
           sudo usermod -aG docker $USER
           ```

        3. Run `newgrp` to activate the groups changes:

           ```shell
           newgrp docker
           ```

           You might need to log out and back in or restart the machine for changes to
           take effect.
      </Tab>

      <Tab value="macOS">
        1. Install Docker:

           ```bash
           curl -sSL https://get.docker.com | sh
           ```

           For more details, visit:

           * [Linux instructions](https://docs.docker.com/desktop/install/linux-install/)
           * [Mac instructions](https://docs.docker.com/desktop/install/mac-install/)

        2. Assign your user to the Docker group:

           ```shell
           sudo usermod -aG docker $USER
           ```

        3. Run `newgrp` to activate the groups changes:

           ```shell
           newgrp docker
           ```

           You might need to log out and back in or restart the machine for changes to
           take effect.
      </Tab>

      <Tab value="Windows" id="windows">
        If you plan to use the built-in PostgreSQL database, ensure that the
        [Visual C++ Runtime](https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist#latest-microsoft-visual-c-redistributable-version)
        is installed.

        1. [Install Docker](https://docs.docker.com/desktop/install/windows-install/).
      </Tab>
    </OSTab>
  </div>

  <div className="fd-step">
    ## Install & Start Coder

    Install the `coder` CLI to get started:

    <OSTab items="[&#x22;Linux&#x22;, &#x22;macOS&#x22;, &#x22;Windows&#x22;]">
      <Tab value="Linux" id="linuxmacos-1">
        1. Install Coder:

           ```shell
           curl -L https://coder.com/install.sh | sh
           ```

           * For standalone binaries, system packages, or other alternate installation
             methods, refer to the
             [latest release on GitHub](https://github.com/coder/coder/releases/latest).

        2. Start Coder:

           ```shell
           coder server
           ```
      </Tab>

      <Tab value="macOS">
        1. Install Coder:

           ```shell
           curl -L https://coder.com/install.sh | sh
           ```

           * For standalone binaries, system packages, or other alternate installation
             methods, refer to the
             [latest release on GitHub](https://github.com/coder/coder/releases/latest).

        2. Start Coder:

           ```shell
           coder server
           ```
      </Tab>

      <Tab value="Windows" id="windows-1">
        If you plan to use the built-in PostgreSQL database, ensure that the
        [Visual C++ Runtime](https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist#latest-microsoft-visual-c-redistributable-version)
        is installed.

        1. Use the
           [`winget`](https://learn.microsoft.com/en-us/windows/package-manager/winget/#use-winget)
           package manager to install Coder:

           ```powershell
           winget install Coder.Coder
           ```

        2. Start Coder:

           ```shell
           coder server
           ```
      </Tab>
    </OSTab>

    Coder will attempt to open the setup page in your browser. If it doesn't open
    automatically, go to [http://localhost:3000](http://localhost:3000).

    * If you get a browser warning similar to `Secure Site Not Available`, you can
      ignore the warning and continue to the setup page.

    If your Coder server is on a network or cloud device, or you are having trouble
    viewing the page, locate the web UI URL in Coder logs in your terminal. It looks
    like `https://<CUSTOM-STRING>.<TUNNEL>.try.coder.app`. It's one of the first
    lines of output, so you might have to scroll up to find it.
  </div>

  <div className="fd-step">
    ## Initial Setup

    1. **Create your admin account:**

       * Username: `yourname` (lowercase, no spaces)
       * Email: `your.email@example.com`
       * Password: Choose a strong password

       You can also choose to **Continue with GitHub** instead of creating an admin
       account. The first user that signs in is automatically granted admin
       permissions.

       ![Welcome to Coder - Create admin user](/docs/images/screenshots/welcome-create-admin-user.png)
  </div>

  <div className="fd-step">
    ## Create your First Template and Workspace

    <Callout type="success" title="Tip">
      If you use an AI coding assistant, the [coder-templates](https://github.com/coder/registry/blob/main/.agents/skills/coder-templates/SKILL.md) agent skill can guide you through creating and customizing templates with best practices built-in.
    </Callout>

    Templates define what's in your development environment. Let's start simple:

    1. Click &#x2A;*"Templates"*&#x2A; → &#x2A;*"New Template"**

    2. **Choose a starter template:**

       | Starter                             | Best For                                                | Includes                                               |
       | ----------------------------------- | ------------------------------------------------------- | ------------------------------------------------------ |
       | **Docker Containers** (Recommended) | Getting started quickly, local development, prototyping | Ubuntu container with common dev tools, Docker runtime |
       | **Kubernetes (Deployment)**         | Cloud-native teams, scalable workspaces                 | Pod-based workspaces, Kubernetes orchestration         |
       | **AWS EC2 (Linux)**                 | Teams needing full VMs, AWS-native infrastructure       | Full EC2 instances with AWS integration                |

    3. Click &#x2A;*"Use template"** on **Docker Containers**. Note: running this template requires Docker to be running in the background, so make sure Docker is running!

    4. **Name your template:**
       * Name: `quickstart`
       * Display name: `quickstart doc template`
       * Description: `Provision Docker containers as Coder workspaces`

    5. Click &#x2A;*"Save"**

       ![Create template](/docs/images/screenshots/create-template.png)

    **What just happened?** You defined a template — a reusable blueprint for dev
    environments — in your Coder deployment. It's now stored in your organization's
    template list, where you and any teammates in the same org can create workspaces
    from it. Let's launch one.
  </div>

  <div className="fd-step">
    ## Launch your Workspace

    1. After the template is ready, select **Create Workspace**.

    2. Give the workspace a name and select **Create Workspace**.

    3. Coder starts your new workspace:

       ![getting-started-workspace is running](/docs/images/screenshots/workspace-running-with-topbar.png)*Workspace
       is running*
  </div>

  <div className="fd-step">
    ## Connect your IDE

    Select **VS Code Desktop** to install the Coder extension and connect to your
    Coder workspace.

    After VS Code loads the remote environment, you can select **Open Folder** to
    explore directories in the Docker container or work on something new.

    ![Changing directories in VS Code](/docs/images/screenshots/change-directory-vscode.png)

    To clone an existing repository:

    1. Select **Clone Repository** and enter the repository URL.

       For example, to clone the Coder repo, enter
       `https://github.com/coder/coder.git`.

       Learn more about how to find the repository URL in the
       [GitHub documentation](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository).

    2. Choose the folder to which VS Code should clone the repo. It will be in its
       own directory within this folder.

       Note that you cannot create a new parent directory in this step.

    3. After VS Code completes the clone, select **Open** to open the directory.

    4. You are now using VS Code in your Coder environment!
  </div>
</div>

## Success! You're Coding in Coder

You now have:

* **Coder server** running locally
* **A template** defining your environment
* **A workspace** running that environment
* **IDE access** to code remotely

### What's Next?

Now that you have your own workspace running, you can start exploring more
advanced capabilities that Coder offers.

* [Try Coder Agents](/docs/@v2.33.6/ai-coder/agents/getting-started/), the chat
  interface and API for delegating development work to coding agents in your
  Coder deployment.

* [Read about managing Workspaces for your team](/docs/@v2.33.6/user-guides/workspace-management/)

* [Read about implementing monitoring tools for your Coder Deployment](/docs/@v2.33.6/admin/monitoring/)

## Troubleshooting

### Cannot connect to the Docker daemon

> Error: Error pinging Docker server: Cannot connect to the Docker daemon at
> unix:///var/run/docker.sock. Is the docker daemon running?

1. Install Docker for your system:

   ```shell
   curl -sSL https://get.docker.com | sh
   ```

2. Set up the Docker daemon in rootless mode for your user to run Docker as a
   non-privileged user:

   ```shell
   dockerd-rootless-setuptool.sh install
   ```

   Depending on your system's dependencies, you might need to run other commands
   before you retry this step. Read the output of this command for further
   instructions.

3. Assign your user to the Docker group:

   ```shell
   sudo usermod -aG docker $USER
   ```

4. Confirm that the user has been added:

   ```console
   $ groups
   docker sudo users
   ```

   * Ubuntu users might not see the group membership update. In that case, run
     the following command or reboot the machine:

     ```shell
     newgrp docker
     ```

### Can't start Coder server: Address already in use

```shell
Encountered an error running "coder server", see "coder server --help" for more information
error: configure http(s): listen tcp 127.0.0.1:3000: bind: address already in use
```

1. Stop the process:

   ```shell
   sudo systemctl stop coder
   ```

2. Start Coder:

   ```shell
   coder server
   ```
