- Notifications
You must be signed in to change notification settings - Fork1k
docs: add networking#4030
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Merged
docs: add networking#4030
Changes fromall commits
Commits
Show all changes
6 commits Select commitHold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
2 changes: 1 addition & 1 deletiondocs/ides.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
File renamed without changes
17 changes: 12 additions & 5 deletionsdocs/manifest.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
113 changes: 113 additions & 0 deletionsdocs/networking.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
# Networking | ||
Coder's network topology has three types of nodes: | ||
workspaces, coder servers, and users. | ||
The coder server must have an inbound address reachable by users and workspaces, | ||
but otherwise, all topologies _just work_ with Coder. | ||
When possible, we establish direct connections between users and workspaces. | ||
Direct connections are as fast as connecting to the workspace outside of Coder. | ||
When NAT traversal fails, connections are relayed through the coder server. | ||
All user <-> workspace connections are end-to-end encrypted. | ||
[Tailscale's open source](https://tailscale.com) backs our networking logic. | ||
## coder server | ||
Workspaces connect to the coder server via the server's external address, | ||
set via [`ACCESS_URL`](./admin/configure#access-url). There must not be a | ||
NAT between workspaces and coder server. | ||
Users connect to the coder server's dashboard and API through its `ACCESS_URL` | ||
as well. There must not be a NAT between users and the coder server. | ||
## Web Apps | ||
The coder servers relays dashboard-initiated connections between the user and | ||
the workspace. Web terminal <-> workspace connections are an exception and may be direct. | ||
In general, [port forwarded](./networking/port-forwarding.md) web apps are | ||
faster than dashboard-accessed web apps. | ||
## 🌎 Geo-distribution | ||
### Direct connections | ||
Direct connections are a straight line between the user and workspace, so there | ||
is no special geo-distribution configuration. To speed up direct connections, | ||
move the user and workspace closer together. | ||
### Relayed connections | ||
Tailscale has graciously allowed us to use | ||
[their global DERP relays](https://tailscale.com/kb/1118/custom-derp-servers/#what-are-derp-servers). | ||
You can launch `coder server` with Tailscale's DERPs like so: | ||
```bash | ||
$ coder server --derp-config-url https://controlplane.tailscale.com/derpmap/default | ||
``` | ||
#### Custom Relays | ||
If you run Coder in air-gap mode or want lower latency than what Tailscale offers, | ||
you may run custom DERP servers. Refer to | ||
[Tailscale's documentation](https://tailscale.com/kb/1118/custom-derp-servers/#why-run-your-own-derp-server) | ||
to learn how to set them up. | ||
After you have custom DERP servers, you can launch Coder with them like so: | ||
```json | ||
# derpmap.json | ||
{ | ||
"Regions": { | ||
"1": { | ||
"RegionID": 1, | ||
"RegionCode": "myderp", | ||
"RegionName": "My DERP", | ||
"Nodes": [ | ||
{ | ||
"Name": "1", | ||
"RegionID": 1, | ||
"HostName": "your-hostname.com" | ||
} | ||
] | ||
} | ||
} | ||
} | ||
``` | ||
```bash | ||
$ coder server --derp-config-path derpmap.json | ||
``` | ||
### Dashboard connections | ||
The dashboard (and web apps opened through the dashboard) are served from the | ||
coder server, so they can only be geo-distributed with High Availability mode in | ||
our Enterprise Edition. [Reach out to sales](mailto:sales@coder.com) to learn more. | ||
## Troubleshooting | ||
The `coder speedtest <workspace>` command measures user <-> workspace throughput. | ||
E.g.: | ||
``` | ||
$ coder speedtest dev | ||
29ms via coder | ||
Starting a 5s download test... | ||
INTERVAL TRANSFER BANDWIDTH | ||
0.00-1.00 sec 630.7840 MBits 630.7404 Mbits/sec | ||
1.00-2.00 sec 913.9200 MBits 913.8106 Mbits/sec | ||
2.00-3.00 sec 943.1040 MBits 943.0399 Mbits/sec | ||
3.00-4.00 sec 933.3760 MBits 933.2143 Mbits/sec | ||
4.00-5.00 sec 848.8960 MBits 848.7019 Mbits/sec | ||
5.00-5.02 sec 13.5680 MBits 828.8189 Mbits/sec | ||
---------------------------------------------------- | ||
0.00-5.02 sec 4283.6480 MBits 853.8217 Mbits/sec | ||
``` | ||
## Up next | ||
- Learn about [Port Forwarding](./networking/port-forwarding.md) |
File renamed without changes.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.