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 17 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
51 changes: 17 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,47 +56,30 @@ 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:

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`
- [install script](./docs/install.md#installsh) (MacOS & Linux). The script uses the system package manager if possible.
- with [system packages](./docs/install.md#system-packages) (Debian, Fedora, Alpine)
- with [Docker or docker-compose](./docs/install.md#docker-compose) (MacOS, Windows, Linux)
- [manually](./docs/install.md#manual) (MacOS, Windows, Linux)

```sh
# ex. MacOS and Linux
mv coder /usr/local/bin
```
If you use the install script, you can preview what occurs during the install process:

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
82 changes: 82 additions & 0 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 @@ -99,3 +151,33 @@ access URL, or you can connect to it via SSH by running:
```console
coder ssh [workspace name]
```

## 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

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
```
Loading