mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
260 lines
8.6 KiB
Markdown
260 lines
8.6 KiB
Markdown
# Install
|
|
|
|
## install.sh
|
|
|
|
The easiest way to install Coder is to use our [install script](https://github.com/coder/coder/blob/main/install.sh) for Linux and macOS.
|
|
|
|
To install, run:
|
|
|
|
```bash
|
|
curl -fsSL https://coder.com/install.sh | sh
|
|
```
|
|
|
|
You can preview what occurs during the install process:
|
|
|
|
```bash
|
|
curl -fsSL https://coder.com/install.sh | sh -s -- --dry-run
|
|
```
|
|
|
|
You can modify the installation process by including flags. Run the help command for reference:
|
|
|
|
```bash
|
|
curl -fsSL https://coder.com/install.sh | sh -s -- --help
|
|
```
|
|
|
|
## System packages
|
|
|
|
Coder publishes the following system packages [in GitHub releases](https://github.com/coder/coder/releases):
|
|
|
|
- .deb (Debian, Ubuntu)
|
|
- .rpm (Fedora, CentOS, RHEL, SUSE)
|
|
- .apk (Alpine)
|
|
|
|
Once installed, you can run Coder as a system service:
|
|
|
|
```sh
|
|
# Set up an external access URL or enable CODER_TUNNEL
|
|
sudo vim /etc/coder.d/coder.env
|
|
# Use systemd to start Coder now and on reboot
|
|
sudo systemctl enable --now coder
|
|
# View the logs to ensure a successful start
|
|
journalctl -u coder.service -b
|
|
```
|
|
|
|
## docker-compose
|
|
|
|
Before proceeding, please ensure that you have both Docker and the [latest version of
|
|
Coder](https://github.com/coder/coder/releases) installed.
|
|
|
|
> See our [docker-compose](https://github.com/coder/coder/blob/main/docker-compose.yaml) file
|
|
> for additional information.
|
|
|
|
1. Clone the `coder` repository:
|
|
|
|
```console
|
|
git clone https://github.com/coder/coder.git
|
|
```
|
|
|
|
2. Navigate into the `coder` folder and run `docker-compose up`:
|
|
|
|
```console
|
|
cd coder
|
|
# Coder will bind to localhost:7080.
|
|
# You may use localhost:7080 as your access URL
|
|
# when using Docker workspaces exclusively.
|
|
# CODER_ACCESS_URL=http://localhost:7080
|
|
# Otherwise, an internet accessible access URL
|
|
# is required.
|
|
CODER_ACCESS_URL=https://coder.mydomain.com
|
|
docker-compose up
|
|
```
|
|
|
|
Otherwise, you can start the service:
|
|
|
|
```console
|
|
cd coder
|
|
docker-compose up
|
|
```
|
|
|
|
Alternatively, if you would like to start a **temporary deployment**:
|
|
|
|
```console
|
|
docker run --rm -it \
|
|
-e CODER_DEV_MODE=true \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
ghcr.io/coder/coder:v0.5.10
|
|
```
|
|
|
|
3. Follow the on-screen instructions to create your first template and workspace
|
|
|
|
If the user is not in the Docker group, you will see the following error:
|
|
|
|
```sh
|
|
Error: Error pinging Docker server: Got permission denied while trying to connect to the Docker daemon socket
|
|
```
|
|
|
|
The default docker socket only permits connections from `root` or members of the `docker`
|
|
group. Remedy like this:
|
|
|
|
```sh
|
|
# replace "coder" with user running coderd
|
|
sudo usermod -aG docker coder
|
|
grep /etc/group -e "docker"
|
|
sudo systemctl restart coder.service
|
|
```
|
|
|
|
## Kubernetes via Helm
|
|
|
|
Before proceeding, please ensure that you have both Helm 3.5+ and the
|
|
[latest version of Coder](https://github.com/coder/coder/releases) installed.
|
|
You will also need to have a Kubernetes cluster running K8s 1.19+.
|
|
|
|
> See our [Helm README](https://github.com/coder/coder/blob/main/helm#readme)
|
|
> file for additional information. Check the
|
|
> [values.yaml](https://github.com/coder/coder/blob/main/helm/values.yaml) file
|
|
> for a list of supported Helm values and their defaults.
|
|
|
|
> ⚠️ **Warning**: Helm support is new and not yet complete. There may be changes
|
|
> to the Helm chart between releases which require manual values updates. Please
|
|
> file an issue if you run into any issues.
|
|
>
|
|
> Additionally, the Helm chart does not currently automatically configure a
|
|
> Service Account and workspace template for use in Coder. See
|
|
> [#3265](https://github.com/coder/coder/issues/3265).
|
|
|
|
1. Create a namespace for Coder, such as `coder`:
|
|
|
|
```console
|
|
$ kubectl create namespace coder
|
|
```
|
|
|
|
1. Create a PostgreSQL deployment. Coder does not manage a database server for
|
|
you.
|
|
|
|
- If you're in a public cloud such as
|
|
[Google Cloud](https://cloud.google.com/sql/docs/postgres/),
|
|
[AWS](https://aws.amazon.com/rds/postgresql/),
|
|
[Azure](https://docs.microsoft.com/en-us/azure/postgresql/), or
|
|
[DigitalOcean](https://www.digitalocean.com/products/managed-databases-postgresql),
|
|
you can use the managed PostgreSQL offerings they provide. Make sure that
|
|
the PostgreSQL service is running and accessible from your cluster. It
|
|
should be in the same network, same project, etc.
|
|
|
|
- You can install Postgres manually on your cluster using the
|
|
[Bitnami PostgreSQL Helm chart](https://github.com/bitnami/charts/tree/master/bitnami/postgresql#readme). There are some
|
|
[helpful guides](https://phoenixnap.com/kb/postgresql-kubernetes) on the
|
|
internet that explain sensible configurations for this chart. Example:
|
|
|
|
```console
|
|
$ helm repo add bitnami https://charts.bitnami.com/bitnami
|
|
$ helm install postgres bitnami/postgresql \
|
|
--namespace coder \
|
|
--set auth.username=coder \
|
|
--set auth.password=coder \
|
|
--set auth.database=coder \
|
|
--set persistence.size=10Gi
|
|
```
|
|
|
|
The cluster-internal DB URL for the above database is:
|
|
```
|
|
postgres://coder:coder@postgres-postgresql.coder.svc.cluster.local:5432/coder?sslmode=disable
|
|
```
|
|
|
|
> Ensure you set up periodic backups so you don't lose data.
|
|
|
|
- You can use
|
|
[Postgres operator](https://github.com/zalando/postgres-operator) to
|
|
manage PostgreSQL deployments on your Kubernetes cluster.
|
|
|
|
1. Download the latest `coder_helm` package from
|
|
[GitHub releases](https://github.com/coder/coder/releases).
|
|
|
|
1. Create a `values.yaml` with the configuration settings you'd like for your
|
|
deployment. For example:
|
|
|
|
```yaml
|
|
coder:
|
|
# You can specify any environment variables you'd like to pass to Coder
|
|
# here. Coder consumes environment variables listed in
|
|
# `coder server --help`, and these environment variables are also passed
|
|
# to the workspace provisioner (so you can consume them in your Terraform
|
|
# templates for auth keys etc.).
|
|
#
|
|
# Please keep in mind that you should not set `CODER_ADDRESS`,
|
|
# `CODER_TLS_ENABLE`, `CODER_TLS_CERT_FILE` or `CODER_TLS_KEY_FILE` as
|
|
# they are already set by the Helm chart and will cause conflicts.
|
|
env:
|
|
- name: CODER_ACCESS_URL
|
|
value: "https://coder.example.com"
|
|
- name: CODER_PG_CONNECTION_URL
|
|
valueFrom:
|
|
secretKeyRef:
|
|
# You'll need to create a secret called coder-db-url with your
|
|
# Postgres connection URL like:
|
|
# postgres://coder:password@postgres:5432/coder?sslmode=disable
|
|
name: coder-db-url
|
|
key: url
|
|
|
|
tls:
|
|
secretName: my-tls-secret-name
|
|
```
|
|
|
|
> You can view our
|
|
> [Helm README](https://github.com/coder/coder/blob/main/helm#readme) for
|
|
> details on the values that are available, or you can view the
|
|
> [values.yaml](https://github.com/coder/coder/blob/main/helm/values.yaml)
|
|
> file directly.
|
|
|
|
1. Run the following commands to install the chart in your cluster.
|
|
|
|
```console
|
|
$ helm install coder ./coder_helm_x.y.z.tgz \
|
|
--namespace coder \
|
|
--values values.yaml
|
|
```
|
|
|
|
You can watch Coder start up by running `kubectl get pods`. Once Coder has
|
|
started, the `coder-*` pods should enter the `Running` state.
|
|
|
|
You can view Coder's logs by getting the pod name from `kubectl get pods` and
|
|
then running `kubectl logs <pod name>`. You can also view these logs in your
|
|
Cloud's log management system if you are using managed Kubernetes.
|
|
|
|
To upgrade Coder in the future, you can run the following command with a new `coder_helm_x.y.z.tgz` file from GitHub releases:
|
|
|
|
```console
|
|
$ helm upgrade coder ./coder_helm_x.y.z.tgz \
|
|
--namespace coder \
|
|
-f values.yaml
|
|
```
|
|
|
|
## Manual
|
|
|
|
We publish self-contained .zip and .tar.gz archives in [GitHub releases](https://github.com/coder/coder/releases). The archives bundle `coder` binary.
|
|
|
|
1. Download the [release archive](https://github.com/coder/coder/releases) appropriate for your operating system
|
|
|
|
1. Unzip the folder you just downloaded, and move the `coder` executable to a location that's on your `PATH`
|
|
|
|
```sh
|
|
# ex. macOS and Linux
|
|
mv coder /usr/local/bin
|
|
```
|
|
|
|
> Windows users: see [this guide](https://answers.microsoft.com/en-us/windows/forum/all/adding-path-variable/97300613-20cb-4d85-8d0e-cc9d3549ba23) for adding folders to `PATH`.
|
|
|
|
1. Start a Coder server
|
|
|
|
```sh
|
|
# Automatically sets up an external access URL on *.try.coder.app
|
|
coder server --tunnel
|
|
|
|
# Requires a PostgreSQL instance and external access URL
|
|
coder server --postgres-url <url> --access-url <url>
|
|
```
|
|
|
|
## Up Next
|
|
|
|
- Learn how to [configure](./install/configure.md) Coder.
|
|
- Learn about [upgrading](./install/upgrade.md) Coder.
|