Este tutorial te guiará a través del proceso de configuración de un servidor de Escritorio Remoto (RDP) gratuito utilizando GitHub Actions. La conexión al servidor se realizará de forma segura a través de Tailscale, y te mostraremos cómo conectarte desde tu sistema Manjaro Plasma.
Primero, necesitas una cuenta de GitHub y un repositorio para alojar tu workflow.
rdp-manjaro
).Tailscale es un servicio de red privada virtual (VPN) que nos permitirá conectarnos de forma segura a nuestro servidor RDP.
Crea una cuenta de Tailscale:
Genera una clave de autenticación (Auth Key):
Una vez dentro de tu panel de Tailscale, ve a “Settings” -> “Keys”.
Haz clic en “Generate auth key…”.
Configura la clave correctamente:
Haz clic en “Generate key”.
Copia la clave generada y guárdala en un lugar seguro. La necesitarás en el siguiente paso.
Ahora, vamos a configurar nuestro repositorio de GitHub para que pueda utilizar la clave de Tailscale y ejecutar el workflow de RDP.
Añade la clave de Tailscale como un “Secret”:
TAILSCALE_AUTH_KEY
.Crea el Workflow de GitHub Actions:
rdp.yml
.name: RDP
on:
workflow_dispatch:
jobs:
secure-rdp:
runs-on: windows-latest
timeout-minutes: 360
steps:
- name: Configure Core RDP Settings
run: |
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0 -Force
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 0 -Force
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "SecurityLayer" -Value 0 -Force
netsh advfirewall firewall delete rule name="RDP-Tailscale"
netsh advfirewall firewall add rule name="RDP-Tailscale" dir=in action=allow protocol=TCP localport=3389
Restart-Service -Name TermService -Force
- name: Create RDP User with Secure Password
run: |
Add-Type -AssemblyName System.Security
$charSet = @{
Upper = [char[]](65..90)
Lower = [char[]](97..122)
Number = [char[]](48..57)
Special=([char[]](33..47)+[char[]](58..64)+[char[]](91..96) + [char[]](123..126))
}
$rawPassword = @()
$rawPassword += $charSet.Upper | Get-Random -Count 4
$rawPassword += $charSet.Lower | Get-Random -Count 4
$rawPassword += $charSet.Number | Get-Random -Count 4
$rawPassword += $charSet.Special | Get-Random -Count 4
$password = -join ($rawPassword | Sort-Object { Get-Random })
$securePass = ConvertTo-SecureString $password -AsPlainText -Force
New-LocalUser -Name "RDP" -Password $securePass -AccountNeverExpires
Add-LocalGroupMember -Group "Administrators" -Member "RDP"
Add-LocalGroupMember -Group "Remote Desktop Users" -Member "RDP"
echo "RDP_CREDS=User: RDP | Password: $password" >> $env:GITHUB_ENV
- name: Install Tailscale
run: |
Invoke-WebRequest -Uri "https://pkgs.tailscale.com/stable/tailscale-setup-latest.exe" -OutFile "tailscale.exe"
./tailscale.exe /quiet
- name: Establish Tailscale Connection
run: |
& "$env:ProgramFiles\Tailscale\tailscale.exe" up --authkey=${{ secrets.TAILSCALE_AUTH_KEY }} --hostname=gh-runner-$env:GITHUB_RUN_ID
$tsIP = $null
$retries = 0
while (-not $tsIP -and $retries -lt 10) {
$tsIP = & "$env:ProgramFiles\Tailscale\tailscale.exe" ip -4
Start-Sleep -Seconds 5
$retries++
}
if (-not $tsIP) {
Write-Error "Tailscale IP not assigned. Exiting."
exit 1
}
echo "TAILSCALE_IP=$tsIP" >> $env:GITHUB_ENV
- name: Maintain Connection
run: |
Write-Host "`n=== RDP ACCESS ==="
Write-Host "Address: $env:TAILSCALE_IP"
Write-Host "Username: RDP"
Write-Host "Password: $($env:RDP_CREDS -replace 'User: RDP \| Password: ', '')"
Write-Host "==================`n"
while ($true) {
Write-Host "[$([System.DateTime]::UtcNow.ToString('s'))] RDP Active - Use Ctrl+C in workflow to terminate"
Start-Sleep -Seconds 300
}
Ejecuta el Workflow:
Obtén la IP y las Credenciales:
RDP
) y la contraseña.Aquí es donde adaptamos el tutorial para Manjaro. Se recomienda usar Remmina por su fiabilidad.
Instala y Configura Tailscale en Manjaro:
sudo pacman -S tailscale
sudo systemctl enable --now tailscaled
sudo tailscale up
Instala y Usa Remmina:
bash sudo pacman -S remmina freerdp
RDP
) y la
contraseña de los registros de GitHub.¡Y listo! Ahora deberías tener una conexión de escritorio remoto a un servidor Windows que se ejecuta en GitHub Actions, todo desde tu escritorio Manjaro Plasma.
El servidor RDP en GitHub Actions es temporal. Cada vez que el flujo de trabajo se detiene, el servidor se elimina. Para conectarte en el futuro, solo necesitas “encender” uno nuevo siguiendo estos sencillos pasos.
Ejecuta el Workflow de Nuevo
Obtén la Nueva IP y Contraseña
Conéctate
No necesitas volver a configurar Tailscale ni los secretos de GitHub. Solo repite estos tres pasos cada vez que quieras usar tu RDP.