I’ve been interested in self-hosting for a while, but didn’t really know where to start. I’ve never messed with Linux before and wanted to jump ship from Windows since Microsoft decided to start putting ads everywhere. I came across this post [https://lemmy.world/post/6542543] which was exactly what I was looking for to start, and seemed like a straight-forward guide. I have two laptops, one I want to act as my media server with Docker and the other as my everyday device. Except I’ve been met with setback after setback from the start. I tried installing Ubuntu Server on the media server laptop but just could not get it up and running. I was suggested to try using a more beginner-friendly distro, so I went with Mint. I also liked the idea of a GUI I can mess around with.
Docker was a success, but then I got to the Adguard part and when I try the docker-compose.yml step, grub just hangs. Decided to skip that part and go onto Jackett. Nope, more errors. Tried Prowlarr, different errors.
I don’t want to give up on this because its something I really want to get going for my media, home automation, cameras, etc etc. But I feel like I’m flying blind here.
I have a lot of homework to do to learn Linux, but is there a different, beginner-friendly guide out there for me to follow for now?
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-~.
Edit: I appreciate everyone’s comments. Although I have no Linux experience, I know my way around Windows pretty well. I understand file systems and in one of my errors that was asked, I was getting a “No File or Directory exists” error. I edited the username to fit my what I have, but was still getting the error. I even created a new user named Prowlarr when attempting the Powlarr install to follow the steps word-for-word, no luck. It got frustrating so I gave up for the day.
I admit I do have a lot of learning to do, and I am really grateful some of you have provided start-points for my Linux journey. I’m also grateful for the “Self-hosting For Dummies” recommendations, like Yunohost and YAMS. I plan on looking over all of this info today to get a solution up for now and start my path down the Linux rabbithole. Its kinda exciting to start embarking on something like this.
Anyway, thanks to everyone who gave me great feedback!
Can you give some more details on the errors you’re seeing? Grub and docker-compose shouldn’t be anywhere near each other.
That’s confused me as well. It probably did a kernel update and then triggered update-grub.
There’s a series of Lemmy posts called the Linux upskill challenge that goes step by step through setting up and using Linux. I tried self hosting and jumping straight in too, and it sucked.
What worked for me:
- Start using open source versions of stuff, like switching from Chrome to Firefox, Office to Libre Office.
- Set up Virtual Box, and practice running server apps on Linux on virtual machines, until you’ve done a few Linux VMs and gotten used to the interfaces and commands.
- Dual boot a laptop or desktop, one by one getting your daily use apps working in Linux.
- Distro hop a bit. I never thought I’d land on Fedora, but here I am.
- Get used to running and configuring servers from the command line.
- Host some stuff with VMs and get used to the networking and bridging and stuff.
- Containers!
I’m still in the middle of 6+7. Not super comfy with Docker quite yet, but getting there. I really do love having my stuff self-hosted though. Well worth the effort.
To expand on this also. If you are just wanting something that works. You can always install docker on your windows PC and play around with it there before worrying about Linux and its intricacies. Or hell run something like pop_os or Linux mint as your main. And windows as your “server pc” and once it’s setup you rarely have to use the windows server pc it’ll just do its thing.
You mean I didn’t need to spend years and thousands of dollars learning Linux and servers? Oh man! Oh wait, I’m getting ads in Windows on the start menu. Yeah, I’m happy.
So a few comments…
- I’m not a fan of Ubuntu server, in part because their distribution of docker through snap can conflict with snap from the docker repo. My preference here is either Debian or Proxmox (debian + great virtualization setup). Mint is good, though I like LMDE (Debian edition) more, in part because I prefer Debian in general.
- You may want to check out dockge. You do need to have docker running for it, but it’s a simple setup, and it has a clean interface for docker compose. Good for getting used to it imo.
- grub has no part in docker, so it’s something else hanging.
- What are the exact errors when you enter “docker-compose up”?
- what is in your docker-compose for each of these?
YAMS.
Not perfect, but if you just want the ding dang thing to start so you can see what a working setup looks like, then bam. Use yams.
Do you have sample of what kind of errors you’re getting? are they docker related or service related? as in jackett can’t connect/reach sonarr for example?
I actually didnt know how to start the Jackett install from the guide I posted, so I just googled and tried following a guide. One of the first steps says
sudo mkdir /home/ubuntu/jackett_config
I get a “No such file or directory”. Makes sense, ubuntu isn’t this user’s name. So I change it to point to “/home/user/jackett_config” and get the same result.
This is what usually stops me from proceeding further.
If you try to spin up multiple services but get stuck on creating a directory, you’re moving too fast. I think you’ll need to start a bit slower and more structured.
Learn how to do basic tasks in the terminal and a bit about how linux works in general. There is a learning curve, but it will be fun! Then move on to docker and get one service up and running. Go on from there with everything you learned along the way and solve the other problems you’ll encounter - one at a time.
Change “user” to your actual user name.
Yeah, as someone else mentioned, this step is just for creating a folder. You probably need to get more intimate with the commands you’re running to understand the process better, but I would honestly take a step back and use something more streamlined for these things.
Someone mentioned Proxmox for these things. I would also mention TrueNAS Scale. Both of those make it so that the process of spinning up containers and VMs becomes a lot more streamlined and easy to follow. They also forego a UI on the equipment you’re using, opting for a web UI you’d access from another device instead. Make no mistake, this is a good thing. 99% of things you’ll be wanting to do anywhere will be through web UIs, so that’s where you’ll want to be. The 1% of the time where you’ll be seeing your laptop server’s screen (or an SSH terminal) will be the most painful 1% of your life, and it will be when you misconfigured something and the web UI becomes inaccessible (on that note, also make sure to at least configure SSH access on something so you understand how that works). I’ve had to do this plenty of times with my pfsense box, and as a relative noob to these things as well, having to use nano and vim for editing pfsense configs to revive my server…it’s fucking horrible (sorry vim enjoyers). The good news is, you learn the hard way, but you learn. Try not to have this happen to you, or you’ll be back here soon. Once you’ve had a lot more experience with your tinkering, this will seem less daunting and you’ll be more comfortable debugging directly on your laptop server screen.
TrueNAS Scale, as the name implies, is better suited for when you want to include NAS Capatbilities on your setup. Since you mention things meant for Plex/Jellyfin setups, I’d say you could start there.
However you do mention a laptop, so I’m imagining a very basic setup where you probably have limited space or a couple of USB drives or something. You could, instead, opt for Proxmox. You lose the specific capabilities of creating complex RAID setups that TrueNAS would give you, but it sounds like you wouldn’t be needing those anyways, as they better fit a setup where you have a bunch of disks connected through SATA or PCIe interfaces. Proxmox is a lot more specialized for containers and VMs so it’s probably a good tool to get acquainted with, and might be better suited for a setup where you have just the laptop and maybe a couple of drives to toy around with.
Whichever you choose, make sure to watch YouTube videos about it, read the docs, truly understand what’s going on with that tool first, as well as how to set it up correctly. This will introduce networking concepts to you in the process, as you’ll need to understand how to access the computer through the network with a browser, as well as with SSH. Make sure you don’t ignore networking knowledge. It might seem daunting, or skippable (why bother with local domain names when you can just use the IP and port number?), but a lot of networking concepts are actually rather simple to follow, take a moment on the first few tries but become very easy to reproduce afterwards, and it will make your life easier (yeah turns out, now there’s 20 services and you forgot what ports are for what service…if only you had dedicated time to telling the network that port 69420 was for radarr.localdomain and port 42069 was for sonarr.localdomain).
I’d check out Lawrence Systems on YouTube. They make videos covering networking configs with pfsense and the like, as well as TrueNAS configs, and maybe they’ve delved on Proxmox? Craft Computing, another YouTube channel, for sure teaches about Proxmox. There’s tons of video guides for *arr services, I haven’t looked for platform-specific configs, but I’m sure you can find both videos for Proxmox and TrueNAS Scale configs. Once you get your first one, most other *arr services are very similarly configured (though not all are, some are very quirky).
Another thing you’ll need to understand is how containers work, as well as how to map things from outside the containers into them. Containers are, well, contained, and mappings are how you expose parts of the container to the outside. You’ll probably be guided to map things such as your data and the service’s config files from outside the container to better organize and persist those things. Make sure you understand this concept, where things are on your setup, where they’re getting mapped to in the container, and what this means when it comes to modifying the container (hint: it means you can delete or upgrade the container and things still work exactly as you configured them once your container is back up).
Maybe a controversial advice, but I’d steer clear of the console unless it can’t be helped, since you honestly can do a lot from the UI for the vast majority of things you’ll need to do. If you DO need to use the console, however, I’d bother ChatGPT and documentation for whatever youre doing, to make sure you understand what every command you try does. Things like “sudo mkdir xyz” should be crystal clear to you. In the case of this failed command, for instance, you should be aware that mkdir doesn’t create entire paths, but rather only specific folders. If the preceding folder doesn’t exist, the command fails, so if /home doesn’t exist, nothing else will work. If /home/user doesn’t exist, you’re not going to be creating /jackett_config, and so on. Sudo is also a very powerful keyword, which means whatever follows it is an order from the big boss and must be obeyed. As such, absolutely make sure you understand any command that starts with “sudo”, as those are the ones that can easily set fire to your entire config. If you don’t understand what it’s doing, don’t run it.
While we are on the subject of folder structures, theres no shame in looking up videos and docs explaining the Unix file structure. If youre coming from windows, this is a veeeeery easily confusing bit, and understanding where you are is very helpful.
Hopefully some of my ramblings make sense to you. Hit me up, or hit the community up, if you need more specific guidance. Things can seem daunting at first, especially if you’re new to Unix, but I promise you it becomes easier as you build good foundational knowledge.
I found dockstarter to be helpful to get me going with docker. https://dockstarter.com
I think you should start with the basics of Linux instead of diving into the deep end 😉
You could try yunohost on the server side. (Not docker based and beginner friendly)
I’d recommend YunoHost, too. It’s pretty beginner friendly and you’ll probably get some positive results without learning all at once. I mean you have quite something on your plate if you’re learning Linux, Docker, Docker-Compose and maybe networking and Dev-Ops all at the same time.
I can resonate with feeling lost when first starting out with Linux. If you like learning from books, I can recommend the “Unix and Linux system adiministration handbook” by Evi Nemeth. It includes information and tips on all things Unix/Linux, including step by step tutorials on home to set up a media server etc.
Get used to Linux and keep persevering, you got this! :)
Without knowing anything about your specific setup I’d guess the issue is with docker not playing nice with your OS or vice versa. Can you execute the standard docker hello-world app? https://docker-handbook.farhan.dev/en/hello-world-in-docker/
If not then my money’s on this being an issue the OS. How did you install docker on mint, using sudo with a package install?
Fyi don’t feel bad - I installed docker on 3 different Linux distros last month and each had their quirks that I had to work my way through. Docker virtualization is some crafty kernel-level magic which can go wrong very fast if the environment is not just right.Docker installed great! Hello-World returns what it should. I reach problems whenever I try to do anything within Docker, like setting up AdGuard, Jackett, etc.
I’m a little lost on how a container would mess with your boot loader (GRUB). That aside, most of what you’re explaining to do with the containers. These are OS-agnostic. What do the container logs tell you?
I have a feeling you don’t quite understand what Docker is doing for you and how it works. I suggest looking for an intro to Docker and understand the basics around Docker volumes and networking in docker before trying to orchestrate a complex set of software in Docker.
Don’t give up! I was you about 6 years ago. I’m on my 3rd server setup now, and I’ve gone from where you are now, to being able to script my setup using Ansible and having those scripts versioned in Git, so I never have to worry about remembering how it’s all glued together.
As a beginner myself I would recommend you installing portainer (a gui for docker) and if you need compose files I have them for all of my services on my GitHub.
In general checkout LearnLinuxTV on YouTube. Lots of good guides.
Follow this series of guides and you’ll be golden https://www.smarthomebeginner.com/ultimate-docker-server-1-os-preparation/
THis looks like an excellent resource. Ty.
This is what I personally used to start this journey. Remember you don’t have to go all the way with Traefik and all if you don’t need to access things from outside home. If you do, do it with a VPN instead of a domain
Why not just ask for help with the issues you’re having?
A big differentiator in how you might want to tackle this depends on one question, are you planning on getting into Linux systems administration, like for work? Because if you actually really want low level Linux skills then that’s a whole slew of things you’ll need to learn from scratch. And it’s not just your Windows-only experience that’s holding you back, managing a server is different from managing your desktop.
But if you’re not really interested in working in IT or all you really want to learn how to self host, you’re probably better off with an appliance, like UnRAID. These OSs abstract away much of the low level stuff so you don’t have to worry about it. Not the best way to learn how Linux works really well, but the easiest way to manage your self hosted environment.