I want to start using Linux but I am not sure how to get started. I just want to set it up a server for my mvies and such. Maybe I am starting too big. I don’t know. I use to think I was moderately good at computers but I feel left behind. Just looking fro advice on my first build.
Install a Linux Mint flavor. Mint is a rock solid platform that just works on 99% of the computers out there, and there is even a 32 bit if you are on a sllloooooow laptop like mine. The best way to learn Linux is to use it. You, more than likely, have been using Windows all your life, and while modern day Linux has some of the same looks to it: Icons, taskbar, et al, it’s quite different under the hood than what you are used to.
If you foresee setting up a server, then you are going to have to learn how to set up your server, secure your server, monitor your server, and all these things take experience. Experience takes time. Servers take a lot of administering and securing. There are thousands of bots just waiting around the periphery of your server, salivating, at the prospect of a fresh meat starting up. So you’ll have to learn how to keep the good stuff in, and the bad stuff out. Just keeping the bad stuff out is a constant vigil. These modern bots are very capable and can do cve vulnerability scans, scan attack surfaces, any little crack in the armor to get a foot hold in.
So, after you learn your way around a Linux desktop, then need to study up on how to set up and secure a server. What software to put in place to do security, using no root login, ssh keys, a long list. If you get stuck on something or just want to bounce some ideas off of someone, I’m no guru but I’m willing to share what knowledge I have with you.
What I always tell junior devs that want to get familiar:
- Find a use-case. Don’t just use it because you have FOMO
- Run a desktop environment as your daily driver when you can. You’ll learn a lot.
- Try installing packages first, and after you’re comfortable with that, try building a project you intend to use from scratch. It’s a get primer, and gives a ton of context of how software development works along with the dependency chains with the operating environment.
- Don’t take a GUI as the “easy route” in spite of non-GUI sokutions. Get familiar with what makes the software run, and customize accordingly.
I think you’re starting too big, to use your phrase.
Get used to the basics first: what’s different (to whatever you’re running now), what’s the same. They Linux distributions almost all have GUIs (KDE, GNOME are the main ones but there are many others).
Run a live USB version from a usb stick to get used to it until you have the confidence to install it on an old pc. Personally I do not recommend dual booting; data gets lost that way. Install it on an old pc and learn how to restore your backups to a Linux filesystem (not the fs of what you’re used to on Linux platform). I write that because you said that want to end up with a Linux server.
Choose one of the top few from distrowatch.com/
Your aim is to understand what’s going on under neither the GUI; how permissions work.
I started by installing a VoIP product into a VM on Windows 2000, but there are better ways now.
Good luck. You shouldn’t find it that difficult.
Installing Linux is super easy. Just set up a boot USB stick, then boot to it and follow the instructions. Make sure there’s no data on the computer you need, cause you’ll be reformatting the drive.
Then start by learning Docker and Docker Compose. Watch some YouTube tutorials. Docker will make everything easier for you. Docker Compose is like magic.
You should also learn how to use your firewall. UFW is easy to set up and use, but whatever comes on your OS natively, if it has one, should be fine.
If you want to set up a RAID, use something that is self-healing, like btrfs.
The more comfortable you get with the terminal, the better time you’ll have. Learn all the little programs, like ls, cat, grep, nano, tar, ps, df, du, dd, find, etc. Learn how to read Man Pages because they will help you a lot.
Don’t be afraid to try things out. If you’re worried you’ll hurt something on your real server, try it out in a virtual machine.
Compartmentalize everything with Docker. The only server running on your bare metal should be your SSH server, and maybe an administration service like Cockpit. Everything else can be reverse proxied with something like NPM (Nginx Proxy Manager). And of course, run that in Docker Compose too. That would listen on ports 80 and 443, and everything else would get its own port that only NPM connects to.
As for the OS, I’d recommend Fedora, but really any of the big distros should work fine for you. The nice thing about Docker is that you don’t need to worry about the environment for your services. It runs almost everything virtually, so as long as Docker runs on your OS, everything should run fine (given there’s an image for whatever architecture you’re running, X86 or ARM).
If you want a domain name, you can set up something like Cloudflare with ddclient to point to your IP address even if it changes. You can read more about Dynamic DNS to learn how to set it up with whatever registrar you have if you’ve already got a domain name. You don’t need ddclient if you’ve got a static IP from your ISP.
Then for encryption, you can set up Let’s Encrypt certificates. They can be set up and renewed automatically with Nginx Proxy Manager.
If you’re not yet familiar with it, learn how to set up a reserved IP address on your router for your server. That way DHCP will always give it the same IP address. Then you can forward ports to your server so you can access it from outside. I’d recommend against forwarding your SSH port, and instead use an OpenVPN server (there’s a Docker image for it) to connect to your internal network remotely.
If everything is behind NPM, you can use different subdomains for your different services. You use a wildcard SSL certificate, and assign each host to whatever port you configured your service to in its Docker Compose file. So, you might have an Immich server listening on port 8100, and a Jellyfin server listening on port 8101. Then, you can set up reverse proxy hosts in NPM for immich.yourdomain.com pointing to http://localhost:8100/ and jellyfin.yourdomain.com pointing to http://localhost:8101/.
I hope that helps. Good luck and have fun! :)
Go with Raspberry Pi and install a distro called DietPi (it’s based on Debian).
You can run a whole bunch of useful service (Pi-hole, NAS, Media server and much more) on your local network.
It’s aimed at headless usage, so you get a chance to learn about Linux commands and OS structure. That being said Diet-Pi has a whole suite of easy to use command line “applets” to configure everything.
They also have an active forum and I’ve even been able to submit some (minor) UX improvements.
If you want to set up a “movies and stuff” server, if you have them as digital files (rather than on disks) then you can try setting up JellyFin as your media server on any Linux distribution of choice.
Try playing around with it on a machine and disk that you won’t mind screwing up and losing everything on. Not because you’re bad at it, it’s how you learn, everyone makes mistakes.
I use to think I was moderately good at computers
That doesn’t say a lot. It all depends what you already can do with a computer. Setting up a server is already somewhat technical stuff. Using a computer to browse the web and click stuff, is not—heck, even I use Linux and I’m no expert ;)
Just looking fro advice on my first build.
As a true beginner, imho you need a beginner-friendly distro aka one that will do most of the work for you. I use Mint and I like it a lot but there are plenty choices available (and I don’t run my own server neither). So, take some time to find one you would like to use. Also, if you only want to create a server (not use it as your personal computer) you should focus on a distribution for servers, not your usual end-user one. I mean, any distribution can be used to setup a server (they all have access to the same tools) but some are more focused on general users (like Mint) while other are more on technical users like people that will admin a server.
So, my first advice would be to tell you to decide what exactly it is you want to do with that Linux computer. From that you will then be able to pick a good distro and then start reading teh docs as needed. And that reading will also depends your skills level. Something like Arch (a great distro) has an amazing Wiki, like it’s really excellent. But it’s also very technical and not that beginner-friendly. Then, there are things like https://linuxjourney.com/ that are so cool for beginning but won’t be as complete ;)
I would not try to setup a server if I had not started using Linux already to get some familiarity with the system and its basics. For that you can pick any distro you like. Once again, I would suggest Mint out of personal preferences but I should probably say that before that I was a very happy Arch user too (I just realized I preferred to get less frequent updates)… There is not one best distro everyone would agree upon but there are various ones that are better suited to whatever type of user one may be.
Find an old laptop. Install TrueNAS community edition. Read about containerized server apps. There are alternatives like Mint if you still want to have and learn a desktop experience. Read online blogs. Ask here if any further questions arise. Avoid dual booting until you are comfortable with installing an OS and handling grub.