Why You Should Look into Playing Around with Linux and Having Your Own Server
--
Introduction
My last blog was an introduction to the journey I’m attempting to convey here. However, this one aims to answer why you may consider following along or using any of these blogs as a resource. I want to share all my original exciting findings that hooked me the first time through my journey. Again, I thought it was so worth it that this is my second time attempting to rebuild my Linux server and create something others can follow along with.
So, for anyone wondering why you may want to do this, let me explain the discoveries that kept my computer running Linux.
Programming Just Works on Linux
- Seamless Experience: Programming on Linux just works. Unlike Windows, where I encountered many issues, everything on Linux was straightforward. I don’t remember all the things that deterred me from programming on my gaming machines running Windows. Instead, I chose to do it on a MacBook because everything just worked.
- MacOS Similarity: People often say programming on macOS is better because beneath its operating system, it is very similar to Linux. So, when I switched to Linux, I just always ended up getting stuff to work.
SSH (Secure Shell)
- Versatility: While not unique to Linux, SSH became a significant part of my daily usage. I primarily use the VSCode server plugin that allows you to deploy a code server on your host upon connection. This allowed for a very seamless code editor interaction, and whenever I wanted to program something, all my gaming hardware resources were available for larger tasks. (Worth it if you’re trying to do little league data science or machine learning computations and your laptop resources aren’t enough.)
- Remote Access: Furthermore, to make SSH even more useful, you can set up a VPN on your network and have all your client devices pass all the traffic through the house network no matter where you are in the world. This allows you to basically be connected to your home network from anywhere, and if your rig is open to SSH on the same network, you can still develop or access what you need.
- Remote Programming: Nonetheless, if you have set up a VPN for your home network and enabled SSH on your home computer, you can access your computer from places like your university, programming your assignments on your computer at home, or accessing files. I hadn’t made my new home server useful yet (I didn’t know if it’s a server yet as I was still learning what it’s capable of), but I was looking for reasons to keep Ubuntu booted and having SSH set up to write all my programs was enough for a while.
- Terminal Commands: SSH also requires you to have a good grasp of Linux terminal commands. If you ever go down this route, learning how to navigate through a Linux terminal becomes second nature as you use the same commands very often.
Extra Hardware Resources
- Machine Learning and AI: As I mentioned before, if you’re someone who is getting into machine learning or possibly another subfield of computer science, you may need extra resources. This is a bit outlandish, as I discovered, but this was one of my first journeys I pursued. After learning about neural networks, taking linear algebra, and learning about PyTorch, I quickly began to set up Nvidia Cuda so I could multiply the large tensors I was generating on my CPU. You can go far in doing a fair amount of reinforcement learning or generational learning projects. However, on the other side of AI, trying to run large language models the size of GPT requires more computing power than is available to the consumer market (I think it would be a cool future for everyone to run their personal LLMs).
Data Privacy
- Control Over Data: The more computer science I delve into, the more I’ve realized my data is probably collected and everywhere. There are plenty of algorithms that have a hold of either the data I’ve stored or the data that I generate actively using a particular app. The more data something has a hold of me, the more uncomfortable I feel about remaining autonomous with more natural influences as opposed to what algorithms influence me to do. Data privacy is one of the larger benefits when it comes to running your own server, but truth be told, it might not be the most useful one. There is a good chance that companies are not permitted to abuse individuals’ data, and what is stored won’t be tampered with. However, I read that many people who were skeptical often went to self-hosting for such a reason.
Self-Hosting
- Cloud vs. Local: Your computer is really no different than the ones running the cloud. Well, the resources might look a bit different. Much of what’s in the cloud is built for multi-threading and uses processors that aren’t race cars like gaming machines but something that can compute more loads across different threads. Also, they likely don’t have very much GPU support unless requested. However, most of the apps that are being run today live in the cloud, and your client just connects to an instance of the application running in the cloud. Self-hosting is not all that different.
- Applications: Our new server provides grounds to run multiple useful applications that can be reached anywhere from the world but run locally at your home. To media servers, note apps, self-hosted blogs, video game server deployments, local project management apps, video editing servers, and so much more. All can run and be configured on your personal machine, eliminating the need to spend money on cloud services and keeping all your data to yourself.
Cost Considerations
- Hardware: You’re very much in control of your hardware resources, which may work against you if you don’t already have some. Many cloud services provide you with many options to tune your overall cost for hosting applications and storing the data that is either generated or stored from other streams. However, if you have hardware lying around and this is a journey you want to go down because you’re interested in learning, you likely already have hardware resources like storage readily available compared to what might cost you extra for deploying and maintaining a cloud service.
- Electricity: In this case, I’m not spending money on hardware. I don’t think this is even worth it if I didn’t already have hardware lying around. But since I’ve started this project, the only expenses I have to account for are how much electricity I’m pulling through the wall. It’s much better to use smaller form factor computers that require less electricity for servers as they will reduce the cost of leaving it running. I want to do a breakdown of what it costs to run the whole thing down the road so we have a better understanding. For now, my lackluster googling explains how I spend about $36 to $46 a year to keep it running with 60–100 watts I may end up pulling from the wall, depending on what tasks I want to run. I don’t think it’s accurate either, but I read about some ways to gauge your expenses.
- Domain Costs: Lastly, aside from hardware costs, electricity from the wall, and a worthy mention of your internet provider along with the bandwidth available to you, the last thing I spent money on was $11 for a domain that I have the rights to for a year. (The domain will help open your services to the world and for others to benefit from your new self-hosting server.)
Conclusion
Exploring Linux and setting up your own server can be a rewarding and educational experience. It opens up a world of possibilities for programming, utilizing extra hardware resources, ensuring data privacy, and self-hosting various applications. While there are costs associated with hardware, electricity, and internet, these can be managed efficiently, especially if you already have some hardware available. The knowledge and skills gained from this journey are invaluable and can lead to greater control over your computing environment, potentially saving money in the long run. Whether you’re a student, a budding data scientist, or simply someone interested in tech, diving into Linux and server management is well worth the effort. In the next blog, I will begin to introduce the project and get us prepared to install Linux. Thank you for reading along. Feel free to constructively critque anything said here so we can all gain a better understanind and learn something.