-
Notifications
You must be signed in to change notification settings - Fork 894
feat: initial docs pages #1107
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
feat: initial docs pages #1107
Changes from 12 commits
eba2d48
1283422
8cb6a88
4c1b767
d5f5116
de9f3af
892122c
c526982
68da32e
808767e
c8f1e25
a803f8a
1bb34bd
97f03e0
0485c6c
0e1bc57
57d4d0f
fc48d53
361decc
950ee85
afac7ee
e67dabb
325c46c
e37e4a4
c010530
3bf7d4f
ebcb866
9c18282
3e4318a
8c93ae2
75af45b
2ef477d
c875319
81435b5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# About Coder | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This page was heavily inspired by https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ |
||
|
||
Coder is an open source platform for creating and managing developer workspaces on your preferred clouds and servers. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think there should be a screenshot to break up the text-heavy stuff |
||
By building on top of common development interfaces (SSH) and infrastructure tools (Terraform), Coder aims to make the process of **provisioning** and **accessing** remote workspaces approachable for organizations of various sizes and stages of cloud-native maturity. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Love this sentence 👏🏼 |
||
|
||
> ⚠️ Coder v2 is in alpha and not ready for production use. You may be interested in [Coder v1](https://coder.com/docs) or [code-server](https://github.com/cdr/code-server). | ||
|
||
## Why remote development | ||
|
||
Migrating from local developer machines to remote servers is an increasingly common solution for developers[^1] and organizations[^2] alike. Remote development has a number of benefits: | ||
|
||
- Speed: Server-grade compute speeds up operations in software development such as IDE loads, compiles, builds, and running large workloads (monolyth or microservice applications). | ||
bpmct marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- Environment management: Onboarding & troubleshooting development environments is automated using tools such as Terraform, nix, Docker, devcontainers, etc. | ||
|
||
- Security: Source code and other data can be centralized on private servers or cloud, instead of local developer machines. | ||
bpmct marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- Compatibility: Remote workspaces share infrastructure configuration with other developer, staging, and production environments, reducing configuration drift. | ||
|
||
- Accessibility: Devices such as light notebooks, Chromebooks, and iPads connect to remote workspaces via browser-based IDEs or remote IDE extensions. | ||
|
||
## Why Coder? | ||
|
||
The added layer of infrastructure control is a key differentiator from Coder v1 and other remote IDE platforms. This gives admins the ability to: | ||
|
||
- support ARM, Windows, Linux, and MacOS workspaces | ||
- modify pod/container spec: add disks, manage network policy, environment variables | ||
- use VM/dedicated workspaces: develop with Kernel features, container knowledge not required | ||
- enable persistent workspaces: just like a local machine, but faster and in the cloud | ||
|
||
Coder includes [production-ready templates](../examples) for use on Kubernetes, AWS EC2, Google Cloud, Azure, and more. | ||
|
||
## What Coder is not | ||
bpmct marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- Coder is an infrastructure as code (IaC) platform. Terraform is the first IaC *provisioner* in Coder. As a result, Coder admins can define any Terraform resources can as Coder workspaces. | ||
|
||
- Coder is not a DevOps/CI platform. Coder workspaces can follow best practices for cloud workloads, but Coder is not responsible for how you define or deploy the software you write. | ||
|
||
- Coder is not an online IDE. Instead, Coder has strong support for common editors such as VS Code, vim, and JetBrains, over HTTPS or SSH. | ||
|
||
- Coder is not a collaboration platform. You can continue using git and IDE extensions for pull requests, code reviews, and pair programming. | ||
|
||
- Coder is not SaaS/fully-managed. Install Coder on your cloud (AWS, GCP, Azure) or datacenter. | ||
|
||
--- | ||
|
||
Next: [Templates](./templates.md) | ||
|
||
[^1]: alexellis.io: [The Internet is my computer](https://blog.alexellis.io/the-internet-is-my-computer/) | ||
|
||
[^2]: slack.engineering: [Development environments at Slack](https://slack.engineering/development-environments-at-slack) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Templates | ||
|
||
Coder admins manage *templates* to define the infrastructure behind workspaces. A Coder deployment can have multiple templates for different workloads, such as "frontend development," "windows development," etc. | ||
|
||
Templates are shared and updates can be rolled out, or users can manually update their workspaces. | ||
|
||
## Manage templates | ||
|
||
Coder provides production-ready template [examples](../examples/), but they can be modified with Terraform. | ||
|
||
```sh | ||
# start from an example | ||
coder templates init | ||
|
||
# optional: modify the template | ||
vim <template-name>/main.tf | ||
|
||
# add the template to Coder deployment | ||
coder templates <create/update> <template-name> | ||
``` | ||
|
||
If you are commonly editing templates, we recommend source-controlling template code using GitOps/CI pipelines to make changes. | ||
|
||
## Persistent and ephemeral resources | ||
|
||
Coder supports ephemeral and persistent resources in workspaces. Ephemeral resources are be destroyed when a workspace is not in use (stopped). persistent resources remain. See how this works for an example "frontend" template: | ||
bpmct marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
| Resource | Type | | ||
| :--------------------------- | :--------- | | ||
| google_compute_disk.home_dir | persistent | | ||
| kubernetes_pod.dev | ephemeral | | ||
| └─ nodejs (linux, amd64) | | | ||
| api_token.backend | ephemeral | | ||
|
||
When a workspace is deleted, all related resources are destroyed. | ||
bpmct marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Variables | ||
bpmct marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Templates often contain *variables*. In Coder, there are two types of variables. | ||
|
||
**Admin variables** are set when a template is being created/updated. These are often cloud secrets, such as a ServiceAccount token. These are annotated with `sensitive = true` in the template code. | ||
|
||
**User variables** are set when a user creates a workspace. They are unique to each workspace, often personalization settings such as preferred region or workspace image. | ||
|
||
--- | ||
|
||
Next: [Workspaces](./workspaces.md) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# Workspaces | ||
|
||
Workspaces contain the dependencies, IDEs, and configuration information needed for software development. | ||
|
||
## Create workspaces | ||
|
||
Each Coder user has their own workspaces, created from a shared [template](./templates.md). | ||
|
||
```sh | ||
# create a workspace from template, specify any variables | ||
coder workspaces create <workspace-name> | ||
|
||
# show the resources behind the workspace, and how to connect | ||
coder workspaces show <workspace-name> | ||
``` | ||
|
||
## Connect with SSH | ||
|
||
Once Coder workspaces are added to your SSH hosts, you can connect from any IDE with remote development support. | ||
|
||
```sh | ||
coder config-ssh | ||
|
||
ssh coder.<workspace-name> | ||
``` | ||
|
||
## Editors and IDEs | ||
|
||
The following desktop IDEs have been tested with Coder. Any IDE with SSH support should work! | ||
|
||
- VS Code (with [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) extension) | ||
- JetBrains (with [Gateway](https://www.jetbrains.com/help/idea/remote-development-a.html#launch_gateway) installed) | ||
- IntelliJ IDEA | ||
- CLion | ||
- GoLand | ||
- PyCharm | ||
- Rider | ||
- RubyMine | ||
- WebStorm | ||
|
||
## Workspace lifecycle | ||
|
||
Workspaces in Coder are started and stopped, often based on activity or when a [template update](./templates.md#manage-templates) is available. | ||
|
||
While the exact behavior depends on the template, resources are often destroyed and re-created when a workspace is restarted. For more details, see [persistent and ephemeral resources](./templates.md#persistent-and-ephemeral-resources). | ||
|
||
> ⚠️ To avoid data loss, reference your template documentation to see where to store files, install software, etc. Default templates are documented in [../examples](../examples/). | ||
> | ||
> You can use `coder workspace show <workspace-name>` to see which resources are persistent vs ephemeral. | ||
|
||
When a workspace is deleted, all of the workspace's resources are deleted. | ||
|
||
## Updating workspaces | ||
|
||
Use the following command to update a workspace to the latest version of a template. The workspace will be stopped and started. | ||
|
||
```sh | ||
coder workspaces update <workspace-name> | ||
``` |
Uh oh!
There was an error while loading. Please reload this page.