Remote development environments on your infrastructure
Go to file
Kyle Carberry 2ba4a62a0d
feat: Add high availability for multiple replicas (#4555)
* feat: HA tailnet coordinator

* fixup! feat: HA tailnet coordinator

* fixup! feat: HA tailnet coordinator

* remove printlns

* close all connections on coordinator

* impelement high availability feature

* fixup! impelement high availability feature

* fixup! impelement high availability feature

* fixup! impelement high availability feature

* fixup! impelement high availability feature

* Add replicas

* Add DERP meshing to arbitrary addresses

* Move packages to highavailability folder

* Move coordinator to high availability package

* Add flags for HA

* Rename to replicasync

* Denest packages for replicas

* Add test for multiple replicas

* Fix coordination test

* Add HA to the helm chart

* Rename function pointer

* Add warnings for HA

* Add the ability to block endpoints

* Add flag to disable P2P connections

* Wow, I made the tests pass

* Add replicas endpoint

* Ensure close kills replica

* Update sql

* Add database latency to high availability

* Pipe TLS to DERP mesh

* Fix DERP mesh with TLS

* Add tests for TLS

* Fix replica sync TLS

* Fix RootCA for replica meshing

* Remove ID from replicasync

* Fix getting certificates for meshing

* Remove excessive locking

* Fix linting

* Store mesh key in the database

* Fix replica key for tests

* Fix types gen

* Fix unlocking unlocked

* Fix race in tests

* Update enterprise/derpmesh/derpmesh.go

Co-authored-by: Colin Adler <colin1adler@gmail.com>

* Rename to syncReplicas

* Reuse http client

* Delete old replicas on a CRON

* Fix race condition in connection tests

* Fix linting

* Fix nil type

* Move pubsub to in-memory for twenty test

* Add comment for configuration tweaking

* Fix leak with transport

* Fix close leak in derpmesh

* Fix race when creating server

* Remove handler update

* Skip test on Windows

* Fix DERP mesh test

* Wrap HTTP handler replacement in mutex

* Fix error message for relay

* Fix API handler for normal tests

* Fix speedtest

* Fix replica resend

* Fix derpmesh send

* Ping async

* Increase wait time of template version jobd

* Fix race when closing replica sync

* Add name to client

* Log the derpmap being used

* Don't connect if DERP is empty

* Improve agent coordinator logging

* Fix lock in coordinator

* Fix relay addr

* Fix race when updating durations

* Fix client publish race

* Run pubsub loop in a queue

* Store agent nodes in order

* Fix coordinator locking

* Check for closed pipe

Co-authored-by: Colin Adler <colin1adler@gmail.com>
2022-10-17 13:43:30 +00:00
.devcontainer docs(contributing): enable contribution via devcontainer (#3970) 2022-09-14 10:30:12 -07:00
.github feat: add doas support (#4531) 2022-10-16 02:18:30 +00:00
.vscode feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
agent feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
buildinfo feat: add version checking to CLI (#2725) 2022-06-29 17:49:40 -05:00
cli feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
cmd fix: Don't use StatusAbnormalClosure (#4155) 2022-09-22 18:26:05 +00:00
coderd feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
codersdk feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
cryptorand chore: Upgrade to Go 1.19 (#3617) 2022-08-21 22:32:53 +00:00
docs feat: audit git ssh key regeneration (#4544) 2022-10-14 16:25:46 -05:00
dogfood feat: app sharing (now open source!) (#4378) 2022-10-15 02:46:38 +10:00
enterprise feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
examples feat: app sharing (now open source!) (#4378) 2022-10-15 02:46:38 +10:00
helm feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
provisioner feat: app sharing (now open source!) (#4378) 2022-10-15 02:46:38 +10:00
provisionerd feat: trace httpapi.{Read,Write} (#4134) 2022-09-21 17:07:00 -05:00
provisionersdk feat: app sharing (now open source!) (#4378) 2022-10-15 02:46:38 +10:00
pty fix: Terminal emulation used by SSH sessions (#3473) 2022-09-12 19:27:51 +03:00
scripts fix: use more descriptive login flags (#4493) 2022-10-11 18:45:30 +00:00
site feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
tailnet feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
testutil feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
.editorconfig fix: Improve code coverage reporting in codecov (#2715) 2022-07-25 19:55:19 +03:00
.gitattributes fix: Improve Terraform agent<->resource association testing (#2187) 2022-06-08 17:40:34 -05:00
.gitignore docs: simplify Docker quickstart (#4257) 2022-09-29 17:55:15 -05:00
.golangci.yaml chore: avoid concurrent usage of t.FailNow (#1683) 2022-05-24 08:58:39 +01:00
ADOPTERS.md Update Coder contact at ADOPTERS.md (#3861) 2022-09-04 09:15:25 -05:00
Dockerfile Add `coder` binary to Dockerfile `$PATH` (#4189) 2022-09-24 02:25:15 +00:00
LICENSE chore: Add license (#841) 2022-04-04 11:55:06 -05:00
LICENSE.enterprise Add Enterprise License text (#3932) 2022-09-07 16:55:57 +00:00
Makefile chore: Remove extra typegen (#4243) 2022-09-28 16:58:50 +00:00
README.md feat: Add tunnel by default (#4399) 2022-10-07 08:05:56 -05:00
coder.env feat: Add tunnel by default (#4399) 2022-10-07 08:05:56 -05:00
coder.service Fix docs links (#3351) 2022-08-02 01:22:14 -04:00
docker-compose.yaml feat: Add tunnel by default (#4399) 2022-10-07 08:05:56 -05:00
flake.lock chore: Add nix shell for simple development setup (#3399) 2022-08-08 15:49:12 +00:00
flake.nix chore: Refactor Enterprise code to layer on top of AGPL (#4034) 2022-09-19 23:11:01 -05:00
go.mod feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
go.sum feat: Add high availability for multiple replicas (#4555) 2022-10-17 13:43:30 +00:00
install.sh feat: add doas support (#4531) 2022-10-16 02:18:30 +00:00
preinstall.sh fix: Refactor preinstall script to use useradd if adduser is not available (#2858) 2022-07-08 16:09:19 -05:00
shell.nix chore: Add nix shell for simple development setup (#3399) 2022-08-08 15:49:12 +00:00
yarn.lock feat: add template RBAC/groups (#4235) 2022-10-10 15:37:06 -05:00

README.md

Coder

"Join us onDiscord" codecov Go Reference TwitterFollow

Coder creates remote development machines so your team can develop from anywhere.

Manage less

  • Ensure your entire team is using the same tools and resources
    • Rollout critical updates to your developers with one command
  • Automatically shut down expensive cloud resources
  • Keep your source code and data behind your firewall

Code more

  • Build and test faster
    • Leveraging cloud CPUs, RAM, network speeds, etc.
  • Access your environment from any place on any client (even an iPad)
  • Onboard instantly then stay up to date continuously

Getting Started

Note: Coder is in a beta state. Report issues here.

The easiest way to install Coder is to use our install script for Linux and macOS.

To install, run:

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

You can preview what occurs during the install process:

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

You can modify the installation process by including flags. Run the help command for reference:

curl -L https://coder.com/install.sh | sh -s -- --help

See install for additional methods.

Once installed, you can start a production deployment1 with a single command:

# Automatically sets up an external access URL on *.try.coder.app
coder server

# Requires a PostgreSQL instance and external access URL
coder server --postgres-url <url> --access-url <url>

1 The embedded database is great for trying out Coder with small deployments, but do consider using an external database for increased assurance and control.

Use coder --help to get a complete list of flags and environment variables. Use our quickstart guide for a full walkthrough.

Documentation

Visit our docs here.

Comparison

Please file an issue if any information is out of date. Also refer to: What Coder is not.

Tool Type Delivery Model Cost Environments
Coder Platform OSS + Self-Managed Pay your cloud All Terraform resources, all clouds, multi-architecture: Linux, Mac, Windows, containers, VMs, amd64, arm64
code-server Web IDE OSS + Self-Managed Pay your cloud Linux, Mac, Windows, containers, VMs, amd64, arm64
Coder (Classic) Platform Self-Managed Pay your cloud + license fees Kubernetes Linux Containers
GitHub Codespaces Platform SaaS 2x Azure Compute Linux containers

Last updated: 5/27/22

Community and Support

Join our community on Discord and Twitter!

Suggest improvements and report problems

Contributing

If you're using Coder in your organization, please try to add your company name to the ADOPTERS.md. It really helps the project to gain momentum and credibility. It's a small contribution back to the project with a big impact.

Read the contributing docs.

Find our list of contributors here.