mirror of
https://github.com/coder/registry.git
synced 2026-06-02 20:48:14 +00:00
chore: update RDP modules display names, icon and docs (#175)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" fill="none" viewBox="0 0 512 512">
|
||||
<g transform="translate(256 256)scale(8.96)">
|
||||
<linearGradient id="a" x1="6.221" x2="37.408" y1="6.221" y2="37.408" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" style="stop-color:#f0f0f0;stop-opacity:1"/>
|
||||
<stop offset="100%" style="stop-color:#bbc1c4;stop-opacity:1"/>
|
||||
</linearGradient>
|
||||
<path d="M24 5C13.507 5 5 13.507 5 24s8.507 19 19 19 19-8.507 19-19S34.493 5 24 5" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#a);fill-rule:nonzero;opacity:1" transform="translate(-24 -24)"/>
|
||||
</g>
|
||||
<g transform="translate(256 256)scale(8.96)">
|
||||
<linearGradient id="b" x1="12.859" x2="35.224" y1="12.859" y2="35.224" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" style="stop-color:#e04f12;stop-opacity:1"/>
|
||||
<stop offset="61.5%" style="stop-color:#ce400d;stop-opacity:1"/>
|
||||
<stop offset="100%" style="stop-color:#c03409;stop-opacity:1"/>
|
||||
</linearGradient>
|
||||
<path d="M24 40c8.837 0 16-7.163 16-16S32.837 8 24 8 8 15.163 8 24s7.163 16 16 16" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#b);fill-rule:nonzero;opacity:1" transform="translate(-24 -24)"/>
|
||||
</g>
|
||||
<path d="m30.414 20 3.89-3.89c.708-.708.449-1.772 0-2.221l-2.195-2.195a1.573 1.573 0 0 0-2.218.001l-7.194 7.194c-.549.549-.752 1.469-.001 2.22l7.196 7.196c.76.76 1.592.625 2.218-.001l2.194-2.194c.707-.707.716-1.505.001-2.22z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.05" transform="translate(40.96 40.96)scale(8.96)"/>
|
||||
<path d="m33.951 14.244-2.195-2.195a1.07 1.07 0 0 0-1.511 0l-7.195 7.195c-.386.386-.487 1.025 0 1.512l7.196 7.196c.491.491 1.087.424 1.511 0l2.195-2.195c.464-.464.469-1.044 0-1.512L29.707 20l4.244-4.244c.465-.465.335-1.177 0-1.512" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.07" transform="translate(40.96 40.96)scale(8.96)"/>
|
||||
<path d="m17.586 28-3.89 3.89c-.708.708-.449 1.772 0 2.221l2.195 2.195c.611.609 1.606.61 2.218-.001l7.194-7.194c.549-.549.752-1.469.001-2.22l-7.196-7.196c-.76-.76-1.592-.625-2.218.001l-2.194 2.194c-.707.707-.716 1.505-.001 2.22z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.05" transform="translate(40.96 40.96)scale(8.96)"/>
|
||||
<path d="m14.049 33.756 2.195 2.195a1.07 1.07 0 0 0 1.511 0l7.195-7.195c.386-.386.487-1.025 0-1.512l-7.196-7.196c-.491-.491-1.087-.424-1.511 0l-2.195 2.195c-.464.464-.469 1.044 0 1.512L18.293 28l-4.244 4.244c-.465.465-.335 1.177 0 1.512" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.07" transform="translate(40.96 40.96)scale(8.96)"/>
|
||||
<g transform="translate(296.83 220.16)scale(8.96)">
|
||||
<linearGradient id="c" x1="23.755" x2="38.564" y1="9.93" y2="33.557" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" style="stop-color:#fcfcfc;stop-opacity:1"/>
|
||||
<stop offset="100%" style="stop-color:#c3c9cd;stop-opacity:1"/>
|
||||
</linearGradient>
|
||||
<path d="m33.598 14.598-2.196-2.196a.57.57 0 0 0-.804 0l-7.196 7.196a.57.57 0 0 0 0 .804l7.196 7.196a.57.57 0 0 0 .804 0l2.196-2.196a.57.57 0 0 0 0-.804L29 20l4.598-4.598a.57.57 0 0 0 0-.804" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#c);fill-rule:nonzero;opacity:1" transform="translate(-28.5 -20)"/>
|
||||
</g>
|
||||
<g transform="translate(215.17 291.84)scale(8.96)">
|
||||
<linearGradient id="d" x1="11.438" x2="26.247" y1="17.637" y2="41.265" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" style="stop-color:#fcfcfc;stop-opacity:1"/>
|
||||
<stop offset="100%" style="stop-color:#c3c9cd;stop-opacity:1"/>
|
||||
</linearGradient>
|
||||
<path d="M14.402 23.402 19 28l-4.598 4.598a.57.57 0 0 0 0 .804l2.196 2.196a.57.57 0 0 0 .804 0l7.196-7.196a.57.57 0 0 0 0-.804l-7.196-7.196a.57.57 0 0 0-.804 0l-2.196 2.196a.57.57 0 0 0 0 .804" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#d);fill-rule:nonzero;opacity:1" transform="translate(-19.5 -28)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
+3
-7
@@ -14,9 +14,7 @@ brew install go
|
||||
sudo apt install golang-go
|
||||
```
|
||||
|
||||
## Daily Tasks
|
||||
|
||||
### Review PRs
|
||||
## Reviewing a PR
|
||||
|
||||
Check that PRs have:
|
||||
|
||||
@@ -26,7 +24,7 @@ Check that PRs have:
|
||||
- [ ] Formatted code (`bun run fmt`)
|
||||
- [ ] Avatar image for new namespaces (`avatar.png` or `avatar.svg` in `.images/`)
|
||||
|
||||
#### Version Guidelines
|
||||
### Version Guidelines
|
||||
|
||||
When reviewing PRs, ensure the version change follows semantic versioning:
|
||||
|
||||
@@ -42,7 +40,7 @@ PRs should clearly indicate the version change (e.g., `v1.2.3 → v1.2.4`).
|
||||
go build ./cmd/readmevalidation && ./readmevalidation
|
||||
```
|
||||
|
||||
## Releases
|
||||
## Making a Release
|
||||
|
||||
### Create Release Tags
|
||||
|
||||
@@ -99,5 +97,3 @@ status: "community" # or "partner", "official"
|
||||
- **Tests fail**: Ensure Docker with `--network=host`, check Terraform syntax
|
||||
- **Wrong file structure**: Use `./scripts/new_module.sh` for new modules
|
||||
- **Missing namespace avatar**: Must be `avatar.png` or `avatar.svg` in `.images/` directory
|
||||
|
||||
That's it. Keep it simple.
|
||||
|
||||
+6
-6
@@ -8,16 +8,16 @@
|
||||
"update-version": "./update-version.sh"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/bun": "^1.2.9",
|
||||
"bun-types": "^1.1.23",
|
||||
"@types/bun": "^1.2.18",
|
||||
"bun-types": "^1.2.18",
|
||||
"gray-matter": "^4.0.3",
|
||||
"marked": "^12.0.2",
|
||||
"prettier": "^3.3.3",
|
||||
"prettier-plugin-sh": "^0.13.1",
|
||||
"marked": "^16.0.0",
|
||||
"prettier": "^3.6.2",
|
||||
"prettier-plugin-sh": "^0.18.0",
|
||||
"prettier-plugin-terraform-formatter": "^1.2.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^5.5.4"
|
||||
"typescript": "^5.8.3"
|
||||
},
|
||||
"prettier": {
|
||||
"plugins": [
|
||||
|
||||
@@ -1,24 +1,25 @@
|
||||
---
|
||||
display_name: Windows RDP Desktop
|
||||
display_name: RDP Desktop
|
||||
description: Enable RDP on Windows and add a one-click Coder Desktop button for seamless access
|
||||
icon: ../../../../.icons/desktop.svg
|
||||
icon: ../../../../.icons/rdp.svg
|
||||
maintainer_github: coder
|
||||
verified: true
|
||||
supported_os: [windows]
|
||||
tags: [rdp, windows, desktop, remote]
|
||||
tags: [rdp, windows, desktop, local]
|
||||
---
|
||||
|
||||
# Windows RDP Desktop
|
||||
|
||||
This module enables Remote Desktop Protocol (RDP) on Windows workspaces and adds a one-click button to launch RDP sessions directly through [Coder Desktop](https://coder.com/docs/user-guides/desktop). It provides a complete, standalone solution for RDP access, eliminating the need for manual configuration or port forwarding through the Coder CLI.
|
||||
|
||||
> **Note**: [Coder Desktop](https://coder.com/docs/user-guides/desktop) is required on client devices to use the Local Windows RDP access feature.
|
||||
> [!NOTE]
|
||||
> [Coder Desktop](https://coder.com/docs/user-guides/desktop) is required on client devices to use the Local Windows RDP access feature.
|
||||
|
||||
```tf
|
||||
module "rdp_desktop" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
agent_id = coder_agent.main.id
|
||||
agent_name = coder_agent.main.name
|
||||
}
|
||||
@@ -51,7 +52,7 @@ Uses default credentials (Username: `Administrator`, Password: `coderRDP!`):
|
||||
module "rdp_desktop" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
agent_id = coder_agent.main.id
|
||||
agent_name = coder_agent.main.name
|
||||
}
|
||||
@@ -65,7 +66,7 @@ Specify a custom display name for the `coder_app` button:
|
||||
module "rdp_desktop" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
agent_id = coder_agent.windows.id
|
||||
agent_name = "windows"
|
||||
display_name = "Windows Desktop"
|
||||
|
||||
@@ -73,7 +73,7 @@ describe("local-windows-rdp", async () => {
|
||||
expect(app).not.toBeNull();
|
||||
expect(app?.slug).toBe("rdp-desktop");
|
||||
expect(app?.display_name).toBe("RDP Desktop");
|
||||
expect(app?.icon).toBe("/icon/desktop.svg");
|
||||
expect(app?.icon).toBe("/icon/rdp.svg");
|
||||
expect(app?.external).toBe(true);
|
||||
|
||||
// Verify the URI format
|
||||
@@ -95,7 +95,7 @@ describe("local-windows-rdp", async () => {
|
||||
// Verify the script was created
|
||||
expect(script).not.toBeNull();
|
||||
expect(script?.display_name).toBe("Configure RDP");
|
||||
expect(script?.icon).toBe("/icon/desktop.svg");
|
||||
expect(script?.icon).toBe("/icon/rdp.svg");
|
||||
expect(script?.run_on_start).toBe(true);
|
||||
expect(script?.run_on_stop).toBe(false);
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ data "coder_workspace" "me" {}
|
||||
resource "coder_script" "rdp_setup" {
|
||||
agent_id = var.agent_id
|
||||
display_name = "Configure RDP"
|
||||
icon = "/icon/desktop.svg"
|
||||
icon = "/icon/rdp.svg"
|
||||
script = templatefile("${path.module}/configure-rdp.ps1", {
|
||||
username = var.username
|
||||
password = var.password
|
||||
@@ -73,9 +73,8 @@ resource "coder_app" "rdp_desktop" {
|
||||
slug = "rdp-desktop"
|
||||
display_name = var.display_name
|
||||
url = "coder://${local.server_name}/v0/open/ws/${data.coder_workspace.me.name}/agent/${var.agent_name}/rdp?username=${var.username}&password=${var.password}"
|
||||
icon = "/icon/desktop.svg"
|
||||
icon = "/icon/rdp.svg"
|
||||
external = true
|
||||
order = var.order
|
||||
group = var.group
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
display_name: Windows RDP
|
||||
display_name: RDP Web
|
||||
description: RDP Server and Web Client, powered by Devolutions Gateway
|
||||
icon: ../../../../.icons/desktop.svg
|
||||
maintainer_github: coder
|
||||
@@ -16,9 +16,8 @@ Enable Remote Desktop + a web based client on Windows workspaces, powered by [de
|
||||
module "windows_rdp" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
agent_id = resource.coder_agent.main.id
|
||||
resource_id = resource.aws_instance.dev.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -34,9 +33,8 @@ module "windows_rdp" {
|
||||
module "windows_rdp" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
agent_id = resource.coder_agent.main.id
|
||||
resource_id = resource.aws_instance.dev.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -46,9 +44,8 @@ module "windows_rdp" {
|
||||
module "windows_rdp" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
agent_id = resource.coder_agent.main.id
|
||||
resource_id = resource.google_compute_instance.dev[0].id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -58,13 +55,8 @@ module "windows_rdp" {
|
||||
module "windows_rdp" {
|
||||
count = data.coder_workspace.me.start_count
|
||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
agent_id = resource.coder_agent.main.id
|
||||
resource_id = resource.aws_instance.dev.id
|
||||
devolutions_gateway_version = "2025.1.6" # Specify a specific version
|
||||
devolutions_gateway_version = "2025.2.2" # Specify a specific version
|
||||
}
|
||||
```
|
||||
|
||||
## Roadmap
|
||||
|
||||
- [ ] Test on Microsoft Azure.
|
||||
|
||||
@@ -8,7 +8,6 @@ import {
|
||||
|
||||
type TestVariables = Readonly<{
|
||||
agent_id: string;
|
||||
resource_id: string;
|
||||
share?: string;
|
||||
admin_username?: string;
|
||||
admin_password?: string;
|
||||
@@ -45,13 +44,11 @@ describe("Web RDP", async () => {
|
||||
await runTerraformInit(import.meta.dir);
|
||||
testRequiredVariables<TestVariables>(import.meta.dir, {
|
||||
agent_id: "foo",
|
||||
resource_id: "bar",
|
||||
});
|
||||
|
||||
it("Has the PowerShell script install Devolutions Gateway", async () => {
|
||||
const state = await runTerraformApply<TestVariables>(import.meta.dir, {
|
||||
agent_id: "foo",
|
||||
resource_id: "bar",
|
||||
});
|
||||
|
||||
const lines = findWindowsRdpScript(state)
|
||||
@@ -96,7 +93,6 @@ describe("Web RDP", async () => {
|
||||
import.meta.dir,
|
||||
{
|
||||
agent_id: "foo",
|
||||
resource_id: "bar",
|
||||
},
|
||||
);
|
||||
|
||||
@@ -116,7 +112,6 @@ describe("Web RDP", async () => {
|
||||
import.meta.dir,
|
||||
{
|
||||
agent_id: "foo",
|
||||
resource_id: "bar",
|
||||
admin_username: customAdminUsername,
|
||||
admin_password: customAdminPassword,
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = ">= 0.17"
|
||||
version = ">= 2.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,11 +35,6 @@ variable "agent_id" {
|
||||
description = "The ID of a Coder agent."
|
||||
}
|
||||
|
||||
variable "resource_id" {
|
||||
type = string
|
||||
description = "The ID of the primary Coder resource (e.g. VM)."
|
||||
}
|
||||
|
||||
variable "admin_username" {
|
||||
type = string
|
||||
default = "Administrator"
|
||||
@@ -53,14 +48,14 @@ variable "admin_password" {
|
||||
|
||||
variable "devolutions_gateway_version" {
|
||||
type = string
|
||||
default = "2025.2.1"
|
||||
default = "2025.2.2"
|
||||
description = "Version of Devolutions Gateway to install. Defaults to the latest available version."
|
||||
}
|
||||
|
||||
resource "coder_script" "windows-rdp" {
|
||||
agent_id = var.agent_id
|
||||
display_name = "windows-rdp"
|
||||
icon = "/icon/desktop.svg"
|
||||
icon = "/icon/rdp.svg"
|
||||
|
||||
script = templatefile("${path.module}/powershell-installation-script.tftpl", {
|
||||
admin_username = var.admin_username
|
||||
@@ -101,7 +96,7 @@ resource "coder_app" "rdp-docs" {
|
||||
agent_id = var.agent_id
|
||||
display_name = "Local RDP Docs"
|
||||
slug = "rdp-docs"
|
||||
icon = "https://raw.githubusercontent.com/matifali/logos/main/windows.svg"
|
||||
url = "https://coder.com/docs/ides/remote-desktops#rdp-desktop"
|
||||
icon = "/icon/windows.svg"
|
||||
url = "https://coder.com/docs/user-guides/workspace-access/remote-desktops#rdp"
|
||||
external = true
|
||||
}
|
||||
|
||||
@@ -20,16 +20,13 @@ To deploy workspaces as DigitalOcean Droplets, you'll need:
|
||||
- DigitalOcean [personal access token (PAT)](https://docs.digitalocean.com/reference/api/create-personal-access-token)
|
||||
|
||||
- DigitalOcean project ID (you can get your project information via the `doctl` CLI by running `doctl projects list`)
|
||||
|
||||
- Remove the following sections from the `main.tf` file if you don't want to
|
||||
associate your workspaces with a project:
|
||||
|
||||
- `variable "project_uuid"`
|
||||
- `resource "digitalocean_project_resources" "project"`
|
||||
|
||||
- **Optional:** DigitalOcean SSH key ID (obtain via the `doctl` CLI by running
|
||||
`doctl compute ssh-key list`)
|
||||
|
||||
- Note that this is only required for Fedora images to work.
|
||||
|
||||
### Authentication
|
||||
|
||||
@@ -34,7 +34,6 @@ a service account:
|
||||
|
||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||
the service account:
|
||||
|
||||
- Compute Admin
|
||||
- Service Account User
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ a service account:
|
||||
|
||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||
the service account:
|
||||
|
||||
- Compute Admin
|
||||
- Service Account User
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ a service account:
|
||||
|
||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||
the service account:
|
||||
|
||||
- Compute Admin
|
||||
- Service Account User
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ a service account:
|
||||
|
||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||
the service account:
|
||||
|
||||
- Compute Admin
|
||||
- Service Account User
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ Develop in an Incus System Container and run nested Docker containers using Incu
|
||||
|
||||
1. Install [Incus](https://linuxcontainers.org/incus/) on the same machine as Coder.
|
||||
2. Allow Coder to access the Incus socket.
|
||||
|
||||
- If you're running Coder as system service, run `sudo usermod -aG incus-admin coder` and restart the Coder service.
|
||||
- If you're running Coder as a Docker Compose service, get the group ID of the `incus-admin` group by running `getent group incus-admin` and add the following to your `compose.yaml` file:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user