Skip to content

Latest commit

 

History

History
99 lines (70 loc) · 3.24 KB

File metadata and controls

99 lines (70 loc) · 3.24 KB

Client setup (Dell Precision 3560)

Steps to turn a laptop into a control client for the Desktop.home GPU host. Run these on the client. Replace <user> with the host's login account and <HOST_IP> with the host's current LAN IP.

1. Name resolution

Desktop.home may not resolve via router DNS. Pin it in the hosts file (C:\Windows\System32\drivers\etc\hosts, admin required):

<HOST_IP>  Desktop.home Desktop

Desktop.local (mDNS) is a fallback. Because the IP is DHCP-assigned, prefer a DHCP reservation on the router so the hosts entry stays valid.

2. SSH key auth

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "client-to-desktop"

Install the public key on the host. On Windows OpenSSH, members of the Administrators group authenticate against C:\ProgramData\ssh\administrators_authorized_keys (not the per-user file), and that file must be owned by Administrators/SYSTEM with inheritance disabled. Then add a ~/.ssh/config entry (see scripts/client/ssh-config.template):

Host Desktop.home desktop
  HostName Desktop.home
  User <user>
  IdentityFile ~/.ssh/id_ed25519

Verify: ssh desktop "nvidia-smi --query-gpu=name --format=csv,noheader"

Note: the host's SSH login account is not necessarily the same as the profile folder name under C:\Users. Confirm with net localgroup administrators on the host.

3. Ollama

Point the client at the remote daemon (persists for new shells):

setx OLLAMA_HOST "http://Desktop.home:11434"

Then use the ollama CLI normally — ollama list, ollama run <model>, etc.

4. SMB share

New-SmbMapping -LocalPath 'Z:' -RemotePath '\\Desktop.home\Portable RTX Compute' -Persistent $true

5. Moonlight pairing

Interactive: open Moonlight, select the host, note the PIN, enter it at https://Desktop.home:47990 (Sunshine web UI, requires the web login).

Headless (if you have SSH admin on the host) — no web password needed:

# client: start the pairing request with a chosen PIN
moonlight pair Desktop.home --pin 4739
# host: hand the same PIN to the running Sunshine service (its -0 flag reads PIN from stdin)
echo 4739 | ssh desktop '"C:\Program Files\Sunshine\sunshine.exe" -0'
# verify (lists host apps only if paired):
moonlight list Desktop.home

JupyterLab authentication

JupyterLab is secured with a token. Auth is configured on the host's local disk (not on the SMB share, not in this repo) so the secret never ships anywhere public.

Set or rotate the token on the host:

# generate a strong token
$t = python -c "import secrets; print(secrets.token_hex(24))"
# write it to the host's Jupyter config
"c.IdentityProvider.token = `"$t`"" | Set-Content "$env:USERPROFILE\.jupyter\jupyter_server_config.py" -Encoding ascii
# restart JupyterLab, then note the token — you will need it to connect

The launcher (scripts/host/Start-JupyterLab.bat) intentionally does not pass --NotebookApp.token=""; doing so would disable authentication and re-open the service.

Connect from the client with:

http://Desktop.home:8888/?token=<your-token>

Prefer a password login instead? Run jupyter server password on the host (stores an argon2 hash in jupyter_server_config.json) and drop the token line.