Skip to content

feat: one-line install script #1924

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Jun 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/coder.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ jobs:
- uses: actions/checkout@v3
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@1.1.0
env:
SHELLCHECK_OPTS: --external-sources
Comment on lines +55 to +56
Copy link
Member Author

@bpmct bpmct Jun 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This resolved some warnings around unspecified inputs. See https://www.mankier.com/1/shellcheck#-x and koalaman/shellcheck#902

The error was only for `/etc/os-release` in the script
$ make lint/shellcheck
In install.sh line 424:
                        . /etc/os-release
                          ^-------------^ SC1091: Not following: /etc/os-release was not specified as input (see shellcheck -x).


In install.sh line 450:
                        . /etc/os-release
                          ^-------------^ SC1091: Not following: /etc/os-release was not specified as input (see shellcheck -x).

with:
ignore: node_modules

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ lint/go:
# Use shfmt to determine the shell files, takes editorconfig into consideration.
lint/shellcheck: $(shell shfmt -f .)
@echo "--- shellcheck"
shellcheck $(shell shfmt -f .)
shellcheck --external-sources $(shell shfmt -f .)

peerbroker/proto/peerbroker.pb.go: peerbroker/proto/peerbroker.proto
protoc \
Expand Down
48 changes: 13 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,47 +56,25 @@ You can use any Web IDE ([code-server](https://github.com/coder/code-server), [p

## Installing Coder

We recommend installing [the latest
release](https://github.com/coder/coder/releases) on a system with at least 1
CPU core and 2 GB RAM:
There are a few ways to install Coder: [install script](./docs/install.md#installsh) (macOS, Linux), [docker-compose](./docs/install.md#docker-compose), or [manually](./docs/install.md#manual) via the latest release (macOS, Windows, and Linux).

1. Download the [release asset](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`
If you use the install script, you can preview what occurs during the install process:

```sh
# ex. MacOS and Linux
mv coder /usr/local/bin
```

Windows: see [this guide](https://answers.microsoft.com/en-us/windows/forum/all/adding-path-variable/97300613-20cb-4d85-8d0e-cc9d3549ba23) on adding a folder to `PATH`

There are a few ways to run Coder:

- To run a **temporary deployment**, start with dev mode (all data is in-memory and destroyed on exit):

```bash
coder server --dev
```

- To run a **production deployment** with PostgreSQL:

```bash
CODER_PG_CONNECTION_URL="postgres://<username>@<host>/<database>?password=<password>" \
coder server
```
```sh
curl -fsSL https://coder.com/install.sh | sh -s -- --dry-run
```

- To run as a **system service**, install with `.deb` (Debian, Ubuntu) or `.rpm` (Fedora, CentOS, RHEL, SUSE):
To install, run:

```bash
# Edit the configuration!
sudo vim /etc/coder.d/coder.env
sudo service coder restart
```
```sh
curl -fsSL https://coder.com/install.sh | sh
```

> macOS and Windows users: You'll need to write your own
> configuration to run Coder as a system service.
Once installed, you can run a temporary deployment in dev mode (all data is in-memory and destroyed on exit):

- See the [installation guide](./docs/install.md) for additional ways to run Coder (e.g., docker-compose)
```sh
coder server --dev
```

Use `coder --help` to get a complete list of flags and environment variables.

Expand Down
114 changes: 69 additions & 45 deletions docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,58 @@

This article walks you through the various ways of installing and deploying Coder.

## install.sh

The easiest way to install Coder is to use our [install script](https://github.com/coder/coder/main/install.sh) for Linux and macOS. The install script
attempts to use the system package manager detection-reference if possible.

You can preview what occurs during the install process:

```bash
curl -L https://coder.com/install.sh | sh -s -- --dry-run
```

To install, run:

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

> If you're concerned about the install script's use of `curl | sh` and the
> security implications, please see [this blog
> post](https://sandstorm.io/news/2015-09-24-is-curl-bash-insecure-pgp-verified-install)
> by [sandstorm.io](https://sandstorm.io).
You can modify the installation process by including flags. Run the help command for reference:

```bash
curl -L 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
# Specify a PostgreSQL database
# in the configuration first:
sudo vim /etc/coder.d/coder.env
sudo service coder restart
```

Or run a **temporary deployment** with dev mode (all data is in-memory and destroyed on exit):


```sh
coder server --dev
```

## docker-compose
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@khorne3 I feel like this section is a bit too long. Thoughts on stopping after docker-compose up?

Copy link
Contributor

@khorne3 khorne3 Jun 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think after docker-compose up say, "Follow the on-screen instructions" so people aren't left hanging and then omit the remainder


Before proceeding, please ensure that you have both Docker and the [latest version of
Expand Down Expand Up @@ -40,62 +92,34 @@ Coder](https://github.com/coder/coder/releases) installed.
ghcr.io/coder/coder:v0.5.10
```

1. Open a new terminal window, and run `coder login <yourAccessURL>` to create
your first user (once you've done so, you can navigate to `yourAccessURL` and
log in with these credentials).
1. Follow the on-screen instructions to create your first template and workspace

1. Next, copy a sample template into a new directory so that you can create a custom template in a
subsequent step (be sure that you're working in the directory where you want
your templates stored):
## Manual

```console
coder templates init
```
We publish self-contained .zip and .tar.gz archives in [GitHub releases](https://github.com/coder/coder/releases). The archives bundle `coder` binary.

Choose the "Develop in Docker" example to generate a sample template in the
`docker` subdirectory.
1. Download the [release archive](https://github.com/coder/coder/releases) appropriate for your operating system

1. Navigate into the new directory and create a new template:
1. Unzip the folder you just downloaded, and move the `coder` executable to a location that's on your `PATH`

```console
cd docker
coder templates create
```sh
# ex. MacOS and Linux
mv coder /usr/local/bin
```

Follow the prompts displayed to proceed. When done, you'll see the following
message:
> 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`.

```console
The docker template has been created! Developers can
provision a workspace with this template using:
1. Start a Coder server

coder create --template="docker" [workspace name]
```

1. At this point, you're ready to provision your first workspace:
To run a **temporary deployment**, start with dev mode (all data is in-memory and destroyed on exit):

```console
coder create --template="docker" [workspace name]
```bash
coder server --dev
```

Follow the on-screen prompts to set the parameters for your workspace. If
the process is successful, you'll get information regarding your workspace:
To run a **production deployment** with PostgreSQL:

```console
┌─────────────────────────────────────────────────────────────────┐
│ RESOURCE STATUS ACCESS │
├─────────────────────────────────────────────────────────────────┤
│ docker_container.workspace ephemeral │
│ └─ dev (linux, amd64) ⦾ connecting [0s] coder ssh main │
├─────────────────────────────────────────────────────────────────┤
│ docker_volume.coder_volume ephemeral │
└─────────────────────────────────────────────────────────────────┘
The main workspace has been created!
```bash
CODER_PG_CONNECTION_URL="postgres://<username>@<host>/<database>?password=<password>" \
coder server
```

You can now access your workspace via your web browser by navigating to your
access URL, or you can connect to it via SSH by running:

```console
coder ssh [workspace name]
```
Loading