You can also dockerize your workloads and use an environment variable to use your ssh remote as the docker machine.
Catching a train home from the office and using a lightweight, cool to the touch, thin laptop that is offloading commands via 4g to my desktop PC with 24 cores such that I can't tell that workloads are not running locally is such a fantastic development experience.
Sure I need to be always online on 1 extra device, but the second connection can be significantly lower bandwidth while the server will access things over a hardwired 100 megabit connection.
Due to the slow upload speed of my DSL connection, this forced me to become comfortable with TUI apps and a multiplixed terminal environment, with the occassional use of Xpra when absolutely necessary.
For now I just have one node running on my office setup to access everything there and it seems to work pretty well from home. More convenient than mapping ports anyway.
Although...I don't quite grok how it might be more secure than something like certificate based SSH, seems like the Tailscale attack surface might be bigger even though you can go back and close off the firewall stuff that allows SSH to work. Would seem that instead of concentrating on breaking your (probably obscure) public IP address / port combo, an attacker would simply go to Tailscale and attack that instead.
docker context create remote ‐‐docker “host=ssh://user@remotemachine”But I see a lot of people writing code on remote machines. A good keyboard + baremetal FreeBSD (no GUI) machine is an absolute pleasure to write code on.
Got a diff on /usr/src/sys/amd64/conf/GENERIC (or whatever you call yours)?
The interactive debugger works and everything.
Intellij doesn't support this and they are releasing a new development editor designed to offload compilation to their own build servers.
(source: I've spent the last 5 years working primarily on a physical server in a proper dc and just connecting into it from thin/fanless laptops)
If you want a similar product to ZeroTier but one that uses Wireguard under the hood, Tailscale is what I've been using to connect to my home network.
Some routers have it built in, and some have packages to install it, and the official GUI clients work well: https://www.wireguard.com/install/
If you can't run it on your router, you can just set it up on a linux VM and forward a port as necessary.
The configuration file is quite simple once you get the hang of it, you've basically just got:
1. a public/private key that you exchange between connected machines
2. the address of the tunnel, locally
3. the address/port to get to the other end
4. what traffic you want to send over the tunnel
Of course if you have a firewall with it built in, then use that. However for pfSense and OpnSense wireguard runs in user mode and not the kernel, so depending on your traffic the pi may be faster since wireguard is compiled into the kernel with piVPN. Which can cause fun issues if there is a kernel update you aren't prepared for - was my only real problem with piVPN/Wireguard but it wasn't too hard to recover once I figured out what was going on :)
install pivpn, open router port & forward (automatically configured and optionally changed during setup), type 'pivpn add' at the command line for every device I want. Copy the outputted config files to device and import into wg client. Done.
2.) Install pivpn.
3.) (Optional) Modify makeCONF.sh/removeCONF.sh if needed.
I rarely leave anything turned on when I leave the house.