diff --git a/.github/.linkspector.yml b/.github/.linkspector.yml index b24df8940f608..1cdd35a21805e 100644 --- a/.github/.linkspector.yml +++ b/.github/.linkspector.yml @@ -1,9 +1,22 @@ dirs: - docs +excludedDirs: + # Downstream bug in linkspector means large markdown files fail to parse + # but these are autogenerated and shouldn't need checking + - docs/reference + # Older changelogs may contain broken links + - docs/changelogs ignorePatterns: - - pattern: "://localhost" - - pattern: '://.*.?example\\.com' - - pattern: "github.com/" + - pattern: "localhost" + - pattern: "example.com" - pattern: "mailto:" + - pattern: "127.0.0.1" + - pattern: "0.0.0.0" + - pattern: "JFROG_URL" + - pattern: "coder.company.org" + # These real sites were blocking the linkspector action / GitHub runner IPs(?) + - pattern: "i.imgur.com" + - pattern: "code.visualstudio.com" + - pattern: "www.emacswiki.org" aliveStatusCodes: - 200 diff --git a/.github/workflows/weekly-docs.yaml b/.github/workflows/weekly-docs.yaml index e12f9366a910c..d66503e2552ed 100644 --- a/.github/workflows/weekly-docs.yaml +++ b/.github/workflows/weekly-docs.yaml @@ -4,11 +4,11 @@ on: schedule: - cron: "0 9 * * 1" workflow_dispatch: # allows to run manually for testing - # pull_request: - # branches: - # - main - # paths: - # - "docs/**" + pull_request: + branches: + - main + paths: + - "docs/**" permissions: contents: read @@ -33,6 +33,7 @@ jobs: reporter: github-pr-review config_file: ".github/.linkspector.yml" fail_on_error: "true" + filter_mode: "nofilter" - name: Send Slack notification if: failure() && github.event_name == 'schedule' diff --git a/docs/admin/infrastructure/scale-testing.md b/docs/admin/infrastructure/scale-testing.md index c371f23fd5559..09d6fdc837a91 100644 --- a/docs/admin/infrastructure/scale-testing.md +++ b/docs/admin/infrastructure/scale-testing.md @@ -11,7 +11,7 @@ capabilities, allowing Coder to efficiently deploy, scale, and manage workspaces across a distributed infrastructure. This ensures high availability, fault tolerance, and scalability for Coder deployments. Coder is deployed on this cluster using the -[Helm chart](../../install/kubernetes.md#install-coder-with-helm). +[Helm chart](../../install/kubernetes.md#4-install-coder-with-helm). ## Methodology @@ -113,7 +113,7 @@ on the workload size to ensure deployment stability. #### CPU and memory usage Enabling -[agent stats collection](../../reference/cli/index.md#--prometheus-collect-agent-stats) +[agent stats collection](../../reference/cli/server.md#--prometheus-collect-agent-stats) (optional) may increase memory consumption. Enabling direct connections between users and workspace agents (apps or SSH diff --git a/docs/admin/integrations/kubernetes-logs.md b/docs/admin/integrations/kubernetes-logs.md index fc2481483ffed..95fb5d84801f5 100644 --- a/docs/admin/integrations/kubernetes-logs.md +++ b/docs/admin/integrations/kubernetes-logs.md @@ -14,7 +14,7 @@ or deployment, such as: [`kubernetes_deployment`](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/deployment) Terraform resource, which requires the `coder` service account to have permission to create deployments. For example, if you use -[Helm](../../install/kubernetes.md#install-coder-with-helm) to install Coder, +[Helm](../../install/kubernetes.md#4-install-coder-with-helm) to install Coder, you should set `coder.serviceAccount.enableDeployments=true` in your `values.yaml` diff --git a/docs/admin/networking/index.md b/docs/admin/networking/index.md index 2e07a7e6e4ac8..e93c83938c125 100644 --- a/docs/admin/networking/index.md +++ b/docs/admin/networking/index.md @@ -56,7 +56,7 @@ In order for clients to be able to establish direct connections: communicate with each other using their locally assigned IP addresses, then a direct connection can be established immediately. Otherwise, the client and agent will contact - [the configured STUN servers](../../reference/cli/server.md#derp-server-stun-addresses) + [the configured STUN servers](../../reference/cli/server.md#--derp-server-stun-addresses) to try and determine which `ip:port` can be used to communicate with their counterpart. See [STUN and NAT](./stun.md) for more details on how this process works. diff --git a/docs/admin/networking/workspace-proxies.md b/docs/admin/networking/workspace-proxies.md index 968082322e819..03da5e142f7ce 100644 --- a/docs/admin/networking/workspace-proxies.md +++ b/docs/admin/networking/workspace-proxies.md @@ -4,7 +4,8 @@ Workspace proxies provide low-latency experiences for geo-distributed teams. Coder's networking does a best effort to make direct connections to a workspace. In situations where this is not possible, such as connections via the web -terminal and [web IDEs](../../user-guides/workspace-access/index.md#web-ides), +terminal and +[web IDEs](../../user-guides/workspace-access/index.md#other-web-ides), workspace proxies are able to reduce the amount of distance the network traffic needs to travel. diff --git a/docs/admin/provisioners.md b/docs/admin/provisioners.md index 159ef79332de4..12758eab61d48 100644 --- a/docs/admin/provisioners.md +++ b/docs/admin/provisioners.md @@ -1,7 +1,7 @@ # External provisioners By default, the Coder server runs -[built-in provisioner daemons](../reference/cli/server.md#provisioner-daemons), +[built-in provisioner daemons](../reference/cli/server.md#--provisioner-daemons), which execute `terraform` during workspace and template builds. However, there are often benefits to running external provisioner daemons: @@ -235,17 +235,17 @@ This is illustrated in the below table: Provisioners can broadly be categorized by scope: `organization` or `user`. The scope of a provisioner can be specified with -[`-tag=scope=`](../reference/cli/provisioner_start.md#t---tag) when +[`-tag=scope=`](../reference/cli/provisioner_start.md#-t---tag) when starting the provisioner daemon. Only users with at least the [Template Admin](./users/index.md#roles) role or higher may create organization-scoped provisioner daemons. There are two exceptions: -- [Built-in provisioners](../reference/cli/server.md#provisioner-daemons) are +- [Built-in provisioners](../reference/cli/server.md#--provisioner-daemons) are always organization-scoped. - External provisioners started using a - [pre-shared key (PSK)](../reference/cli/provisioner_start.md#psk) are always + [pre-shared key (PSK)](../reference/cli/provisioner_start.md#--psk) are always organization-scoped. ### Organization-Scoped Provisioners @@ -369,7 +369,7 @@ docker run --rm -it \ As mentioned above, the Coder server will run built-in provisioners by default. This can be disabled with a server-wide -[flag or environment variable](../reference/cli/server.md#provisioner-daemons). +[flag or environment variable](../reference/cli/server.md#--provisioner-daemons). ```sh coder server --provisioner-daemons=0 diff --git a/docs/admin/security/database-encryption.md b/docs/admin/security/database-encryption.md index f775b68ea516f..7bee8e3bd58e1 100644 --- a/docs/admin/security/database-encryption.md +++ b/docs/admin/security/database-encryption.md @@ -7,7 +7,7 @@ preventing attackers with database access from using them to impersonate users. ## How it works Coder allows administrators to specify -[external token encryption keys](../../reference/cli/server.md#external-token-encryption-keys). +[external token encryption keys](../../reference/cli/server.md#--external-token-encryption-keys). If configured, Coder will use these keys to encrypt external user tokens before storing them in the database. The encryption algorithm used is AES-256-GCM with a 32-byte key length. diff --git a/docs/admin/templates/creating-templates.md b/docs/admin/templates/creating-templates.md index 8af4391e049ee..8a833015ae207 100644 --- a/docs/admin/templates/creating-templates.md +++ b/docs/admin/templates/creating-templates.md @@ -145,7 +145,7 @@ You will then see your new template in the dashboard. ## From scratch (advanced) There may be cases where you want to create a template from scratch. You can use -[any Terraform provider](https://registry.terraform.com) with Coder to create +[any Terraform provider](https://registry.terraform.io) with Coder to create templates for additional clouds (e.g. Hetzner, Alibaba) or orchestrators (VMware, Proxmox) that we do not provide example templates for. diff --git a/docs/admin/templates/managing-templates/schedule.md b/docs/admin/templates/managing-templates/schedule.md index 4fa285dfa74f3..ffbebef713de8 100644 --- a/docs/admin/templates/managing-templates/schedule.md +++ b/docs/admin/templates/managing-templates/schedule.md @@ -97,7 +97,7 @@ to set the default quiet hours to a time when most users are not expected to be using Coder. Admins can force users to use the default quiet hours with the -[CODER_ALLOW_CUSTOM_QUIET_HOURS](../../../reference/cli/server.md#allow-custom-quiet-hours) +[CODER_ALLOW_CUSTOM_QUIET_HOURS](../../../reference/cli/server.md#--allow-custom-quiet-hours) environment variable. Users will still be able to see the page, but will be unable to set a custom time or timezone. If users have already set a custom quiet hours schedule, it will be ignored and the default will be used instead. diff --git a/docs/admin/users/idp-sync.md b/docs/admin/users/idp-sync.md index eba86b0d1d0ab..123384c963ce7 100644 --- a/docs/admin/users/idp-sync.md +++ b/docs/admin/users/idp-sync.md @@ -326,9 +326,8 @@ the OIDC provider. See > Depending on the OIDC provider, this claim may be named differently. Common > ones include `groups`, `memberOf`, and `roles`. -Next configure the Coder server to read groups from the claim name with the -[OIDC organization field](../../reference/cli/server.md#--oidc-organization-field) -server flag: +Next configure the Coder server to read groups from the claim name with the OIDC +organization field server flag: ```sh # as an environment variable diff --git a/docs/install/offline.md b/docs/install/offline.md index 6a4aae1af0daa..c70b3426cc12f 100644 --- a/docs/install/offline.md +++ b/docs/install/offline.md @@ -137,7 +137,7 @@ provider_installation { ## Run offline via Docker -Follow our [docker-compose](./docker.md#run-coder-with-docker-compose) +Follow our [docker-compose](./docker.md#install-coder-via-docker-compose) documentation and modify the docker-compose file to specify your custom Coder image. Additionally, you can add a volume mount to add providers to the filesystem mirror without re-building the image. diff --git a/docs/reference/index.md b/docs/reference/index.md index 01afba25891f3..c99fd66be55c9 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -82,7 +82,7 @@ activity. }" ``` -- [Manually send workspace activity](../reference/api/agents.md#submit-workspace-agent-stats): +- [Manually send workspace activity](../reference/api/workspaces.md#extend-workspace-deadline-by-id): Keep a workspace "active," even if there is not an open connection (e.g. for a long-running machine learning job). @@ -94,10 +94,10 @@ activity. do if pgrep -f "my_training_script.py" > /dev/null then - curl -X POST "https://coder.example.com/api/v2/workspaceagents/me/report-stats" \ + curl -X POST "https://coder.example.com/api/v2/workspaces/$WORKSPACE_ID/extend" \ -H "Coder-Session-Token: $CODER_AGENT_TOKEN" \ -d '{ - "connection_count": 1 + "deadline": "2019-08-24T14:15:22Z" }' # Sleep for 30 minutes (1800 seconds) if the job is running diff --git a/docs/user-guides/workspace-access/vscode.md b/docs/user-guides/workspace-access/vscode.md index dc3cac46be0e8..7eab386c7626f 100644 --- a/docs/user-guides/workspace-access/vscode.md +++ b/docs/user-guides/workspace-access/vscode.md @@ -16,7 +16,7 @@ extension, authenticates with Coder, and connects to the workspace. ![Demo](https://github.com/coder/vscode-coder/raw/main/demo.gif?raw=true) > The `VS Code Desktop` button can be hidden by enabling -> [Browser-only connections](../../admin/networking/index.md#browser-only-connections-enterprise). +> [Browser-only connections](../../admin/networking/index.md#browser-only-connections-enterprise-premium). ### Manual Installation diff --git a/docs/user-guides/workspace-access/web-ides.md b/docs/user-guides/workspace-access/web-ides.md index 41bee34ef2e76..583118d596ad3 100644 --- a/docs/user-guides/workspace-access/web-ides.md +++ b/docs/user-guides/workspace-access/web-ides.md @@ -76,6 +76,6 @@ guide. ## SSH Fallback If you prefer to run web IDEs in localhost, you can port forward using -[SSH](../index.md#ssh) or the Coder CLI `port-forward` sub-command. Some web -IDEs may not support URL base path adjustment so port forwarding is the only +[SSH](./index.md#ssh) or the Coder CLI `port-forward` sub-command. Some web IDEs +may not support URL base path adjustment so port forwarding is the only approach. diff --git a/docs/user-guides/workspace-management.md b/docs/user-guides/workspace-management.md index 4d4f30f2f9026..98158cf0233ef 100644 --- a/docs/user-guides/workspace-management.md +++ b/docs/user-guides/workspace-management.md @@ -112,7 +112,8 @@ To set a workspace's schedule, go to the workspace, then **Settings** > ![Scheduling UI](../images/schedule.png) Coder might also stop a workspace automatically if there is a -[template update](../admin/templates/index.md#Start/stop) available. +[template update](../admin/templates/managing-templates/index.md#updating-templates) +available. Learn more about [workspace lifecycle](./workspace-lifecycle.md) and our [scheduling features](./workspace-scheduling.md).