Inspired by “What’s a good piece of hardware to run a jellyfin server?” I wanted to get the communities thoughts on how to set up my home media server.

Current hardware: Apple Mac mini “Core i7” 2.3 (Late 2012) with 8GB RAM (2x4GB) and 1.0TB Mercury Electra 6G SSD that I upgraded

OS: OMV6 (6.9.14-1 (Shaitan))

Docker containers:

Goal:

  • Use this old Mac Mini for as long as possible as a media server. Be able to download with Transmission over VPN and then add them to a Plex media folder via SMB on my Mac Studio. I want to manage the containers in Portainer and I’ve used Stacks/Compose to add most of the containers. Use the discrete GPU for hardware accelerated transcoding, mostly so I can download movies to my iPad quicker, less so other people can use it remotely. The containers should restart if they stop and I want to keep them updated automatically if possible. I’ve not experimented with Servarr yet (Radarr, Sonarr), not opposed, but also happy to drag them over.

Problems:

  • I don’t love OMV, I seem to have a recurring DNS issue with containerd that causes Plex to stop whenever I’m watching a movie. I can run a test and leave something playing all day and not have a problem, then whenever I want to watch something with my wife, the whole system becomes unavailable and I have to watch a ping until it comes back. I’m considering a new OS, it should be accessible via VNC/SSH and have my internal and external drive shared as a SMB share to my Mac. I can’t figure out how to get the GPU to be seen by OMV so everything is on the CPU, an OS where this is easier is preferred.

Questions:

  • Any OS recommendations to use instead of OMV6?
  • Advice on getting the discrete GPU seen in whatever OS I use?
  • I can’t tell if it’s Haugene causing the DNS issue, I’m using public Google/CloudFlare DNS to avoid using my PiHole that runs on a Pi3b. Can I set up Docker to use a different network so it doesn’t bring my whole system’s IP down? It might also be Watchtower updating a container and bring it down, any advice to troubleshoot would be appreciated.

Disclaimer:

  • IT guy, but mostly Mac. I can Google my way through most things, but I am NOT a Linux or Docker expert. So please go easy on me if I have any follow up questions!

Thank you in advance!

  • CurbsTickle@lemmy.world
    link
    fedilink
    English
    arrow-up
    12
    ·
    edit-2
    3 months ago
    • If you want a dead stable OS to install things on, then Debian. I’d recommend checking out proxmox though. Separating services into VMs can really help make managing them easier, and you easily avoid conflicts that can cause fun issues.
    • The 2012 Mac mini didn’t have a discrete GPU iirc, just the built in HD 4000. What GPU is in there?
    • Docker can use multiple networks, but the issue is - you shouldn’t be using Google DNS. You should be using your VPN providers DNS.
    • In terms of troubleshooting, watchtower should be easily ruled out. Have it check for updates once a day at a specific time (overnight when it won’t be used). Not happening during watching anymore. For checking the processes running, top/htop is the easiest way to see what’s using up resources.

    Edit: Just to mention, you can get your hands on a cheap tiny/mini/micro with a more powerful iGPU for cheap (like $100-$200) which may save you quite a few headaches.

    https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video

    Take a look at the hardware encoding/decoding sections for details on what can be handled, and some examples and testing at https://forums.serverbuilds.net/t/guide-hardware-transcoding-the-jdm-way-quicksync-and-nvenc/1408/3

    For what it’s worth, my media servers (Plex side by side with multiple Jellyfin instances, long story, and Plex may fully disappear soon) run on an 8th gen i5 I got for about $150.

    • abhibeckert@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      edit-2
      3 months ago

      The 2012 Mac mini didn’t have a discrete GPU iirc, just the built in HD 4000

      I just looked it up - your memory is correct. Only the 2011 models had a discrete GPU (and only on certain models).

      But the HD 4000 is still a GPU and it will be faster than the CPU at certain tasks such as video processing in Plex (I’m guessing that’s what OP cares about?)

      • CurbsTickle@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        3 months ago

        For transcoding it’s pretty limited, basically h264 only. But there is nothing to ‘expose’ as OP asked, it’s well supported by every Linux distribution.

    • robalees@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      3 months ago

      You are right, no discrete, I was confusing it with an older MBP (“Core i7” 2.8 15" Early 2013) I have. I might have a look at Proxmox, I like the idea of being able to segment the networks a little easier in a VM. I might need to go back to the Haugene documentation, I think they suggest public DNS, but I can try IVPNs DNS. Honestly does it make more sense to buy a NAS (Synology) and run Docker/Plex off that? If I drop the $ on some nice drives and RAM, would that be easier to manage and perform better? I’d like to not worry with 4K content on my home Apple TV and be able to have some people remotely connect if they wanted. Also tempted to use the Mac Mini for VPN/Transmission, then setup a cron rsync to my Mac Studio and use that for Plex.

      • CurbsTickle@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        3 months ago

        Use your VPNs DNS, and make sure to test that the IP seen publicly is your VPNs. There are a bunch of simple torrent tests out there for that.

        No need to set up cron/rsync if you use the *arrs. They will handle fetching, renaming, upgrading, moving, etc.

        Related to those two above, and the Proxmox recommendation, here is what I do:

        • Set up an LXC (another type of container, lightweight but with a closer to VM in use - really useful) and make it run all your docker containers.
        • Instead of a container that combines the torrent client and VPN, have a distinct VPN container that other containers can connect to. You can also have it set up where if the VPN connection goes down, it stops working - this is safer.
        • Your torrent client will connect to that VPN container for network access.
        • Prowlarr (connects to all of your indexers) can then be set to use that network to search for torrents as well.
        • Sonarr, Radarr, etc don’t need to connect to that VPN container, since Prowlarr is what they would be querying.

        Your Mac Studio would definitely be better for Plex unless you’re going to avoid transcoding entirely. If you are going to do direct stream only (and that means some subtitle types will be a problem btw), you can put Plex in a VM.

        Now a synology that can handle Plex and transcodes is an option, but in my opinion you’re better off with a 6th gen or higher Intel machine that’s cheap (preferably 10th for the latest capabilities, 8th for more transcoding options than 6, but 6th is good enough for most people). I have two synology NASs that could be used for Plex and an xpenology VM, and I don’t go that route because a $100-$200 business desktop (tiny/mini/micro) is more capable.

        With 4K content, id lean toward using a 10th gen chip, there are some options with quick sync iGPUs though in cheaper lineups from modern gens that do a great job though (beelink, s12pro specifically with the alder lake n100, though any with the n100 would be the same).

        This can seem like a TON of setup, but honestly once you get the handle on managing a few containers it is just so much easier than other options.

        • robalees@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          3 months ago

          This is incredibly helpful CurbsTickle!

          Sorry this is probably a super dumb DNS questions, should I be setting my OMV DNS to the IVPN DNS or just my Transmission/OVPN Docker stack? I tried using the OpenVPN DNS here and it doesn’t connect when set in the stack, OMV or both. I also have PiHole on a Pi (maybe I can move that to Proxmox and use 1 system?), which is why I was using the Google Public DNS in OMV and the Haugene stack which seemed to work, apart from the weird issue I’m seeing randomly.

          Honestly, I might scrap this configuration and put the time into getting Proxmox setup on this machine, try to get it in a good working order and then look at a tiny/mini/micro for later down the line. I’ve started watching more Anime and honestly the subtitle transcoding worries me a bit!

          Any personal preferences or suggestions on hardware outside of the beelink s12pro which I’m checking out? I’m also hoping to cannibalize the SSD which isn’t that old, the RAM might be useless at this point.

          Also any guides/tutorials you can suggest for getting a working Proxmox setup running similar to yours?

          • CurbsTickle@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            3 months ago

            Only your container with VPN connection and transmission would be using the VPN’s DNS

            With regards to the pihole, yeah I’d run that as a container on proxmox (there are some handy scripts by [tteck](https://tteck.github.io/Proxmox/, though I’m not generally a fan of running shell scripts off the net like this it is easy). But I wouldn’t get rid of the pi, I’d keep it as your secondary. Single point of failure means it will drive you nuts if you have to reboot the server, everything will be down.

            Outside of the beelink, it’s just the tiny/mini/micro options from Lenovo/HP/Dell, and then by generation of CPU. The beelink is a popular choice, but personally I like the power that an i5/i7 will give me, and I’ve got a couple of machines with 32GB and 64GB of ram - throwing 16GB at a VM I can access remotely for Windows apps is super useful, and I can otherwise live in my Linux desktop.

            I’d also say you don’t have to toss the 2012 Mac mini, you can grab some bits you want (SSD), but you can drop in a replacement and make it another proxmox host. Even run your second pihole there.

            In terms of guides, sorry don’t really have any on specifically my setup no. But there are ones out there to learn how to set up an LXC as a docker host, docker networking, guides to the *arrs being set up, etc.

            Such as this one for a VPN container, and docker-compose samples for having other containers use that network: https://www.naturalborncoder.com/linux/2021/02/19/making-a-docker-container-use-a-vpn/

            For a good start on how to set up (after the containers are running) sonarr/Radarr/etc, check out: https://trash-guides.info/

            And you can always ask questions in the various home server communities here (and elsewhere on the fediverse obviously).

            Good luck!

            • robalees@lemmy.worldOP
              link
              fedilink
              English
              arrow-up
              2
              ·
              3 months ago

              Hey CurbsTickle

              Thank you so much for the tips, with a mix of googling, bit of GPT4 and straight smashing my head against the desk, I’ve gotten Proxmox installed on the Mac Mini and ordered 16GB of RAM (figured it’s worth the $40). Fought a serious battle trying to get to the startup manager with my mechanical keyboard and Dell monitor, eventually got it to boot from the thumb drive and install. I’ve got an LXC setup with Debian 12 and installed Plex, even managed to get my existing Plex Media folder from my external drive mounted in the container!

              Next steps are the IVPN Wireguard killswitch VPN LXC and Transmission LXC, based on the quick reading I’ve done, it looks like iptables rules is the way to go. I’ll more than likely be writing a big post in selfhosted lemmy soon asking if anyone has achieved this already and has the steps. I might look at the *arrs but that is a later project, I am fine with searching, downloading and renaming/moving the files when I want to watch something. We don’t have regular shows we download right now.

              Final questions before I head into the deep dark world of home server communities.

              • Doing the Plex setup quickly, I gave it 1 core and 1GB of RAM, gonna guess this isn’t enough, if I’m doing Direct Play and transcode for subtitles, how much RAM and how many Cores would you throw at it with my system?
              • Can this be updated or do I need to create a whole new lxc container if I want to add more cores/ram to it?
              • For my HD 4000, is it of any use to me with Plex, or is it already being utilized due to it being integrated?
              • Can I setup a SMB share from the mounted disk in Proxmox? I created a mount point in Proxmox and then edited the containers config file so it mounted in the container.
              • Any final tips on MUST DO setup on the Proxmox side? Happy to nuke a container and recreate it if need be, but I’d like to make sure the Proxmox side of the house is in a good place from day 1!

              Thanks again

              • CurbsTickle@lemmy.world
                link
                fedilink
                English
                arrow-up
                2
                ·
                3 months ago

                iptables is a solid choice for the regular Linux side (or an LXC), if you use a docker container though, you can just use the docker network to restrict access - you can see a solid example of that here:

                https://tcpip.wtf/en/force-docker-containers-vpn-gluetun.htm

                Regarding your questions:

                • Good enough for direct play, and for SRT subtitles, but any image subtitles (pgs, vobsub) will transcode. If you can use GPU for transcoding, it won’t matter, it’ll come down to how much simultaneous use you’ve got more than anything. You can view how it’s running from the summary page of the VM/LXC, and adjust accordingly whenever. Just give it another core, shutdown, start back up, and you’ll have more cores applied - ready to test again. (One of the reasons I like proxmox).
                • You can update any time, just need to shutdown and start up again to apply hardware changes! The only thing you can’t change easily is privileged/unprivileged LXCs. For now don’t worry about that.
                • A privileged container can access the hardware on the host, but an unprivileged container can’t (without some extra shenanigans). I’d make it privileged for now, if you want to change later after you’ve gotten some experience you’ll be able to do so much more quickly. The HD4000 will do pretty well with h264 video, but won’t help with h265/hevc, so stick with h264 for anything with subtitles.
                • Sure can! You can actually mount it to the LXC from proxmox with a simple command:

                pct set XXX -mpX /host/dir,mp=/container/mount/point

                Where XXX is the container number, and mpX is the mount number. Mount Point 0 is the first (mp0), the next directory you mount is mp1, etc.

                • Check out tteck’s helper scripts for an idea on the things you can do. Personally I recommend making the LXCs yourself, but these scripts are good to use to get familiar with what you can do:

                https://tteck.github.io/Proxmox/

                • robalees@lemmy.worldOP
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  3 months ago

                  Thank you for answering my questions, I spent some time over the weekend performing testing. Sadly I suspect all my problems stem from my NIC failing. The loss of IP that I was seeing in OMV is still happening in Proxmox. Now trying to decide next steps, I can either keep throwing money at it and get an external Ethernet solution with compatible drivers or finally put this Mini to rest. I’ll probably make a post on the selfhosting community and see if anyone has any recommendations for hardware. Little peeved I bought the RAM and have this SSD with nowhere to make use of them. Maybe I can find a suitable machine that can use them, but I’m gonna guess they’ve aged out of the CPUs I’d need for better performance. But I am very happy with the Proxmox, LXC and Debian suggestions.

  • RedFox@infosec.pub
    link
    fedilink
    English
    arrow-up
    4
    ·
    3 months ago

    I’m going to be lame here, but I used to just install it as a package on my media computer. It was old school, but super stable and no complaints.

    I’m not familiar with that VPN solution, sorry.

    I also just created static DNS entry for the media server. Used app on phone. Didn’t have to fuss with it. I like Emby now, but used Plex for a while.

    For the media server OS, I use Rocky Linux. But it requires you can do Linux, instead of a simple install with gui.

    If that’s an Intel Mac, you could look at TrueNAS, but that’s got caveats you need to learn.

  • abhibeckert@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    3 months ago

    Since you’re a Mac person, I think you should put MacOS on it. iCloud. Time Machine. AirDrop. Bonjour (zeroconf networking). HomeKit. Etc etc. Those are totally worth having and they are all free except iCloud (which is the the best family photo storage/sync/backup platform and totally worth paying for in my opinion).

    For software that needs Linux or just runs better on Linux, use Docker. But you will probably need more RAM, because Docker on a Mac runs a Linux Virtual Machine. You’ll essentially be running MacOS and Linux side by side — I personally allocate half my RAM to Docker on my Mac… wether or not 4GB for each OS is enough obviously depends what software you run but it’s likely to be cutting it pretty tight).

    You can use OpenCore Legacy Patcher to run a modern version of MacOS on old hardware (Apple sets hardware support cut offs based on the minimum specs that hardware was sold in, and your Mac Mini has a faster CPU than the minimum, you’ve upgraded the storage, and you can upgrade the RAM).

    But the biggest reason to go with MacOS is you own a Mac Studio which is far better than your Mac Mini for all the same tasks. One day, you’re going to upgrade your main computer and downgrade the Mac Studio to all the tasks your Mac Mini was doing. And booting Linux on the Mac Studio isn’t likely to be a good option in the foreseeable future. Linux running inside Docker on a MacOS host though? That works wonderfully. Even with x86 software on an ARM Mac.

    I run x86 Linux on my Arm Mac in Docker by the way. It’s not as fast as ARM Linux software on the same hardware… but it is way faster than x86 software on 2012 x86 hardware. Which is to say, could be better but totally good enough.

  • robalees@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 months ago

    I should add, I’ve been paying monthly for Plex for years. Finally got the lifetime membership last year, although I don’t love Plex’s decisions, I feel financially obligated to keep using it for at least a few more years.

    • RedFox@infosec.pub
      link
      fedilink
      English
      arrow-up
      5
      ·
      3 months ago

      If you roll over to the self host community, hosting media servers is about all they talk about :)