2023-08-23 09:27:57 +00:00
|
|
|
You can install and run Coder using the official Docker images published on
|
|
|
|
[GitHub Container Registry](https://github.com/coder/coder/pkgs/container/coder).
|
2022-09-08 19:41:00 +00:00
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
2023-08-23 09:27:57 +00:00
|
|
|
Docker is required. See the
|
|
|
|
[official installation documentation](https://docs.docker.com/install/).
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2023-08-23 09:27:57 +00:00
|
|
|
> Note that the below steps are only supported on a Linux distribution. If on
|
2024-01-23 00:45:34 +00:00
|
|
|
> macOS, please [run Coder via the standalone binary](./index.md#manual).
|
2023-03-26 12:39:20 +00:00
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
<div class="tabs">
|
|
|
|
|
|
|
|
## docker run
|
|
|
|
|
|
|
|
**Built-in database (quick)**
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2023-08-23 09:27:57 +00:00
|
|
|
For proof-of-concept deployments, you can run a complete Coder instance with the
|
|
|
|
following command.
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-01-10 12:00:19 +00:00
|
|
|
```shell
|
2022-09-08 19:41:00 +00:00
|
|
|
export CODER_DATA=$HOME/.config/coderv2-docker
|
2022-09-28 13:33:36 +00:00
|
|
|
export DOCKER_GROUP=$(getent group docker | cut -d: -f3)
|
2022-09-08 19:41:00 +00:00
|
|
|
mkdir -p $CODER_DATA
|
|
|
|
docker run --rm -it \
|
|
|
|
-v $CODER_DATA:/home/coder/.config \
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
2022-09-28 13:33:36 +00:00
|
|
|
--group-add $DOCKER_GROUP \
|
2022-09-08 19:41:00 +00:00
|
|
|
ghcr.io/coder/coder:latest
|
|
|
|
```
|
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
**External database**
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2022-10-18 00:24:49 +00:00
|
|
|
For production deployments, we recommend using an external PostgreSQL database
|
2024-02-16 12:53:03 +00:00
|
|
|
(version 13 or higher). Set `CODER_ACCESS_URL` to the external URL that users
|
|
|
|
and workspaces will use to connect to Coder.
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-01-10 12:00:19 +00:00
|
|
|
```shell
|
2024-02-16 12:53:03 +00:00
|
|
|
export DOCKER_GROUP=$(getent group docker | cut -d: -f3)
|
2022-09-08 19:41:00 +00:00
|
|
|
docker run --rm -it \
|
|
|
|
-e CODER_ACCESS_URL="https://coder.example.com" \
|
|
|
|
-e CODER_PG_CONNECTION_URL="postgresql://username:password@database/coder" \
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
2024-02-16 12:53:03 +00:00
|
|
|
--group-add $DOCKER_GROUP \
|
2022-09-08 19:41:00 +00:00
|
|
|
ghcr.io/coder/coder:latest
|
|
|
|
```
|
|
|
|
|
2024-01-16 07:19:58 +00:00
|
|
|
## docker compose
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2023-08-23 09:27:57 +00:00
|
|
|
Coder's publishes a
|
|
|
|
[docker-compose example](https://github.com/coder/coder/blob/main/docker-compose.yaml)
|
|
|
|
which includes an PostgreSQL container and volume.
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
1. Make sure you have [Docker Compose](https://docs.docker.com/compose/install/)
|
|
|
|
installed.
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
2. Download the
|
|
|
|
[`docker-compose.yaml`](https://github.com/coder/coder/blob/main/docker-compose.yaml)
|
|
|
|
file.
|
2022-09-28 13:33:36 +00:00
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
3. Update `group_add:` in `docker-compose.yaml` with the `gid` of `docker`
|
|
|
|
group. You can get the `docker` group `gid` by running the below command:
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-01-10 12:00:19 +00:00
|
|
|
```shell
|
2024-02-16 12:53:03 +00:00
|
|
|
getent group docker | cut -d: -f3
|
2022-09-13 14:53:41 +00:00
|
|
|
```
|
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
4. Start Coder with `docker compose up`
|
2022-09-13 14:53:41 +00:00
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
5. Visit the web ui via the configured url.
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
6. Follow the on-screen instructions log in and create your first template and
|
2023-08-23 09:27:57 +00:00
|
|
|
workspace
|
2022-09-08 19:41:00 +00:00
|
|
|
|
2024-01-10 12:00:19 +00:00
|
|
|
</div>
|
|
|
|
|
2024-02-16 12:53:03 +00:00
|
|
|
Coder configuration is defined via environment variables. Learn more about
|
|
|
|
Coder's [configuration options](../admin/configure.md).
|
|
|
|
|
|
|
|
> **Note:** In order to use cloud-based templates (e.g. Kubernetes, AWS), you
|
|
|
|
> must have an external URL that users and workspaces will use to connect to
|
|
|
|
> Coder.
|
|
|
|
>
|
|
|
|
> > For proof-of-concept deployments, you can use
|
|
|
|
> > [Coder's tunnel](../admin/configure.md#tunnel).
|
|
|
|
> >
|
|
|
|
> > For production deployments, we recommend setting an
|
|
|
|
> > [access URL](../admin/configure.md#access-url)
|
|
|
|
|
|
|
|
> **Note:** Coder runs as a non-root user, we use `--group-add` to ensure Coder
|
|
|
|
> has permissions to manage Docker via `docker.sock`. If the host systems
|
|
|
|
> `/var/run/docker.sock` is not group writeable or does not belong to the
|
|
|
|
> `docker` group, the above may not work as-is.
|
|
|
|
|
2022-09-08 19:41:00 +00:00
|
|
|
## Troubleshooting
|
|
|
|
|
|
|
|
### Docker-based workspace is stuck in "Connecting..."
|
|
|
|
|
2023-08-23 09:27:57 +00:00
|
|
|
Ensure you have an externally-reachable `CODER_ACCESS_URL` set. See
|
|
|
|
[troubleshooting templates](../templates/index.md#troubleshooting-templates) for
|
|
|
|
more steps.
|
2022-09-08 19:41:00 +00:00
|
|
|
|
|
|
|
### Permission denied while trying to connect to the Docker daemon socket
|
|
|
|
|
2023-08-23 09:27:57 +00:00
|
|
|
See Docker's official documentation to
|
|
|
|
[Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)
|
2022-09-08 19:41:00 +00:00
|
|
|
|
|
|
|
## Next steps
|
|
|
|
|
|
|
|
- [Configuring Coder](../admin/configure.md)
|
2023-06-02 20:56:06 +00:00
|
|
|
- [Templates](../templates/index.md)
|