deprecate(lmxproxy): move all LmxProxy code, tests, and docs to deprecated/
LmxProxy is no longer needed. Moved the entire lmxproxy/ workspace, DCL adapter files, and related docs to deprecated/. Removed LmxProxy registration from DataConnectionFactory, project reference from DCL, protocol option from UI, and cleaned up all requirement docs.
This commit is contained in:
228
deprecated/windev.md
Normal file
228
deprecated/windev.md
Normal file
@@ -0,0 +1,228 @@
|
||||
# WinDev — Windows Development VM
|
||||
|
||||
Remote Windows 10 VM used for development and testing.
|
||||
|
||||
- **ESXi host**: See [esxi.md](/Users/dohertj2/Desktop/netfix/esxi.md) — VM name `WW_DEV_VM` on ESXi 8.0.3 at 10.2.0.12
|
||||
- **Backup**: See [veeam.md](/Users/dohertj2/Desktop/netfix/veeam.md) — Veeam B&R 12.3 at 10.100.0.30. Dedicated job "Backup WW_DEV_VM" targeting NAS repo. First restore point (2026-03-21) = **Baseline**: Win10 + .NET 10 SDK + .NET Fx 4.8 + Git + 7-Zip + Chrome + Claude Code + csharp-ls.
|
||||
|
||||
## Connection Details
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| **Hostname** | DESKTOP-6JL3KKO |
|
||||
| **IP** | 10.100.0.48 |
|
||||
| **OS** | Windows 10 Enterprise (10.0.19045), 64-bit |
|
||||
| **CPU** | Intel Xeon E5-2697 v4 @ 2.30GHz |
|
||||
| **RAM** | ~12 GB |
|
||||
| **Disk** | C: 235 GB free / 256 GB total |
|
||||
| **User** | `dohertj2` (local administrator) |
|
||||
| **SSH** | OpenSSH Server (passwordless via ed25519 key) |
|
||||
| **Default shell** | cmd.exe |
|
||||
|
||||
## SSH Access
|
||||
|
||||
Passwordless SSH is configured. An alias `windev` is set up in `~/.ssh/config`.
|
||||
|
||||
```bash
|
||||
# Connect
|
||||
ssh windev
|
||||
|
||||
# Run a command
|
||||
ssh windev "hostname"
|
||||
|
||||
# Run PowerShell
|
||||
ssh windev "powershell -Command \"Get-Process\""
|
||||
```
|
||||
|
||||
### SSH Config Entry (`~/.ssh/config`)
|
||||
|
||||
```
|
||||
Host windev
|
||||
HostName 10.100.0.48
|
||||
User dohertj2
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
```
|
||||
|
||||
### How Passwordless Auth Works
|
||||
|
||||
Since `dohertj2` is in the local Administrators group, Windows OpenSSH uses a special authorized keys file instead of the per-user `~/.ssh/authorized_keys`:
|
||||
|
||||
```
|
||||
C:\ProgramData\ssh\administrators_authorized_keys
|
||||
```
|
||||
|
||||
This is configured in `C:\ProgramData\ssh\sshd_config` via the `Match Group administrators` block. If you need to add another key, append it to that file and ensure ACLs are correct:
|
||||
|
||||
```powershell
|
||||
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
|
||||
```
|
||||
|
||||
## File Transfer
|
||||
|
||||
```bash
|
||||
# Copy file to Windows
|
||||
scp localfile.txt windev:C:/Users/dohertj2/Desktop/
|
||||
|
||||
# Copy file from Windows
|
||||
scp windev:C:/Users/dohertj2/Desktop/file.txt ./
|
||||
|
||||
# Copy directory recursively
|
||||
scp -r ./mydir windev:C:/Users/dohertj2/Desktop/mydir
|
||||
```
|
||||
|
||||
## Running Commands
|
||||
|
||||
The default shell is `cmd.exe`. For PowerShell, prefix commands explicitly.
|
||||
|
||||
```bash
|
||||
# cmd (default)
|
||||
ssh windev "dir C:\Users\dohertj2"
|
||||
|
||||
# PowerShell
|
||||
ssh windev "powershell -Command \"Get-Service | Where-Object { \$_.Status -eq 'Running' }\""
|
||||
|
||||
# Multi-line PowerShell script
|
||||
ssh windev "powershell -File C:\scripts\myscript.ps1"
|
||||
```
|
||||
|
||||
### Service Management
|
||||
|
||||
```bash
|
||||
# List services
|
||||
ssh windev "sc query state= all"
|
||||
|
||||
# Start/stop a service
|
||||
ssh windev "sc stop ServiceName"
|
||||
ssh windev "sc start ServiceName"
|
||||
|
||||
# Check a specific service
|
||||
ssh windev "sc query ServiceName"
|
||||
```
|
||||
|
||||
### Process Management
|
||||
|
||||
```bash
|
||||
# List processes
|
||||
ssh windev "tasklist"
|
||||
|
||||
# Kill a process
|
||||
ssh windev "taskkill /F /PID 1234"
|
||||
ssh windev "taskkill /F /IM process.exe"
|
||||
```
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Package Manager
|
||||
|
||||
| Tool | Version | Install Path |
|
||||
|------|---------|-------------|
|
||||
| **winget** | v1.28.190 | AppX package |
|
||||
|
||||
The `msstore` source has been removed (requires interactive agreement acceptance). Only the `winget` community source is configured. To install packages:
|
||||
|
||||
```bash
|
||||
ssh windev "winget install --id <PackageId> --silent --disable-interactivity"
|
||||
```
|
||||
|
||||
### Development Tools
|
||||
|
||||
| Tool | Version | Install Path |
|
||||
|------|---------|-------------|
|
||||
| **7-Zip** | 26.00 (x64) | `C:\Program Files\7-Zip\` |
|
||||
| **.NET Framework** | 4.8.1 (Developer Pack) | GAC / Reference Assemblies (v4.8.1 ref assemblies present) |
|
||||
| **.NET SDK** | 10.0.201 | `C:\Program Files\dotnet\` |
|
||||
| **.NET Runtime** | 10.0.5 (Core + ASP.NET + Desktop) | `C:\Program Files\dotnet\` |
|
||||
| **Git** | 2.53.0.2 | `C:\Program Files\Git\` |
|
||||
| **Claude Code** | 2.1.81 | `C:\Users\dohertj2\.local\bin\claude.exe` |
|
||||
|
||||
Launch with `cc` alias (cmd or Git Bash) which runs `claude --dangerously-skip-permissions --chrome`.
|
||||
|
||||
**C# LSP** — `csharp-ls` v0.22.0 installed as dotnet global tool (`C:\Users\dohertj2\.dotnet\tools\csharp-ls.exe`). Configured via the `csharp-lsp@claude-plugins-official` plugin. Provides `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, and call hierarchy operations on `.cs` files. First invocation in a session is slow (~1-2 min) while the solution loads.
|
||||
|
||||
Git is configured with `credential.helper=store` (not GCM — the bundled Git Credential Manager was removed from system config to avoid OAuth/tty issues over SSH). Credentials are stored in `C:\Users\dohertj2\.git-credentials`.
|
||||
|
||||
**Gitea** (`gitea.dohertylan.com`) is pre-authenticated — no login prompts. Clone repos with:
|
||||
|
||||
```bash
|
||||
ssh windev "git clone https://gitea.dohertylan.com/dohertj2/<repo>.git C:\src\<repo>"
|
||||
```
|
||||
|
||||
### Applications
|
||||
|
||||
| App | Version | Default For |
|
||||
|-----|---------|-------------|
|
||||
| **Google Chrome** | 146.0.7680.154 | HTTP, HTTPS, .htm, .html, .pdf |
|
||||
| **Notepad++** | 8.9.2 | — |
|
||||
|
||||
Defaults set via Group Policy `DefaultAssociationsConfiguration` pointing to `C:\Windows\System32\DefaultAssociations.xml`.
|
||||
|
||||
### Not Installed
|
||||
|
||||
- **Git** — `winget install Git.Git`
|
||||
- **Python** — `winget install Python.Python.3.12`
|
||||
- **Visual Studio** — `winget install Microsoft.VisualStudio.2022.BuildTools`
|
||||
|
||||
## Network
|
||||
|
||||
Single network interface:
|
||||
|
||||
| Interface | IP |
|
||||
|-----------|-----|
|
||||
| Ethernet0 | 10.100.0.48 (static) |
|
||||
|
||||
## Other Users with SSH Access
|
||||
|
||||
The `sshus` user also has passwordless SSH access (used for LmxProxy operations). See `lmxproxy_protocol.md` for details on the LmxProxy service running on this machine.
|
||||
|
||||
## Backup (Veeam)
|
||||
|
||||
Veeam job "Backup WW_DEV_VM" on the Veeam server (10.100.0.30). Targets the NAS repo (`nfs41://10.50.0.25:/mnt/mypool/veeam`).
|
||||
|
||||
```bash
|
||||
# Incremental backup (changed blocks only)
|
||||
ssh dohertj2@10.100.0.30 "powershell -Command \"Add-PSSnapin VeeamPSSnapin; Connect-VBRServer -Server localhost; Start-VBRJob -Job (Get-VBRJob -Name 'Backup WW_DEV_VM')\""
|
||||
|
||||
# Full backup
|
||||
ssh dohertj2@10.100.0.30 "powershell -Command \"Add-PSSnapin VeeamPSSnapin; Connect-VBRServer -Server localhost; Start-VBRJob -Job (Get-VBRJob -Name 'Backup WW_DEV_VM') -FullBackup\""
|
||||
|
||||
# Check status
|
||||
ssh dohertj2@10.100.0.30 "powershell -Command \"Add-PSSnapin VeeamPSSnapin; Connect-VBRServer -Server localhost; (Get-VBRJob -Name 'Backup WW_DEV_VM').FindLastSession() | Select-Object State, Result, CreationTime, EndTime\""
|
||||
|
||||
# List restore points
|
||||
ssh dohertj2@10.100.0.30 "powershell -Command \"Add-PSSnapin VeeamPSSnapin; Connect-VBRServer -Server localhost; Get-VBRRestorePoint -Backup (Get-VBRBackup -Name 'Backup WW_DEV_VM') | Select-Object CreationTime, Type, @{N='SizeGB';E={[math]::Round(\`$_.ApproxSize/1GB,2)}} | Format-Table -AutoSize\""
|
||||
```
|
||||
|
||||
### Restore Points
|
||||
|
||||
| ID | Date | Type | Notes |
|
||||
|----|------|------|-------|
|
||||
| `f2cd44a9` | 2026-03-21 14:28 | Full | **Baseline** — Win10 + .NET 10 SDK + .NET Fx 4.8 + Git + 7-Zip + Chrome + Claude Code + csharp-ls (old UUID) |
|
||||
| `2879a744` | 2026-03-21 15:15 | Increment | UUID fixed to `1BFC4D56-8DFA-A897-D1E4-BF1FD7F0096C`, static IP 10.100.0.48 |
|
||||
| `b4e87cfe` | 2026-03-21 16:43 | Increment | **Pre-licensing** — Notepad++ added, firewall/Defender disabled, licensing backups staged |
|
||||
| `f38a8aed` | 2026-03-21 17:01 | Increment | **Post-licensing** — WPS2020 licensing applied and verified working |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Permission denied" on SSH key auth
|
||||
|
||||
Windows OpenSSH is strict about file permissions on `administrators_authorized_keys`. Re-run:
|
||||
|
||||
```powershell
|
||||
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
|
||||
```
|
||||
|
||||
### Host key changed error
|
||||
|
||||
If the VM is rebuilt, clear the old key:
|
||||
|
||||
```bash
|
||||
ssh-keygen -R 10.100.0.48
|
||||
```
|
||||
|
||||
### Firewall blocking SSH
|
||||
|
||||
If the VM becomes unreachable, RDP in and check Windows Firewall or disable it:
|
||||
|
||||
```powershell
|
||||
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
|
||||
```
|
||||
Reference in New Issue
Block a user