I recovered from a small disaster today using the neko dockerised web-browser.
I set up a remote backup with Proxmox running on a HP mini and a Synology a month ago at a friend’s house 3000 km away. I thought I’d reserved all the IP addresses, but last night the Synology IP address changed, so the NFS shares to Proxmox and Jellyfin broke. That wasn’t to hard to fix remotely, but I don’t want it to happen every time the DHCP lease expires.
So now I need to log into their router and reserve the IP addresses…
I can get on the local network there by ssh-ing into one of my entities (via Tailscale), but how do I get to the web interface of the router?
Enter neko. It spins up a browser in a Docker container that can be accessed over a web address. So I created an LXC, installed docker and spun it up, then was able to use that to open the local-only web interface to the router.
neko is intended for watch parties, so multiple people can be logged in to the same browser window at a time - there’s a toggle to take control of the window for clicks and typing, but apart from that it’s all pretty straight forward. There’s a very noticeable lag, but it got the job done.
Perhaps there was an easier lighter-weight way of doing this? In the old old days there was a text browser called Lynx - so perhaps there’s some modern iteration that could have done this job?
Edit: There is an easier lighter-weight way of doing this!
Thanks to @SteveTech@programming.dev, @Dewege@feddit.org and others who mentioned ‘ssh tunneling’ - TIL I could just connect a local port (8080 in my case) to port 80 on the router (192.168.1.1:80 in my case) via the VM I have ssh access to over tailscale (thirdbreakfast@100.126.38.117) with:
ssh -L 8080:192.168.1.1:80 thirdbreakfast .126.38.117
ssh -L <local port to use>:<remote machine to access with port> <ssh address of jump machine>
When executed, that looks like I’ve just ssh’ed into that machine, but until I log out of that connection I can open up 127.0.0.1:8080 in my browser and I’m in the router’s web interface - still a tiny bit of lag, but way smoother experience with less carry on.
Amazeballs.
Neat, but if you had Tailscale, why not use Tailscale?
Probably doesn’t have it set up with subnet access on to his friends network. Which tbf you wouldn’t actually want for this use case.
Yes - we’re “I’ll let you use my electricity for your computer thing” friends, not “I’m okay with seeing your printer on my home network” friends.
Well, that’s what you are doing with ssh tunnels and remote browsers. If you want separation, they can put your computer in their router’s DMZ (demilitarized zone), so it doesn’t have access to their devices. Additionally, If you use the Tailscale IPs (or host names) instead of their local IPs on his network, they won’t ever change.