I’m having trouble finding a proper starting point for self hosting, so I am curious on any resources you’d recommend, or even some build lists / pre-built devices.

What I want to do:

Important

  1. Host some applications like TinyTinyRSS, Jellyfin, GitLab, and Nextcloud which I’d want to be accessible in my home network
  2. Use the computer as a NAS to back data up and have it easily accessible on my desktop and laptop
  3. Have a piHole

Optional

  1. Access my hosted applications from outside of my network
  2. Use tools like Radarr to automatically download things from torrent lists
  3. Use it as a seedbox

The reason the last three are optional is because for that I’d have to expose the computer to the outside network, which has a whole bunch of benefits, but also a whole bunch of risks I am likely neither capable of nor comfortable with working around, so unless there’s an easy fix (number 3 might be able to be handled via a VPN?) they’re a problem for future me. For anything further I think I can just go from here once those requirements develop

I have already skimmed through some articles, watched some build guides for both NAS and home servers and honestly I just don’t know what I need, both in information, hardware, and software.

  • Should I separate the NAS and Home Server, get a separate device for the piHole, or just have all three in one?
  • What hardware would be suitable for this?
  • Should I buy something off the shelf like a mini PC (for instance an Intel NUC) or one of these fancy prebuilt NAS devices where you just need to plug in some drives or build my own?
  • Would it be smarter to go with a Linux distro as the OS, for instance Debian, or should I use something like Unraid or TrueNAS which from what I can gather make setup more convenient and even handle docker images for you?

I am somewhat comfortable with Linux and the command line and have a budget of about 1000€, but if I can get away with less that would be great, and I can also stretch higher if needed for my requirements. I am also very new to self hosting and my networking knowledge is not non-existent, but limited.

I’m just a bit lost and would love some beginner-oriented resources or direct advice, thank you!

  • @pe1uca@lemmy.pe1uca.dev
    link
    fedilink
    English
    77 months ago

    I can share you a bit my journey and setups so maybe you can take a better decision.

    About point 1:

    In vultr with the second smallest shared CPU (1vCPU, 2GB RAM) several of my services have been running fine for years now:
    invidious, squid proxy, TODO app (vikunja), bookmarks (grimoire), key-value storage (kinto), git forge (forgejo) with CI/CD (forgejo actions), freshrss, archival (archive-box), GPS tracker (traccar), notes (trilium), authentication (authelia), monitoring (munin).
    The thing is since I’m the only one using them usually only one or two services receive considerable usage, and I’m kind of patient so if something takes 1 minute instead of 10 seconds I’m fine with it. This is rare to happen, maybe only forgejo actions or the archival.

    In my main pc I was hosting some stuff too: immich, jellyfin, syncthing, and duplicati.

    Just recently bought this minipc https://aoostar.com/products/aoostar-r7-2-bay-nas-amd-ryzen-7-5700u-mini-pc8c-16t-up-to-4-3ghz-with-w11-pro-ddr4-16gb-ram-512gb-nvme-ssd
    (Although I bought it from amazon so I didn’t had to handle the import.)

    Haven’t moved anything off of the VPS, but I think this will be enough for a lot of stuff I have because of the specs of the VPS.
    The ones I’ve moved are the ones from my main PC.
    Transcoding for jellyfin is not an issue since I already preprocessed my library to the formats my devices accept, so only immich could cause issues when uploading my photos.

    Right now the VPS is around 0.3 CPU, 1.1/1.92GB RAM, 2.26/4.8GB swap.
    The minipc is around 2.0CPU (most likely because duplicati is running right now), 3/16GB RAM, no swap.

    There are several options for minipc even with potential to upgrade ram and storage like the one I bought.
    Here’s a spreadsheet I found with very good data on different options so you can easily compare them and find something that matches your needs https://docs.google.com/spreadsheets/d/1SWqLJ6tGmYHzqGaa4RZs54iw7C1uLcTU_rLTRHTOzaA/edit
    (Here’s the original post where I found it https://www.reddit.com/r/MiniPCs/comments/1afzkt5/2024_general_mini_pc_guide_usa/ )

    For storage I don’t have any comments since I’m still using a 512GB nvme and a 1TB external HDD, the minipc is basically my start setup for having a NAS which I plan to fill with drives when I find any in sale (I even bought it without ram and storage since I had spare ones).

    But I do have some huge files around, they are in https://www.idrive.com/s3-storage-e2/
    Using rclone I can easily have it mounted like any other drive and there’s no need to worry of being on the cloud since rclone has an encrypt option.
    Of course this is a temporary solution since it’s cheaper to buy a drive for the long term (I also use it for my backups tho)

    About point 2:

    If you go the route of using only linux sshfs is very easy to use, I can easily connect from the files app or mount it via fstab. And for permissions you can easily manage everything with a new user and ACLs.

    If you need to access it from windows I think your best bet will be to use samba, I think there are several services for this, I was using OpenMediaVault since it was the only one compatible with ARM when I was using a raspberry pi, but when you install it it takes over all your net interfaces and disables wifi, so you have to connect via ethernet to re-enable it.

    About point 3:

    In the VPS I also had pihole and searxng, but I had to move those to a separate instance since if I had something eating up the resources browsing internet was a pain hehe.

    Probably my most critical services will remain in the VPS (like pihole, searxng, authelia, squid proxy, GPS tracker) since I don’t have to worry about my power or internet going down or something that might prevent me from fixing stuff or from my minipc being overloaded with tasks that browsing the internet comes to a crawl (specially since I also ran stuff like whispercpp and llamacpp which basically makes the CPU unusable for a bit :P ).

    About point 4:

    To access everything I use tailscale and I was able to close all my ports while still being able to easily access everything in my main or mini pc without changing anything in my router.

    If you need to give access to someone I’d advice for you to share your pihole node and the machine running the service.
    And in their account a split DNS can be setup to only let them handle your domains by your pihole, everything else can still be with their own DNS.

    If this is not possible and you need your service open on the internet I’d suggest having a VPS with a reverse proxy running tailscale so it can communicate with your service when it receive the requests while still not opening your lan to the internet.
    Another option is tailscale funnel, but I think you’re bound to the domain they give you. I haven’t tried it so you’d need to confirm.