We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Analysis Summary
Worth Noting
Positive elements
- This video provides a detailed, practical look at a professional Linux-based remote development stack including Tailscale, Tmux, and Neovim.
Be Aware
Cautionary elements
- The creator's preference for renting hardware is influenced by receiving the service for free, which may skew the perceived value proposition for a paying viewer.
Influence Dimensions
How are these scored?About this analysis
Knowing about these techniques makes them visible, not powerless. The ones that work best on you are the ones that match beliefs you already hold.
This analysis is a tool for your own thinking — what you do with it is up to you.
Related content covering similar topics.
Transcript
I get asked this question over and over which is what is going on with your Dev setup and I get why people are curious you know it's a little weird even though I have a desktop and a laptop I actually don't do work on either of those machines I connect to a third device which is a server running remotely and that's where I do all of my work so I'm finally going to answer the question why am I bothering with this kind of crazy setup what are some of the upsides and then I'm going to walk you through the exact tooling I'm using to make this a pretty pretty nice experience and I think when you see it you're going to be like huh I might want to try that myself so let's get right into it my primary machine is this desktop right here there is a 3900x CPU there is 32 gigs of RAM a 380 GPU and some ssds that I've collected over the years if I want to upgrade this guy I can't just replace a CPU cuz modern CPUs use a different socket so I have to buy a new motherboard and if I get a new motherboard then I got to upgrade the RAM cuz I don't want the ram ball necking the system and it starts to look a whole lot like a full system upgrade and even if I do that I got to disassemble it reassemble it take the old Parts box them up put them up on eBay sell them ship them there is just a lot of overhead with upgrading your own Hardware it might be cheaper it was fun for a little bit but it's not this process that's particularly efficient when you rent a server you can tap into the latest and greatest uh Hardware that's out there you can get the fastest CPU you can get the fastest RAM and you pay a fixed monthly price for it if new hardware comes out upgrades are handled for you uh the company will buy the new servers set them up upgrade you take the old servers sell them to other customers that want them or sell them off to other vendors that can use them more efficiently it is just a much more efficient process and you don't deal with the hardware upgrades so renting is more expensive in the long run but because of all this overhead associated with owning I have now preferred to just switching to renting the other nice little benefit is the flexibility I can scale up I can say like hey I'm only using six cores I'm going to pay for six cores okay now I'm doing some more intense work that benefits from this let me double that I can double it for a couple months and then bring it back down so I much appreciate the flexibility and offloading this overhead of managing Hardware the second reason why I do this is the multid device experience I recently bought this device right here this is an M3 MacBook Air um the Fantastic piece of Hardware it's new for me I haven't used a Mac in 15 plus years because I primarily like using Linux but with this remote server I can now just pick the best physical device because it's just going to connect to the remote server anyway uh this MacBook is really lightweight it's got a fantastic screen the battery life is amazing especially when all the work is being done remotely this thing can easily last 2 days without a problem and the best part is transitioning between my devices if I'm sitting here on my desktop working on stuff and I decide hey I'm going to go to the backyard do some work in my hammock I can just grab my laptop go out there connect to the same session and I'm back in the exact same file my little cursor is in the exact same spot there's no configuration to sync over there are no files to sync over I can just grab Mis switch between devices super seamlessly so all of your physical devices just end up being gateways that feel great to use to this remote server where all the work is actually being done how do you go about actually doing this so the first step is obviously to find a server um to start small you can just use a VPS provider these are companies that rent virtual machines instead of the whole server so you can just pick up like four cores and 8 gigs to try out this setup and it won't cost you that much at all and you pay by the month so if you don't like it you just stop stop paying for it uh the way I would recommend searching for a provider is to search the latest desktop CPU let's say like a 9950 X and then the city that you're closest to then search a VPS provider you'll probably find a bunch of VPS providers that are there that can sell you something that's pretty affordable the reason I say desktop CPUs is that server CPUs are a lot more expensive and they're optimized for different things uh for like personal use you tend you'll tend to find like higher clock speeds in desktop CPUs and there are people that will rent that so I personally don't do that uh I have a full dedicated machine that has been donated to us by reliable site they are a fantastic dedicated server provider you will get the fastest CPUs the just the best setup that you can possibly find anywhere uh in a bunch of major cities for a very reasonable price so they have uh kindly sponsored me and my work so uh I use that full machine but then I will cut it up into a bunch of different virtual machines I'll use one for myself my wife uses one I'm the first man in the history of the universe to convin his wife to use Arch Linux but I've done it I've set records I've pushed the bar um so I'll cut that machine up into a bunch of different virtual machines buying a VPS is effectively someone else having done that for you and we'll jump into uh my full setup which is you know going to be that managing that full machine but then most of it will be dealing with the VM that's that's inside of it so once I have the server the first thing I install on it is tail scale so tail scale is pretty popular now you probably have heard of it it is a way to create a virtual Network across all of your devices no matter where they are so you can have some devices in your house your phone which is out all over the place you can have this remote server and it creates one big mesh Network to let them all communicate with each other as though they were all physically on the same network is one of the best pieces of software that has ever been released it's so reliable it just works I absolutely love it it just has like a ton of fans um so first thing I do is I install it on my server and I make sure you know my local device also has it set up so once that's set up the only thing I really need to do in terms of Security is to set up some firewall rules so there is something called uh ufw which I think stands for uncomplicated firewall uh and if you look at the rules I have set I just say you know allow anything from tail scale and that's it everything else is denied so any inbound traffic from anywhere else is just totally deny if you try to if you figure out the IP of the server and try directly connect you will get rejected the only devices that have access are the ones that are in your tail scale Network and they can access it by name so this one is the server is called Challenger I name all my servers after various ships or spacecraft um and I can just do SSH Challenger from my desktop or my laptop and I will immediately get in here so like I mentioned earlier I manage a full server and cut it up into VMS myself and I use this tool called cockpit which lets me create virtual machine on the server so you can see that I have uh two virtual or I have three here uh this one is my wife's ryus is mine I also have a Windows machine that I mostly have off but I will use to debug various things um so if you go into my server you can see I've allocated some CPU I've allocated 64 gigs of RAM I've allocated some disk um and I can manage everything here if I need to do some kind of manual Intervention when I first set this up I install Arch Linux on it um I can do this all through this little VNC console that's right here and then I also set up tail scale on this VM because again there's no inbound traffic allowed to this VM because it's sitting inside of the server which itself is firewalled off so set up tail scale on here allowing my machines to as a stage directly into it by the name Romulus here um and once that's set up I pretty much never have to go here again because I can just SSH into it from any of my devices so once I'm in the VM uh I will set up my DOT files which I have in this Dev environment package this is actually something that's been on GitHub for like probably like 10 years now um there's two parts to it I would say we've got obviously a bunch of my configuration for things like you know t-mo for things like neovim all my configs in there but also all the packages that I need installed and I just made my own script some manages I've tried various things over the years and I landed on just a very simple list of packages that I need and then an install script to install them um I do this like kind of grouping thing so I have all my base packages that I care about so this will be stuff like uh node.js um you know bun just all the things that I need on all my devices and I also this desktop list which are things that I need just on my desktop so this will be like UI applications like Chrome um like I3 things like that and then for each of my devices I have a folder so this um uh this is my server that I was just showing you Sim link the base which contains all the base stuff and there's some like romula specific packages I have on here and this is my desktop which you know has bass and also my desktop uh and this install script will just based on the current you know device that it's on it'll install the list of packages that are matching um and I have some other scripts to like figure out if I've installed anything manually that I needs to get added into this list and to clean up anything that uh was installed manually but I don't want anymore so it's synchronized with this list so once that's there the next thing I do is set up t-m so I'm going to connect to an existing t-u session but normally I create a new one uh t-mo is the terminal multiplexer it's what lets me create a bunch of sessions for my different projects have different windows in them it stays up even if I disconnect uh from the server so if I reconnect from the same device or a different device t-o is what's making sure that I'm brought back to the same session to the same spot that I was in before uh so if you look here I have basically a session for each of my projects you know I work on SST uh I have you know my editor if I switch over to openo I also have my editor with you know open up to the openo folder um and t-mo lets you manage all these different projects each project can have multiple windows you can have multiple panes you can do whatever you want uh you can also save all this stuff so even if your server for some reason needs to reboot it can bring all the stuff back up but typically this will just stay up forever and that's what makes the magic of switching devices so nice my desktop is technically dual booted with Linux and windows so when I reboot into windows and reboot back into Linux I don't have to bring everything up again because my server's been up and running the whole time so the next thing is neovim if I'm going to do everything remotely over an SS session having a terminal based editor is fantastic neovim is a great terminal based editor pretty much in each one of my projects the first window is always is always neovim and it's always opened up to you know my project and everything that's going on in there so neovim is great I don't have to talk about it there's plenty of people on here on YouTube that'll tell you all about what new of him is awesome but it works amazingly in a setup like this so one Quirk of this setup is port forwarding so here I have a v project where I've brought up the front end um and it's running on Local Host but obviously if I go to my browser and type Local Host that's not going to work cuz it's not actually running on my machine but what will work through the magic of tail scale is hitting it by the host name so if you just do Romulus 2001 which is the name of my server that works so you can open up your browser and instead of going to Local Host 2001 you go to your server name 3001 for the most part this will be a fine solution but there are some cases where things really want to be running on Local Host I ran into an issue recently where it turns out that in the browser all the crypto apis like crypto even that the one that generates uu IDs they only expose it on https or Local Host so that's pretty annoying cuz then my app just wasn't working when I was accessing it by the server name because it was saying you know the crypto apis were not defined um so I do another trick here that forwards certain ports to my local machine so if we go back to my desktop and we look at my SSH config we can see that I have some extra settings here so on what I'm saying here is whenever I SSH into my server automatically forward these ports so these are ports that you know a few things benefit from actually being forwarded to Local Host uh this log level quiet is pretty useful otherwise it's going to complain when nothing's running on that Port um so when I have a s session open it'll automatically forward these ports so if I go and access you know something on Local Host 31 it will actually get forwarded through the server and it'll act like everything is running on your machine so for anything that doesn't work you can always just go into sh config and configure this stuff here so the last thing I want to talk about is what if something goes wrong what if you're in a situation where you lost internet you can't reach your server there's something wrong with your server and you still want to be able to work uh so I do have something set up to make this a little bit easier so pretty much everything that I care about is located in this Dev fold folder if we look in here it's my notes all my projects all of my code just everything in my entirety of what I care about on my server is in this Dev folder I use a tool called sync thing to keep this folder in sync across all my devices so you can see I'm looking at the my server dashboard of sync thing it's connected to my desktop and my laptop and this third device which I'm not going to talk about now maybe another video I'll tell you what this defiant device is all about um but it B basally creates a backup system across all my devices and it's peer-to-peer right so if I update a file here and then my desktop syncs it first it's a big file the third device can sync half of it from one half from another um it's really cool it's like creating your own little Dropbox own little kind of cloud file storage uh and what's nice about this is all my files are at the end of the day sync to my end devices so if I lose internet and I can't access to my access my server I can always drop down and go back to working locally editing my files locally it's all there and it's there's not really going to be anything that is missing because I make sure everything I do is in this Dev folder it's nice to have that piece of mind like if I go on an airplane I can't really use my server it's a little bit too laggy so I will drop down to accessing my files locally so this serves as a really nice fail safe and that is pretty much it so I will put links in the description to everything that I'm using here so you can go check check it out yourself it does take a little bit of work to set it up but once you have it going man it is a really nice setup I've been doing this for about 2 years now there's no chance I'm going back I absolutely love it uh I've been through a few server upgrades as well in that time and it's been as seamless as I expected uh so I'm a huge fan if you see anything I'm doing that you think I could actually be doing better I know some of you are Pros with this stuff uh if I can simplify anything if I could add something in that would help me happy leave a comment I'm happy to try it out um otherwise hopefully this answers all of your questions about why I do this how I do it uh maybe you'll try it yourself too so let me know if you do otherwise have a good rest of your day
Video description
ReliableSite (dedicated server): https://www.reliablesite.net/?utm_source=dax&utm_medium=referral vps providers: https://www.google.com/search?q=9950x+vps+miami cockpit (vm manager): https://cockpit-project.org/ tailscale: https://www.tailscale.com/ dotfiles: https://github.com/thdxr/environment tmux: https://github.com/tmux/tmux/wiki neovim: https://neovim.io/ syncthing: https://syncthing.net/ 00:00 intro 00:37 why? 03:28 find a server 05:20 tailscale 06:02 firewall 06:52 cockpit 7:56 dotfiles 9:32 tmux 10:45 neovim 11:14 port forwarding 13:09 syncthing 14:52 outro