Skip to content

Part I: Remote Server Setup

The scenario: A Windows 11 PC with an RTX 4060 (16GB VRAM) sits at your brother's place. Tailscale is installed. WSL2 Ubuntu is ready. You want to SSH into it from home and use it as a GPU dev server. This part gets you from zero to a fully persistent, auto-starting remote Linux environment.

Architecture

graph LR
    subgraph "Your Home"
        HOME["Linux Machine<br/>ssh wsl-dev"]
    end

    subgraph "Tailscale Mesh"
        TS["WireGuard Tunnel<br/>100.125.78.30"]
    end

    subgraph "Brother's PC"
        WIN["Windows 11<br/>Tailscale App"]
        WSL["WSL2 Ubuntu<br/>sshd + CUDA"]
        GPU["RTX 4060<br/>16GB VRAM"]
        WIN --- WSL
        WSL --- GPU
    end

    HOME --> TS --> WIN

Chapters

# Article What you'll learn
1 Architecture & Decisions Tailscale-on-Windows vs WSL2, mirrored vs NAT networking
2 SSH Setup openssh-server, key-based auth, client config
3 Tailscale Networking Windows host approach, DNS issues, port exposure
4 WSL2 Persistence Boot automation, keep-alive, sleep infinity pattern
5 Networking Mirrored mode, firewall rules (Windows + Hyper-V)
6 GPU & CUDA Paravirtualized GPU, CUDA toolkit, ML workloads
7 Automation Scripts ssh_ready/ and full_setup/ script suites
8 Advanced Interop RDP, Sunshine, Ollama, Jupyter, VS Code Remote
9 Alternatives Community comparison, what we do better

Quick Reference

Layer Choice Why
VPN Tailscale on Windows only Official recommendation, no MTU/DNS conflicts
Networking Mirrored mode No portproxy needed, ports bind to host IPs
SSH openssh-server in WSL2 Key-auth only, port 22
Persistence Task Scheduler + sleep infinity Reliable; systemd keep-alive has regressions
GPU Windows driver only WSL2 uses paravirtualized stubs
CUDA cuda-toolkit-12-x Never install cuda or cuda-drivers