How to Get Free Windows 10 RDP for AI Testing and General Computing
How to Get Free Windows 10 RDP for AI Testing and General Computing
Looking for a free remote desktop solution to download and test AI models? Discover how to set up a Windows 10 RDP using GitHub Actions that gives you six hours of computing power at a time—with unlimited recreations.
What Can You Do With This Free RDP?
This remote desktop environment is perfect for general computing tasks and AI model testing. You can download models, run experiments, and perform everyday computing activities without spending a dime.
Important limitations to note: Since this setup lacks a dedicated graphics card and sound support, it’s not suitable for demanding tasks like gaming, running Blender, or image-generating AI. However, it excels at everything else, making it an excellent choice for developers, students, and AI enthusiasts.
What You’ll Need
Before getting started, gather these essentials:
- A GitHub account (free to create)
- Tailscale installed on your device
- Windows App (your RDP client)
Step-by-Step Setup Guide
1. Create Your GitHub Repository
Start by logging into GitHub and creating a new repository. You can name it “RDP” or choose any descriptive name that makes sense to you. This repository will house the workflow that powers your remote desktop.
2. Set Up Tailscale Authentication
Visit login.tailscale.com and create an account using your GitHub credentials for convenient access. Once logged in, navigate to your settings and locate the Keys or Machines section. Generate a new authentication key—you’ll need this for the next step.
3. Add Your Secret to GitHub
Go to your repository’s settings and find the Secrets and Variables section. Click to add a new repository secret. Name it exactly TAILSCALE_AUTH_KEY and paste the authentication key you just generated from Tailscale.
4. Create the Workflow File
Navigate to the .github/workflows directory in your repository. Create a new file named main.yml and paste the workflow code below into it. Commit these changes to save your configuration.
Copy this workflow code:
name: RDP
on:
workflow_dispatch:
jobs:
secure-rdp:
runs-on: windows-latest
timeout-minutes: 3600
steps:
- name: Configure Core RDP Settings
run: |
# Enable Remote Desktop and disable Network Level Authentication (if needed)
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
# Remove any existing rule with the same name to avoid duplication
netsh advfirewall firewall delete rule name="RDP-Tailscale"
# For testing, allow any incoming connection on port 3389
netsh advfirewall firewall add rule name="RDP-Tailscale" `
dir=in action=allow protocol=TCP localport=3389
# (Optional) Restart the Remote Desktop service to ensure changes take effect
Restart-Service -Name TermService -Force
- name: Create RDP User with Secure Password
run: |
Add-Type -AssemblyName System.Security
$charSet = @{
Upper = [char[]](65..90) # A-Z
Lower = [char[]](97..122) # a-z
Number = [char[]](48..57) # 0-9
Special = ([char[]](33..47) + [char[]](58..64) +
[char[]](91..96) + [char[]](123..126)) # Special characters
}
$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
if (-not (Get-LocalUser -Name "RDP")) {
Write-Error "User creation failed"
exit 1
}
- name: Install Tailscale
run: |
$tsUrl = "https://pkgs.tailscale.com/stable/tailscale-setup-1.82.0-amd64.msi"
$installerPath = "$env:TEMP\tailscale.msi"
Invoke-WebRequest -Uri $tsUrl -OutFile $installerPath
Start-Process msiexec.exe -ArgumentList "/i", "`"$installerPath`"", "/quiet", "/norestart" -Wait
Remove-Item $installerPath -Force
- name: Establish Tailscale Connection
run: |
# Bring up Tailscale with the provided auth key and set a unique hostname
& "$env:ProgramFiles\Tailscale\tailscale.exe" up --authkey=${{ secrets.TAILSCALE_AUTH_KEY }} --hostname=gh-runner-$env:GITHUB_RUN_ID
# Wait for Tailscale to assign an IP
$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: Verify RDP Accessibility
run: |
Write-Host "Tailscale IP: $env:TAILSCALE_IP"
# Test connectivity using Test-NetConnection against the Tailscale IP on port 3389
$testResult = Test-NetConnection -ComputerName $env:TAILSCALE_IP -Port 3389
if (-not $testResult.TcpTestSucceeded) {
Write-Error "TCP connection to RDP port 3389 failed"
exit 1
}
Write-Host "TCP connectivity successful!"
- name: Maintain Connection
run: |
Write-Host "`n=== RDP ACCESS ==="
Write-Host "Address: $env:TAILSCALE_IP"
Write-Host "Username: RDP"
Write-Host "Password: $(echo $env:RDP_CREDS)"
Write-Host "==================`n"
# Keep runner active indefinitely (or until manually cancelled)
while ($true) {
Write-Host "[$(Get-Date)] RDP Active - Use Ctrl+C in workflow to terminate"
Start-Sleep -Seconds 300
}
WordPress will automatically add a copy button to this code block, making it easy for your readers to copy the entire workflow with one click.
5. Run Your Workflow
Head over to the Actions tab in your GitHub repository. Select the RDP workflow you just created and manually trigger it to run. The workflow will begin executing and generating your connection details.
6. Retrieve Your Connection Details
Once the workflow completes, you’ll see the RDP connection information displayed on the GitHub page. Take note of three crucial pieces of information: the IP address, username, and password.
7. Connect Using Windows App
Open the Windows App on your device and accept the terms of service. Click on PC Connection and enter the IP address, username, and password from GitHub.
For the best viewing experience, navigate to the Display settings within the RDP client. Adjust the resolution manually or select “Match this device” to automatically optimize the display for your screen.
8. Access Your Remote Desktop
Click connect, and after a brief initialization period, you’ll be connected to your fresh Windows 10 remote desktop environment. The entire setup runs on a Windows 10 server powered by GitHub Actions.
Understanding the Six-Hour Limit
Your RDP session will automatically close after six hours of runtime. This is a GitHub Actions limitation, but there’s a simple workaround: just head back to your repository’s Actions tab and re-run the workflow to create a new session. This effectively gives you unlimited access, as long as you’re willing to restart every six hours.
Perfect Use Cases
This free RDP solution is ideal for:
- Testing and experimenting with AI models
- General software development
- Learning new technologies in a Windows environment
- Running scripts and automation tasks
- Accessing Windows-specific tools without owning a Windows PC
Getting Started Today
With GitHub Actions providing the infrastructure and Tailscale handling the secure connection, you now have access to a powerful remote computing environment at zero cost. Whether you’re exploring AI models, developing software, or simply need a Windows environment for testing, this setup delivers exactly what you need.
Remember to save your workflow file and keep your Tailscale authentication key secure. Happy computing, and enjoy your unlimited access to free remote desktop sessions!
