Free Github RDP 💻

Free Github RDP 💻

Setup a Windows RDP connection using GitHub Actions & Tailscale

Want a free Windows 11 Remote Desktop? Follow these simple steps — no VPS or payment needed!

⚡ How This Works

  • GitHub Actions provides a free Windows runner (temporary).
  • Tailscale creates a secure, private network — no port forwarding needed.
  • A local user "RDP" is created with a strong random password.
  • You can connect from any device that's also on your Tailscale network.

📌 Detailed Step‑by‑Step Guide

1
Create GitHub Repository
Go to GitHub, create a new repository, name it anything, and click Create.
2
Connect with Tailscale
Visit Tailscale.com, click Start Connecting Devices, and sign in with your GitHub account.
3
Generate Auth Key
In Tailscale → SettingsKeys, click Generate Auth Key and copy it safely.
4
Add Key to GitHub
Open your GitHub repo → SettingsSecretsActions → New Repository Secret.
Name: TAILSCALE_AUTH_KEY, paste your Auth Key, and save.
5
Run the Workflow
Go to Actions tab → set up a workflow yourself → paste the RDP code below → Commit & Run Workflow.
6
Connect to RDP
Install Tailscale on your PC or phone → sign in with same account → open Remote Desktop → enter the IP and password shown in the workflow logs.

📜 Workflow YAML Code

Copy this exact YAML into the workflow editor on GitHub.

📄 rdp.yml
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 NLA 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 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: | & "$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: Verify RDP Accessibility run: | Write-Host "Tailscale IP: $env:TAILSCALE_IP" $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: ABDULLAH" Write-Host "Password: $(echo $env:RDP_CREDS)" Write-Host "==================`n" while ($true) { Write-Host "[$(Get-Date)] RDP Active - Use Ctrl+C in workflow to terminate" Start-Sleep -Seconds 300 }

🔒 Important Security Tips

  • Never share the workflow logs publicly — they contain your password.
  • Tailscale encrypts all traffic; only devices on your tailnet can connect.
  • Runner auto‑terminates after 6 hours, but you can cancel sooner.
  • Use responsibly — for learning, testing, or temporary tasks only.

✅ Your free Windows 11 RDP is ready for browsing, testing, or light work.

🚀 Enjoy your free RDP setup!

Abdullah Skill 🛒 – Your One-Stop Source for Blogger Templates 📄, Themes 🎨, PHP Scripts 💻, Widgets 🧩 & More. Powered by Abdullah Coded & Designs ✨.

قد تُعجبك هذه المشاركات

إرسال تعليق

Enter Image URL / Code Snippets / Quotes / name tag, then click parse button accordingly that you have entered. then copy the parse result and paste it into the comment field.


الأحدث
Cookie Consent

We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.

Google Translate
Bookmark Post
Loading ...

Sign In

Use your Google account to continue

Profile
User