Setup a private remote desktop environment with Openbox, XRDP, Kitty, Diodon, and Tailscale for secure remote access.
Note: Gitpod and OpenShift currently use raw scripts. Contributions to update these to packaged solutions are welcome.
- GitHub Codespaces: 60 hours/month (2 cores) = 120 CPU hours
- Gitpod: 50 hours/month
Total: 110 hours/month (~15.7 working days at 7 hours/day)
{
"name": "Openbox",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"runArgs": [
"--device=/dev/net/tun", // needed for Tailscale
"--shm-size=2g" // needed for browsers
],
"features": {
"ghcr.io/tailscale/codespace/tailscale:latest": {},
"ghcr.io/rahuldhole/openbox/xrdp:latest": {},
"ghcr.io/rahuldhole/openbox/google-chrome:latest": {},
"ghcr.io/rahuldhole/openbox/microsoft-edge:latest": {},
"ghcr.io/rahuldhole/openbox/vscode:latest": {}
},
"postCreateCommand": "/bin/bash -c 'echo \"vscode:vscode\" | sudo chpasswd'",
"postStartCommand": "/usr/local/sbin/xrdp-entrypoint",
"remoteUser": "vscode"
}
sudo service xrdp status
sudo tailscale status
sudo tailscale up
- Use the Tailscale VPN IP of the Codespaces or Gitpod instance.
- RDP User Credentials:
- Codespaces:
vscode:vscode
- Gitpod:
gitpod:gitpod
- Codespaces:
- Right-click on the blue screen to access more options.
Shortcut | Action |
---|---|
Alt + T |
Switch between windows in the current workspace |
Alt + D |
Show or hide the desktop |
Alt + <Left/Right Arrow> |
Switch between adjacent workspaces |
Alt + Shift + <Left/Right> |
Move current window to adjacent workspaces |
Alt + <Number> |
Jump to the nth workspace (non-numpad keys) |
Shortcut | Application |
---|---|
Alt + Ctrl + K |
Open Kitty terminal (kitty ) |
Alt + Ctrl + G |
Open Google Chrome (--no-sandbox ) |
Alt + Ctrl + E |
Open Microsoft Edge (--no-sandbox ) |
Alt + Ctrl + V |
Open VS Code (code --no-sandbox . ) |
Alt + V |
Open Diodon clipboard manager |
Note: Customize shortcuts in ~/.config/openbox/rc.xml
.
- Do not open the Codespaces repository inside RDP.
- This may trigger excessive network traffic and system hangs.
- Resource Usage:
- 2 cores are sufficient for most development tasks.
- In Gitpod, if Tailscale is not started:
sudo tailscaled sudo -E tailscale up --hostname "gitpod-${GITPOD_GIT_USER_NAME// /-}-$(echo ${GITPOD_WORKSPACE_CONTEXT} | jq -r .repository.name)"
Contributions are welcome! Feel free to submit pull requests to enhance functionality or improve documentation.