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
|
sudo apt install golang-go
|
||||||
```
|
```
|
||||||
|
|
||||||
## Daily Tasks
|
## Reviewing a PR
|
||||||
|
|
||||||
### Review PRs
|
|
||||||
|
|
||||||
Check that PRs have:
|
Check that PRs have:
|
||||||
|
|
||||||
@@ -26,7 +24,7 @@ Check that PRs have:
|
|||||||
- [ ] Formatted code (`bun run fmt`)
|
- [ ] Formatted code (`bun run fmt`)
|
||||||
- [ ] Avatar image for new namespaces (`avatar.png` or `avatar.svg` in `.images/`)
|
- [ ] 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:
|
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
|
go build ./cmd/readmevalidation && ./readmevalidation
|
||||||
```
|
```
|
||||||
|
|
||||||
## Releases
|
## Making a Release
|
||||||
|
|
||||||
### Create Release Tags
|
### Create Release Tags
|
||||||
|
|
||||||
@@ -99,5 +97,3 @@ status: "community" # or "partner", "official"
|
|||||||
- **Tests fail**: Ensure Docker with `--network=host`, check Terraform syntax
|
- **Tests fail**: Ensure Docker with `--network=host`, check Terraform syntax
|
||||||
- **Wrong file structure**: Use `./scripts/new_module.sh` for new modules
|
- **Wrong file structure**: Use `./scripts/new_module.sh` for new modules
|
||||||
- **Missing namespace avatar**: Must be `avatar.png` or `avatar.svg` in `.images/` directory
|
- **Missing namespace avatar**: Must be `avatar.png` or `avatar.svg` in `.images/` directory
|
||||||
|
|
||||||
That's it. Keep it simple.
|
|
||||||
|
|||||||
+7
-7
@@ -8,16 +8,16 @@
|
|||||||
"update-version": "./update-version.sh"
|
"update-version": "./update-version.sh"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bun": "^1.2.9",
|
"@types/bun": "^1.2.18",
|
||||||
"bun-types": "^1.1.23",
|
"bun-types": "^1.2.18",
|
||||||
"gray-matter": "^4.0.3",
|
"gray-matter": "^4.0.3",
|
||||||
"marked": "^12.0.2",
|
"marked": "^16.0.0",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.6.2",
|
||||||
"prettier-plugin-sh": "^0.13.1",
|
"prettier-plugin-sh": "^0.18.0",
|
||||||
"prettier-plugin-terraform-formatter": "^1.2.1"
|
"prettier-plugin-terraform-formatter": "^1.2.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"typescript": "^5.5.4"
|
"typescript": "^5.8.3"
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"plugins": [
|
"plugins": [
|
||||||
@@ -25,4 +25,4 @@
|
|||||||
"prettier-plugin-terraform-formatter"
|
"prettier-plugin-terraform-formatter"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
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
|
maintainer_github: coder
|
||||||
verified: true
|
verified: true
|
||||||
supported_os: [windows]
|
supported_os: [windows]
|
||||||
tags: [rdp, windows, desktop, remote]
|
tags: [rdp, windows, desktop, local]
|
||||||
---
|
---
|
||||||
|
|
||||||
# Windows RDP Desktop
|
# 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.
|
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
|
```tf
|
||||||
module "rdp_desktop" {
|
module "rdp_desktop" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
agent_id = coder_agent.main.id
|
agent_id = coder_agent.main.id
|
||||||
agent_name = coder_agent.main.name
|
agent_name = coder_agent.main.name
|
||||||
}
|
}
|
||||||
@@ -51,7 +52,7 @@ Uses default credentials (Username: `Administrator`, Password: `coderRDP!`):
|
|||||||
module "rdp_desktop" {
|
module "rdp_desktop" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
agent_id = coder_agent.main.id
|
agent_id = coder_agent.main.id
|
||||||
agent_name = coder_agent.main.name
|
agent_name = coder_agent.main.name
|
||||||
}
|
}
|
||||||
@@ -65,7 +66,7 @@ Specify a custom display name for the `coder_app` button:
|
|||||||
module "rdp_desktop" {
|
module "rdp_desktop" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
source = "registry.coder.com/coder/local-windows-rdp/coder"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
agent_id = coder_agent.windows.id
|
agent_id = coder_agent.windows.id
|
||||||
agent_name = "windows"
|
agent_name = "windows"
|
||||||
display_name = "Windows Desktop"
|
display_name = "Windows Desktop"
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ describe("local-windows-rdp", async () => {
|
|||||||
expect(app).not.toBeNull();
|
expect(app).not.toBeNull();
|
||||||
expect(app?.slug).toBe("rdp-desktop");
|
expect(app?.slug).toBe("rdp-desktop");
|
||||||
expect(app?.display_name).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);
|
expect(app?.external).toBe(true);
|
||||||
|
|
||||||
// Verify the URI format
|
// Verify the URI format
|
||||||
@@ -95,7 +95,7 @@ describe("local-windows-rdp", async () => {
|
|||||||
// Verify the script was created
|
// Verify the script was created
|
||||||
expect(script).not.toBeNull();
|
expect(script).not.toBeNull();
|
||||||
expect(script?.display_name).toBe("Configure RDP");
|
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_start).toBe(true);
|
||||||
expect(script?.run_on_stop).toBe(false);
|
expect(script?.run_on_stop).toBe(false);
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ data "coder_workspace" "me" {}
|
|||||||
resource "coder_script" "rdp_setup" {
|
resource "coder_script" "rdp_setup" {
|
||||||
agent_id = var.agent_id
|
agent_id = var.agent_id
|
||||||
display_name = "Configure RDP"
|
display_name = "Configure RDP"
|
||||||
icon = "/icon/desktop.svg"
|
icon = "/icon/rdp.svg"
|
||||||
script = templatefile("${path.module}/configure-rdp.ps1", {
|
script = templatefile("${path.module}/configure-rdp.ps1", {
|
||||||
username = var.username
|
username = var.username
|
||||||
password = var.password
|
password = var.password
|
||||||
@@ -73,9 +73,8 @@ resource "coder_app" "rdp_desktop" {
|
|||||||
slug = "rdp-desktop"
|
slug = "rdp-desktop"
|
||||||
display_name = var.display_name
|
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}"
|
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
|
external = true
|
||||||
order = var.order
|
order = var.order
|
||||||
group = var.group
|
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
|
description: RDP Server and Web Client, powered by Devolutions Gateway
|
||||||
icon: ../../../../.icons/desktop.svg
|
icon: ../../../../.icons/desktop.svg
|
||||||
maintainer_github: coder
|
maintainer_github: coder
|
||||||
@@ -14,11 +14,10 @@ Enable Remote Desktop + a web based client on Windows workspaces, powered by [de
|
|||||||
```tf
|
```tf
|
||||||
# AWS example. See below for examples of using this module with other providers
|
# AWS example. See below for examples of using this module with other providers
|
||||||
module "windows_rdp" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||||
version = "1.2.1"
|
version = "1.2.2"
|
||||||
agent_id = resource.coder_agent.main.id
|
agent_id = resource.coder_agent.main.id
|
||||||
resource_id = resource.aws_instance.dev.id
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -32,11 +31,10 @@ module "windows_rdp" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "windows_rdp" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||||
version = "1.2.1"
|
version = "1.2.2"
|
||||||
agent_id = resource.coder_agent.main.id
|
agent_id = resource.coder_agent.main.id
|
||||||
resource_id = resource.aws_instance.dev.id
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -44,11 +42,10 @@ module "windows_rdp" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "windows_rdp" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||||
version = "1.2.1"
|
version = "1.2.2"
|
||||||
agent_id = resource.coder_agent.main.id
|
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" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
source = "registry.coder.com/coder/windows-rdp/coder"
|
source = "registry.coder.com/coder/windows-rdp/coder"
|
||||||
version = "1.2.1"
|
version = "1.2.2"
|
||||||
agent_id = resource.coder_agent.main.id
|
agent_id = resource.coder_agent.main.id
|
||||||
resource_id = resource.aws_instance.dev.id
|
devolutions_gateway_version = "2025.2.2" # Specify a specific version
|
||||||
devolutions_gateway_version = "2025.1.6" # Specify a specific version
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Roadmap
|
|
||||||
|
|
||||||
- [ ] Test on Microsoft Azure.
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
|
|
||||||
type TestVariables = Readonly<{
|
type TestVariables = Readonly<{
|
||||||
agent_id: string;
|
agent_id: string;
|
||||||
resource_id: string;
|
|
||||||
share?: string;
|
share?: string;
|
||||||
admin_username?: string;
|
admin_username?: string;
|
||||||
admin_password?: string;
|
admin_password?: string;
|
||||||
@@ -45,13 +44,11 @@ describe("Web RDP", async () => {
|
|||||||
await runTerraformInit(import.meta.dir);
|
await runTerraformInit(import.meta.dir);
|
||||||
testRequiredVariables<TestVariables>(import.meta.dir, {
|
testRequiredVariables<TestVariables>(import.meta.dir, {
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
resource_id: "bar",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Has the PowerShell script install Devolutions Gateway", async () => {
|
it("Has the PowerShell script install Devolutions Gateway", async () => {
|
||||||
const state = await runTerraformApply<TestVariables>(import.meta.dir, {
|
const state = await runTerraformApply<TestVariables>(import.meta.dir, {
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
resource_id: "bar",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const lines = findWindowsRdpScript(state)
|
const lines = findWindowsRdpScript(state)
|
||||||
@@ -96,7 +93,6 @@ describe("Web RDP", async () => {
|
|||||||
import.meta.dir,
|
import.meta.dir,
|
||||||
{
|
{
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
resource_id: "bar",
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -116,7 +112,6 @@ describe("Web RDP", async () => {
|
|||||||
import.meta.dir,
|
import.meta.dir,
|
||||||
{
|
{
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
resource_id: "bar",
|
|
||||||
admin_username: customAdminUsername,
|
admin_username: customAdminUsername,
|
||||||
admin_password: customAdminPassword,
|
admin_password: customAdminPassword,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
coder = {
|
coder = {
|
||||||
source = "coder/coder"
|
source = "coder/coder"
|
||||||
version = ">= 0.17"
|
version = ">= 2.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,11 +35,6 @@ variable "agent_id" {
|
|||||||
description = "The ID of a Coder agent."
|
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" {
|
variable "admin_username" {
|
||||||
type = string
|
type = string
|
||||||
default = "Administrator"
|
default = "Administrator"
|
||||||
@@ -53,14 +48,14 @@ variable "admin_password" {
|
|||||||
|
|
||||||
variable "devolutions_gateway_version" {
|
variable "devolutions_gateway_version" {
|
||||||
type = string
|
type = string
|
||||||
default = "2025.2.1"
|
default = "2025.2.2"
|
||||||
description = "Version of Devolutions Gateway to install. Defaults to the latest available version."
|
description = "Version of Devolutions Gateway to install. Defaults to the latest available version."
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "coder_script" "windows-rdp" {
|
resource "coder_script" "windows-rdp" {
|
||||||
agent_id = var.agent_id
|
agent_id = var.agent_id
|
||||||
display_name = "windows-rdp"
|
display_name = "windows-rdp"
|
||||||
icon = "/icon/desktop.svg"
|
icon = "/icon/rdp.svg"
|
||||||
|
|
||||||
script = templatefile("${path.module}/powershell-installation-script.tftpl", {
|
script = templatefile("${path.module}/powershell-installation-script.tftpl", {
|
||||||
admin_username = var.admin_username
|
admin_username = var.admin_username
|
||||||
@@ -101,7 +96,7 @@ resource "coder_app" "rdp-docs" {
|
|||||||
agent_id = var.agent_id
|
agent_id = var.agent_id
|
||||||
display_name = "Local RDP Docs"
|
display_name = "Local RDP Docs"
|
||||||
slug = "rdp-docs"
|
slug = "rdp-docs"
|
||||||
icon = "https://raw.githubusercontent.com/matifali/logos/main/windows.svg"
|
icon = "/icon/windows.svg"
|
||||||
url = "https://coder.com/docs/ides/remote-desktops#rdp-desktop"
|
url = "https://coder.com/docs/user-guides/workspace-access/remote-desktops#rdp"
|
||||||
external = true
|
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 [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`)
|
- 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
|
- Remove the following sections from the `main.tf` file if you don't want to
|
||||||
associate your workspaces with a project:
|
associate your workspaces with a project:
|
||||||
|
|
||||||
- `variable "project_uuid"`
|
- `variable "project_uuid"`
|
||||||
- `resource "digitalocean_project_resources" "project"`
|
- `resource "digitalocean_project_resources" "project"`
|
||||||
|
|
||||||
- **Optional:** DigitalOcean SSH key ID (obtain via the `doctl` CLI by running
|
- **Optional:** DigitalOcean SSH key ID (obtain via the `doctl` CLI by running
|
||||||
`doctl compute ssh-key list`)
|
`doctl compute ssh-key list`)
|
||||||
|
|
||||||
- Note that this is only required for Fedora images to work.
|
- Note that this is only required for Fedora images to work.
|
||||||
|
|
||||||
### Authentication
|
### Authentication
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ a service account:
|
|||||||
|
|
||||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||||
the service account:
|
the service account:
|
||||||
|
|
||||||
- Compute Admin
|
- Compute Admin
|
||||||
- Service Account User
|
- Service Account User
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ a service account:
|
|||||||
|
|
||||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||||
the service account:
|
the service account:
|
||||||
|
|
||||||
- Compute Admin
|
- Compute Admin
|
||||||
- Service Account User
|
- Service Account User
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ a service account:
|
|||||||
|
|
||||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||||
the service account:
|
the service account:
|
||||||
|
|
||||||
- Compute Admin
|
- Compute Admin
|
||||||
- Service Account User
|
- Service Account User
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ a service account:
|
|||||||
|
|
||||||
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
||||||
the service account:
|
the service account:
|
||||||
|
|
||||||
- Compute Admin
|
- Compute Admin
|
||||||
- Service Account User
|
- 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.
|
1. Install [Incus](https://linuxcontainers.org/incus/) on the same machine as Coder.
|
||||||
2. Allow Coder to access the Incus socket.
|
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 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:
|
- 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