Closes #79 ## Description This PR add new module, install minimal desktop environment (xfce), virtual display, ,rustdesk package from deb file, init new screen, export DISPLAY environment variable with last created virtual screen, start new xfce session & execute the rustdesk cli, generate new password, change the default password, then log the ID & password to be used within rustdesk client to connect to the host ## Type of Change - [x] New module - [ ] Bug fix - [ ] Feature/enhancement - [ ] Documentation - [ ] Other ## Module Information Overview/test video: live demo that launch rustdesk with GUI in a docker container https://youtu.be/_rR-l7nARN4 Screenshots: <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/ba67a864-4295-471e-8b6a-976c23cb8f55" /> <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/24686339-aba7-47fe-92b4-5700ef5b154a" /> <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/21884c31-9eed-45ef-b3de-c12c99f2aa96" /> <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/ec0c65fe-61be-404c-ba36-8cc2882e85a2" /> **Path:** `registry/BenraouaneSoufiane/modules/rustdesk` **New version:** `v1.0.0` **Breaking change:** [ ] Yes [x] No ## Testing & Validation - [x] Tests pass (`bun test`) - [x] Code formatted (`bun run fmt`) - [x] Changes tested locally ## Related Issues /claim #79 (remain asset 150$) --------- Co-authored-by: root <root@DESKTOP-6QN3GRE.localdomain> Co-authored-by: DevCats <christofer@coder.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
76 lines
1.7 KiB
HCL
76 lines
1.7 KiB
HCL
terraform {
|
|
required_version = ">= 1.0"
|
|
|
|
required_providers {
|
|
coder = {
|
|
source = "coder/coder"
|
|
version = ">= 2.5"
|
|
}
|
|
}
|
|
}
|
|
|
|
variable "log_path" {
|
|
type = string
|
|
description = "The path to log rustdesk to."
|
|
default = "/tmp/rustdesk.log"
|
|
}
|
|
|
|
variable "agent_id" {
|
|
description = "Attach RustDesk setup to this agent"
|
|
type = string
|
|
}
|
|
|
|
variable "order" {
|
|
description = "Run order among scripts/apps"
|
|
type = number
|
|
default = 1
|
|
}
|
|
|
|
# Optional knobs passed as env (you can expose these as variables too)
|
|
variable "rustdesk_password" {
|
|
description = "If empty, the script will generate one"
|
|
type = string
|
|
default = ""
|
|
sensitive = true
|
|
}
|
|
|
|
variable "xvfb_resolution" {
|
|
description = "Xvfb screen size/depth"
|
|
type = string
|
|
default = "1024x768x16"
|
|
}
|
|
|
|
variable "rustdesk_version" {
|
|
description = "RustDesk version to install (use 'latest' for most recent release)"
|
|
type = string
|
|
default = "latest"
|
|
}
|
|
|
|
resource "coder_script" "rustdesk" {
|
|
agent_id = var.agent_id
|
|
display_name = "RustDesk"
|
|
run_on_start = true
|
|
|
|
# Prepend env as bash exports, then append the script file literally.
|
|
script = <<-EOT
|
|
# --- module-provided env knobs ---
|
|
export RUSTDESK_PASSWORD="${var.rustdesk_password}"
|
|
export XVFB_RESOLUTION="${var.xvfb_resolution}"
|
|
export RUSTDESK_VERSION="${var.rustdesk_version}"
|
|
# ---------------------------------
|
|
|
|
${file("${path.module}/run.sh")}
|
|
EOT
|
|
}
|
|
|
|
resource "coder_app" "rustdesk" {
|
|
agent_id = var.agent_id
|
|
slug = "rustdesk"
|
|
display_name = "Rustdesk"
|
|
url = "https://rustdesk.com/web"
|
|
icon = "/icon/rustdesk.svg"
|
|
order = var.order
|
|
external = true
|
|
}
|
|
|