Access full Windows, macOS, and Linux desktop environments for FREE using GitHub Actions and Cloudflare Tunnels - No domain required, No authentication needed!
- Features
- Supported Operating Systems
- Prerequisites
- Quick Start
- Setup Instructions
- Client Connection Guide
- Network-Wide Access
- Specifications
- Troubleshooting
- Security Notes
- FAQ
- Contributing
- License
- π 100% Free - No credit card, no paid subscriptions
- π Instant Setup - One-click deployment via GitHub Actions
- π Secure Tunneling - Cloudflare encrypted connections
- π No Domain Required - Automatic TryCloudflare subdomain
- π» Full Desktop Access - Complete GUI environments
- π± Multi-Platform Support - Connect from any device
- β±οΈ 6 Hours Runtime - Per workflow session
- π Unlimited Restarts - Run as many sessions as needed
| OS | Protocol | Port | Desktop Environment |
|---|---|---|---|
| Windows Server 2022 | RDP | 3389 | Full GUI |
| macOS 12+ (Monterey/Ventura) | VNC | 5900 | Native macOS |
| Ubuntu 22.04 LTS | VNC | 5901 | XFCE4 |
- GitHub account
- Repository with GitHub Actions enabled
- Cloudflared client installed on your local machine
- RDP/VNC client based on target OS
- Fork/Create this repository
- Go to Actions tab
- Select your desired workflow:
WINDOWS RDP - CLOUDFLAREmacOS VNC - CLOUDFLARELINUX DESKTOP - CLOUDFLARE
- Click Run workflow
- Wait 2-3 minutes for initialization
Check workflow logs and copy the Cloudflare Tunnel URL:
https://example-random-subdomain.trycloudflare.com
Follow the Client Connection Guide below based on your device.
Copy the appropriate workflow file to .github/workflows/ in your repository:
- Windows:
windows-rdp.yml - macOS:
macos-vnc.yml - Linux:
linux-desktop.yml
Create a new file in .github/workflows/ and paste the workflow code for your desired OS.
Default Credentials:
- Username:
runneradmin(Windows) /vncuser(macOS) / N/A (Linux) - Password:
P@ssw0rd123!(All systems)
β οΈ Change the password in workflow files before running!
Install cloudflared on your local machine:
Windows:
# Download from GitHub Releases
https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.exe
macOS:
brew install cloudflare/cloudflare/cloudflared
Linux:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x cloudflared-linux-amd64
sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared
cloudflared access tcp --hostname <your-tunnel-url> --url localhost:3389
Example:
cloudflared access tcp --hostname admitted-detected-lexington.trycloudflare.com --url localhost:3389
- Press Windows + R
- Type:
mstsc - Press Enter
- Computer:
localhost:3389 - Username:
runneradmin - Password:
P@ssw0rd123!
Click Connect and accept any certificate warnings.
cloudflared access tcp --hostname <your-macos-tunnel-url> --url localhost:5900
Install RealVNC Viewer or TightVNC Viewer:
- Open VNC Viewer
- Server:
localhost:5900 - Password:
P@ssw0rd123!
Same as macOS VNC, but use port 5901:
cloudflared access tcp --hostname <your-linux-tunnel-url> --url localhost:5901
Then connect with VNC Viewer to localhost:5901.
cloudflared access tcp --hostname <your-windows-tunnel-url> --url localhost:3389
Download from Mac App Store:
- Microsoft Remote Desktop (Free)
- Open Microsoft Remote Desktop
- Click + Add PC
- PC name:
localhost:3389 - User account: Add credentials
- Username:
runneradmin - Password:
P@ssw0rd123!
- Username:
Double-click the connection to start.
cloudflared access tcp --hostname <your-macos-tunnel-url> --url localhost:5900
open vnc://localhost:5900
Or:
- Open Finder
- Press Command + K
- Enter:
vnc://localhost:5900 - Password:
P@ssw0rd123!
Same as macOS VNC, but use port 5901:
cloudflared access tcp --hostname <your-linux-tunnel-url> --url localhost:5901
open vnc://localhost:5901
# For Windows RDP
cloudflared access tcp --hostname <tunnel-url> --url localhost:3389
# For macOS/Linux VNC
cloudflared access tcp --hostname <tunnel-url> --url localhost:5900
For Windows RDP:
sudo apt install remmina # Ubuntu/Debian
sudo dnf install remmina # Fedora
For macOS/Linux VNC:
sudo apt install tigervnc-viewer # Ubuntu/Debian
sudo dnf install tigervnc # Fedora
RDP (Windows):
remmina -c rdp://localhost:3389
# Or use GUI: Protocol=RDP, Server=localhost:3389
VNC (macOS/Linux):
vncviewer localhost:5900 # or 5901 for Linux
-
Install Microsoft Remote Desktop
- Google Play Store: Microsoft Remote Desktop
- Alternative APK: APKMirror - Microsoft Remote Desktop
-
Setup Cloudflared on PC
- Run cloudflared on a PC in your network
cloudflared access tcp --hostname <tunnel-url> --url 0.0.0.0:3389 -
Find PC IP Address
ipconfig # Windows ifconfig # Linux/Mac -
Connect from Android
- Open Microsoft Remote Desktop app
- Tap + β Desktop
- PC name:
192.168.x.x:3389(your PC IP) - User account: runneradmin / P@ssw0rd123!
- Tap Save and connect
-
Install VNC Viewer
- Google Play Store: VNC Viewer
- Alternative APK: APKMirror - VNC Viewer
-
Setup Cloudflared on PC (same network)
cloudflared access tcp --hostname <tunnel-url> --url 0.0.0.0:5900 -
Connect from Android
- Open VNC Viewer app
- Tap +
- Address:
192.168.x.x:5900(your PC IP) - Name: Any name
- Password: P@ssw0rd123!
-
Install Microsoft Remote Desktop
- Apple App Store: Microsoft Remote Desktop
-
Setup Cloudflared on Mac/PC
cloudflared access tcp --hostname <tunnel-url> --url 0.0.0.0:3389 -
Connect from iOS
- Open app β Tap + β Add PC
- PC name: Your Mac/PC IP (192.168.x.x:3389)
- User account: runneradmin / P@ssw0rd123!
-
Install VNC Viewer
- Apple App Store: VNC Viewer
-
Setup and Connect
- Same process as Android VNC
- Use port 5900 for macOS, 5901 for Linux
π¨ IMPORTANT: Don't use Google Play Store version (outdated & broken)
- Download F-Droid: F-Droid Official
- Install F-Droid APK on your Android device
- Search for "Termux" in F-Droid app
- Install Termux: Termux on F-Droid
- Visit GitHub: Termux Releases
- Download latest APK:
termux-app_vX.X.X+github-debug_universal.apk - Enable "Install from Unknown Sources" in Android settings
- Install the APK
# Update packages
pkg update && pkg upgrade
# Install required packages
pkg install wget curl git# Download cloudflared for ARM64 (most modern Android devices)
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64
# Make it executable
chmod +x cloudflared-linux-arm64
# Move to PATH
mv cloudflared-linux-arm64 $PREFIX/bin/cloudflared
# Verify installation
cloudflared --versionFor Windows RDP:
# Start tunnel
cloudflared access tcp --hostname <your-tunnel-url> --url localhost:3389
# Keep this terminal open, open new session
# Install RDP client
pkg install freerdp
# Connect to Windows
xfreerdp /v:localhost:3389 /u:runneradmin /p:P@ssw0rd123!For macOS/Linux VNC:
# Start tunnel
cloudflared access tcp --hostname <your-tunnel-url> --url localhost:5900
# Install VNC client
pkg install tigervnc
# Connect to VNC
vncviewer localhost:5900
# Enter password when prompted: P@ssw0rd123!For better experience with graphical applications:
# Install VNC server for Termux
pkg install x11-repo
pkg install tigervnc xfce4
# Start VNC server
vncserver :1
# In another session, connect to your remote desktop
cloudflared access tcp --hostname <tunnel-url> --url localhost:5900Issue: "Permission denied" when installing cloudflared
# Fix permissions
termux-setup-storage
chmod +x cloudflared-linux-arm64Issue: "Command not found" for cloudflared
# Check if binary is in correct location
ls -la $PREFIX/bin/cloudflared
# If not there, move it manually
cp cloudflared-linux-arm64 $PREFIX/bin/cloudflaredIssue: VNC connection fails
# Check if tunnel is running
ps aux | grep cloudflared
# Restart tunnel if needed
pkill cloudflared
cloudflared access tcp --hostname <tunnel-url> --url localhost:5900 &To allow connections from any device on your local network (not just localhost):
Instead of localhost, use 0.0.0.0:
# Windows RDP
cloudflared access tcp --hostname <tunnel-url> --url 0.0.0.0:3389
# macOS VNC
cloudflared access tcp --hostname <tunnel-url> --url 0.0.0.0:5900
# Linux VNC
cloudflared access tcp --hostname <tunnel-url> --url 0.0.0.0:5901
Windows:
ipconfig
macOS/Linux:
ifconfig
# or
ip addr show
Look for IPv4 Address (e.g., 192.168.1.100)
Use your PC's IP instead of localhost:
- RDP:
192.168.1.100:3389 - VNC:
192.168.1.100:5900
Windows:
New-NetFirewallRule -DisplayName "Cloudflared RDP" -Direction Inbound -LocalPort 3389 -Protocol TCP -Action Allow
Linux:
sudo ufw allow 5901/tcp
- CPU: 4 cores (Intel Xeon)
- RAM: 16GB
- Storage: 14GB SSD
- OS: Windows Server 2022 Datacenter
- Pre-installed: Visual Studio Build Tools, Git, PowerShell
- CPU: 3 cores
- RAM: 14GB
- Storage: 14GB SSD
- OS: macOS 12+ (Monterey/Ventura)
- Pre-installed: Xcode, Homebrew, Git
- CPU: 4 cores
- RAM: 16GB
- Storage: 14GB SSD
- OS: Ubuntu 22.04 LTS
- Desktop: XFCE4
- Pre-installed: Docker, Git, build-essential
- Runtime: 6 hours per workflow
- Concurrent Jobs: 20 (Free tier)
- Monthly Minutes: 2,000 minutes (Free tier)
Solution:
- Wait 2-3 minutes for full initialization
- Check if cloudflared installed correctly
- Look for separate PowerShell window (Windows)
Solution:
- Verify cloudflared is running on client machine
- Check if correct port is used (3389/5900/5901)
- Ensure tunnel URL is correct
- Check firewall settings
Solution:
- Default password:
P@ssw0rd123! - Check if password was changed in workflow
- For macOS VNC, try lowercase password
Solution:
# Kill existing cloudflared processes
taskkill /F /IM cloudflared.exe # Windows
killall cloudflared # Mac/Linux
pkill cloudflared # Termux
# Restart cloudflared
cloudflared access tcp --hostname <url> --url localhost:3389
Solution:
- Ensure cloudflared uses
0.0.0.0binding - Verify mobile device is on same WiFi network
- Use PC's local IP, not localhost
- Check PC firewall allows incoming connections
Solution:
- Check ARM architecture:
uname -m(should be aarch64 or armv7l) - Download correct binary for your architecture
- Ensure proper permissions:
chmod +x cloudflared
- Change default password in workflow files
- Don't share tunnel URLs publicly
- Use strong passwords (12+ characters, mixed case, numbers, symbols)
- Monitor workflow logs for suspicious activity
- Delete workflows when not in use
- β Encrypted tunnels via Cloudflare
- β Temporary URLs - expire after session ends
- β No public exposure - requires cloudflared client
- β GitHub authentication required to run workflows
- Tunnel URLs are public but require cloudflared client
- Sessions are temporary (max 6 hours)
- Don't store sensitive data on these machines
- GitHub may rate-limit excessive usage
Q: Is this really free? A: Yes! GitHub Actions provides 2,000 free minutes/month. Cloudflare Tunnels are free forever.
Q: Can I use this for production workloads? A: No, this is for testing/development only. Sessions are temporary and limited.
Q: How long can I use the desktop? A: Maximum 6 hours per session. You can restart unlimited times.
Q: Can multiple people connect to the same session? A: Yes, but performance may degrade with multiple connections.
Q: What happens to my data when session ends? A: Everything is deleted. GitHub Actions runners are ephemeral.
Q: Can I install custom software? A: Yes! You have admin/sudo access. Add installation steps to workflow.
Q: Does this work in my country? A: Yes, if you can access GitHub and Cloudflare.
Q: Can I access this from anywhere? A: Yes, as long as you have the tunnel URL and cloudflared client installed.
Q: Can I use this on rooted/jailbroken devices? A: Yes, but be careful with security. Don't store sensitive data.
Q: Why not use Google Play Store Termux? A: Play Store version is outdated (Android 7 target) and has many broken features. F-Droid version is actively maintained.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Additional OS support
- Automated testing
- Performance optimizations
- Documentation improvements
- Security enhancements
- Mobile app integration guides
- Termux automation scripts
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Actions - Free CI/CD platform
- Cloudflare Tunnels - Secure tunneling service
- AnimMouse/setup-cloudflared - GitHub Action for cloudflared
- Termux Team - Android Linux environment
- F-Droid - Open source Android app repository
Found this helpful? Give it a β!
For issues or questions:
- Open an Issue
- Check Discussions
- Read the Troubleshooting section