Greetings, so I final got wife permission to buy a pi zero 2 and a beeline 12s pro (n100) arriving tomorrow. I already have a nas drive for my media.
Question is what is the average setup and guides for this?
Of course I will be scouring this and other communities for info but the immediate items I want to fix are my plex/jellyfin server, setup RetroArch or equivalent gaming, then of course arr servers. But I would like to also get into reverse proxy and searxng, next cloud and pihole.
Any tips on how to make this beautiful?
OS recommendations? I currently run manjaro on my daily, but would think a kubuntu or kde fedora/debian spin might be better for these items.
Guides you can point me to? Suggestions for more or better options? There are plenty of answers in this community and I will look at what’s posted but any assistance is appreciated.
Thank you in advance.
I’m excited to start plying with the simple things
I recommend going with Debian (without desktop) and Docker compose. You can use something like Dockage to make it easier.
Use OMV as a GUI crutch in the beginning. And once comfortable, switch to docke compose
I wouldn’t as the Open media Vault GUI isn’t great and a bit unintuitive.
Docker compose has a learning curve but it isn’t bad since it is very well documented. If I was looking for a GUI I would honestly go with Cockpit + Podman
Out of recommendations given here I’d ignore Arch/Manjaro, for a server you want something that you can set up and forget about and not explode when you try to update the packages after not doing so for 3 months.
Kubernetes and the likes are a bit of an overkill unless you’re planning to expand to having multiple machines or want a learning experience.
I’d recommend docker compose or podman, you generally don’t want bare bones docker as running your containers viadocker run
sucks ass.Kubernetes is only useful if you want to learn Kubernetes. It is way overused in the enterprise an likely will be the source of failure.
IMHO Arch is actually a great choice. They do have a minimum update frequency you need to maintain (I don’t recall exactly, I think it is somewhere between 1 and 3 months) but if you do, and read the news before updates (and you are usually fine if you don’t, usually the update will just refuse to run until you intervene) things are pretty seamless. I had many arch machines running for >5 years with no issues and no reason to expect that it would change. This is many major version updates for other distros which are often not as seamless.
That being said I am on NixOS now which takes this to the next level, I am running nixos-unstable but thanks to the way NixOS is structured I don’t need to worry about any legacy cruft accumulating from the many years of updates.
And after all of that I don’t think it really matters. I think any major distro you pick, weather stable, release-based or LTS will be fine. They all have some sort of update path these days. (unlike in the past where some distros just recommended a re-install for major updates).
I can update Debian after 4 months and it wont implode. I could even do it without a backup.
And i’d hate to be basically required to read 20 update news for 20 other packages scouring for the one important update info that could break my setup.I think it’s probably down to preference. I personally really like Fedora server because it comes pre-installed with the Cockpit webui which replaces the role of Portainer and makes other admin tasks like firewall openings and user management trivial. I’m definetly glad to have switched away from Ubuntu server which I was using before.
I went with Debian and I use Docker for containers. I considered Proxmox, but I didn’t end up trying it. PiHole is a good application for the Pi Zero (I have an early generation Pi dedicated to running PiHole), but you could also run it on the Beelink.
I strongly recommend you download Obsidian and keep hyperlinked notes on everything you do and links to every tutorial/resource you end up using.
Have a place to keep all the passwords your services will end up needing. A password manager is the best option. Make the password on your admin account on Debian (or whatever) easy to remember and enter, since you’ll need to sudo a lot.
If the Beelink comes with a copy of Windows installed, you can recover the key from within Linux with the following command:
sudo strings /sys/firmware/acpi/tables/MSDM
Then you have a spare Windows key should you ever need one.With how easy it is to Massgrave to get a valid Windows key, I personally don’t even consider backing up windows keys lol.
Not sure if many people do what I do, but instead of taking notes I make commented functions in bash. My philosophy is: If I can’t automate it; I don’t understand it. After a while you build enough automation to build your workstations, your servers, all of your vms and containers, your workflows, etc, and can automate duplicating / redeploying them whenever required. One tarball and like 6 commands and I can build my entire home + homelab.
Can you elaborate on this a little more, sounds interesting and reinforcing?!
Sure. I have an r630 that is configured as an NFS server and a docker host called vacuum. There is a script called install_vacuum.sh that with a single command, can build the server to my spec from a base install of Ubuntu 24.04. it has functions to install base packages from repositories, add new repositories, set up users, create config files for NFS, smb, fstab, crontab, etc… once an NFS server exists on my network, any other server could be my docker host. My docker host is set up from a script install_containers.sh. as with before, it does all the things to get me a basic docker host, firewalled, and configured for persistence via my NFS server. It also has functions to create and start docker containers for all of my workflows (Plex, webserver, CA, etc), and if those containers don’t exist, it will build a docker image for said workflow based on a standardized format (you guessed it) bash build script for the containers. There is automation via cron on whatever host runs docker to build and update the containers once a week, bare-metal servers update themselves nightly, rebooting when necessary via unattended-upgrades.
Basically, you break everything down into the simplest function possible, have everything defined via variables in shared configurations that everything sources before running, and you have higher and higher level functions call other functions until you have a single function that cascades into a functioning system. Does that make sense?
I want to be here. Jealous
Have you started collecting your notes into scripts?
That too for keeping notes is gold. I’ve had the lack of them bite me in the ass as recently as 3 days ago.
Thanks for the suggestion on the note app.
Not to mention the windows key deal. Awesome
Greetings, so I final got wife permission to buy a
Is it wife’s permission ?
Wife is an adjective, keep up.
Op I was you 12 months ago. +1 installing proxmox. The ability to make mistakes in an LXCs and always having the nightly back up right there was worth it alone. Helper scripts get you close to where you want to go fast. As for guides, there’s a bunch, raid owl, technotim both have initial proxmox setup guides. There are many like them, just two I remember.
It might just be me, I struggled with every step of every guide I followed, mostly because I skip to copy paste the commands… Don’t do that. Chatgpt, plug the command in there and start quizzing it: “what does this do, what are the flags doing, I want to do x will command work”. Then don’t copy chatgpt either, take its output back to the documentation and make sure it makes sense. Then take a snapshot. Then paste the thing. It at least forced me to slow down.
In the beginning I was about a month, just on a pi, getting a pihole and a servarr installed and configured. Then I nuked it and rebuilt in a couple weeks. Then I messed up again and rebuilt in a couple days. I dedicate 1hr to try fix what I broke using Chatgpt as mentor/rubber duck, if I can’t make progress on a fix in that time I load the snapshot. Troubleshooting is a great skill, however, everything you need gets installed at least once, so get good at installing things. Back ups need testing and you should be familiar with the process, get good at recovering from back ups. Chatgpt solves most of the problems surface level problems. You’ll get to a point when you get stuck chatgpt won’t be any help either, but let gpt get you there quickly.
I genuinely prefer Dockge to Portainer, learn Portainer. As a rule learn the industry standard then migrate. Tonnes of articles and resources for Portainer, almost everyone using Dockge can help you with Portainer, not the other way around. The only difference is when the non-industry standard is specifically made to solve problems you have with the IS, I went with nginx proxy manager over nginx for example. GUIs are nice and I can see things working, unlike pasting a massive config and hoping. Now I have huge compose.yaml stacks for docker that I used to install one by one in Portainer.
Security is hard. Outsource all you can. Your ISP firewall is perfectly serviceable don’t punch holes in it (for now). Tailscale is perfectly serviceable don’t try make your own tunnels (for now). One of my earliest posts was me installing a firewall on my pi, separate from the my router, and then going into a blind panic about punching holes in my firewall. Funny to look back on, my isp firewall is still completely intact, I picked a different path.
Each iteration add one layer of complexity and take easy wins for everything else. I set up pihole bare metal, messed up the unbound install, go again. I used docker starter to set up pihole+unbound, messed up [something]… go again… Prioritise “working” over “perfect”. You don’t know what perfect is anyway. I don’t know what perfect is, but just getting something working teaches me what would be better for next go around. If what you did is “wrong” it’s going to break sooner rather than later so you get to go again. If what you did works forever be happy and enjoy the thing you built.
Oh I forgot. No big updates right before bed, before a big event or when you’re out of the house. I once had an auto updater [watch tower] go off and delete my access to the internet [pihole] before downloading the new image, on my fiancée’s first day off, and while I was at work. I learned a lot about redundancy for essential infrastructure to Facebook that day, rightly so. If you can’t/won’t want to fix broken things right then, don’t be doing stuff that might break things.
I have no particular suggestions for the Pi, but for the x86 box I’d go headless Arch, install docker and go from there.
Also, I’d personally suggest switching to something that’s not Manjaro. Arch has an install script now which I really like, but there’s also distros like EndeavorOS that don’t have a history of letting thier SSL certs expire multiple times like Manjaro does…
I’ve recently been reading more about manjaro issues. I’ll prob use this time to choose a new daily driver as well, endeavor looks interesting thanks.
The Beeline is definitely powerful enough to run a hypervisor, so I would do that if I were you. Proxmox is a very good product and easy enough to use. Personally I use Harvester (with Rancher) but that might be a bit daunting if you’ve not used Kubernetes before.
I would recommend running Proxmox as your OS, spin up a few Debian virtual machines and run your services (Nextcloud, plex/jellyfin, …) with Docker containers. I would personally use Podman, as I think it’s the simpler one to use, but there might be more documentation online for Docker, I’m not sure. But do definitely use containers! You’ll thank yourself in 6 months.
For reverse proxy I would suggest using Traefik, especially is your using Docker/Podman. But there are other good solutions like Nginx Proxy Manager, which has the advantage of being very easy to use. But I do run Traefik on every Podman server I have or any Kubernetes cluster. That way I can just have a wildcard DNS entry for an IP and then every proxy route will just work, whitout having to touch the DNS further.
Also, just a general tip: look into how you can deploy everything using a GitOps flow. Whether that just be with Ansible or more specialized solutions (Kubernetes with ArgoCD or FluxCD is very well suited for this). Look into Terraform/OpenTofu. This last point is nowhere necessary, but if you ever (like me) get tired of forgetting how you setup your infrastructure (virtual machines, application deployments and configuration, etc) you’ll love GitOps.
Oh, but do definitely look into Ansible for configuring your servers. It will save you a lot of time in the long run.
You can use Ansible in place of OpenTufu.
Should you? Probably not but it is more fun that way.
Question is what is the average setup and guides for this?
I don’t think there is an “average” setup because everyone’s hardware and needs are different.
What are you trying to “fix” with Plex/Jellyifn?
Will you still be using it your existing hardware? If so, what are the specs?
OS all depends on what you’re doing; I would think for the beeline you’d run something without a GUI and utilize Docker or some sort of virtualization.
By average I mean, lots of folks have niche needs, while mine currently are generic, so I’m wondering what’s not necessarily the best but most common.
My plex/Emby server is currently on a qnap ts563 and does not handle transcoding well. Looking to improve that with the n100 and move away from emby to try jellyfin. I keep plex because it works and I share servers with friends, but I’m curious about jellyfin.
My daily driver is not going to be part of the new setup. It’s and older frankenbuilt pc with manjaro. If anyone has interesting ideas for the nas besides holding my media please do.
I think a docker system would be best but any suggestions that encompass all this would be great. If I’m being vague it’s because I’ve always just copy pasted and read guides. I’m not as knowledgeable as I’d like to be yet.
I’ll echo the rest of the comments and say Debian with docker. I use podman myself but the setup should be similar enough. I used the official Jellyfin guide from their wiki and got everything working in a day, including transcoding.
The most generic simple setup IMO is a Debian minimal install with Docker, and use Komodo if you want a webUI to manage Docker stacks.
If you share access with your media to anyone you’d consider even remotely non-technical, do not drop Jellyfin in their laps.
The clients aren’t nearly as good as plex, they’re not as universally supported as plex, and the whole thing just has the needs-another-year-or-two-of-polish vibes.
And before the pitchfork crowd shows up, I’m using Jellyfin exclusively, but I also don’t have people using it who can’t figure out why half the episodes in a tv season pick a different language, or why the subtitles are somtimes english, and sometimes german, or why some videos occasionally don’t have proper audio (l and r are swapped) and how to take care of all of those things.
I’d also agree your thought that docker is the right approach to go: you don’t need docker swarm, or kubernetes, or whatever other nonsense for your personal plex install, unless you want to learn those technologies.
Install a base debian via netinstall, install docker, install plex, done.
That sounds less like a JF problem and more like a your files are janky problem.
I don’t disagree, but if it’s a case where the janky file problem ONLY appears in Jellyfin but not Plex, then, well, jank or not, that’s still Jellyfin doing something weird.
No reason why Jellyfin would decide the French audio track should be played every 3rd episode, or that it should just pick a random subtitle track when Plex isn’t doing it on exactly the same files.
Unfortunately janky media files seem to be the rule.
They’re using Plex for friends and JF for themselves, if you read the comment you replied to.
The pi zero is good for small projects that don’t require a lot of compute, however I personally haven’t found it to be useful in a self-hosted context. Unless you really don’t care about performance, the low specs make it unsuitable for hosting most of the services you listed above
Ive ran “the perfect media server 2017” for ages… I’m doing a version of that now because it fits my use case… I’m not using snap raid.
The Perfect Media Server 2017 | LinuxServer.io https://www.linuxserver.io/blog/2017-06-24-the-perfect-media-server-2017
I’d also look at trash guides for the arr setups.
My setup is a n100 device for Plex and arrs on Debian 12 with mergerfs. The drives are in a qnap jbod box via thunderbolt / USBC.
Great share! Will be reading this momentarily, thank you.
It sounds like your goal is a headless server for running various services on? If that’s the case, I’d stick with a well supported, mainstem LTS distro. Rocky Linux (RHEL9) or Ubuntu Server is where I’d start.
Typical software stack for me is Cockpit (bare metal management), Nginx Proxy Manager, and Portainer CE.
If your system has a decent amount of memory, >32GB, ZFS in a raidz2 configuration for storage. Keep in mind that if you go the ZFS route that it’s memory hungry by design.
For backup software, I ended up going with Restic but there are plenty of good solutions out there. Just make sure that you have one.
Hopefully this gives you an idea where to start looking. Ultimately it comes down to a lot of research, realizing there are a lot of valid ways to go about this, and then choosing the one that makes the most sense to you.
I’m still reading guides but my initial thoughts on OS was Debian, but am reading one using proxmox. Anything I should be aware of with proxmox?
I will read up on cockpit, nginx and the rest. Thank you for the suggestions!
I don’t have that much memory on the beelink, specs are N-100 alder lake 16gb ddr4 500gb m.2
The N100 is a nice little chip for mini home servers. I run podman containers for all media stuff with no issues. You’re gonna have fun.
I use Arch derivatives for all my computers but my media server runs Ubuntu Server because it’s low maintenance. For storage I use a USB 2x HDD docking station (one of those where you just stick the HDD upright in it).