"Ultimate" guide for literal beginners
from Yesbutnotreally@lemmy.world to selfhosted@lemmy.world on 09 Jul 07:26
https://lemmy.world/post/49219258

Hey selfhosters.

I have a question about starting self hosting; I have run Jellyfin on an old MacBook for a bit and wanna dip more than a toe into the self host pool. Are there any guides out there you’d recommend for actual, complete beginners who knows nothing but wants to learn?

I’ve searched a lot but it feels like they’re pretty advanced for beginners. Is it just a really sharp learning curve to this, or am I not finding the good ones?

Edit: To clarify what level I’m really, truly at: I run the Jellyfin server on regular macOS and have an external 5TB drive connected via usb. That’s it.

#selfhosted

threaded - newest

lime@feddit.nu on 09 Jul 07:37 next collapse

well what do you want to do?

i found that using alpine linux made things a lot clearer. i’m not a newbie but i gut ovurwhelmed by comylicated setups, and alpine is as simple as can be. just scripts that start and stop services, and configuration in /etc/<service-name>. where it started getting complex was with exposing services to the internet.

Yesbutnotreally@lemmy.world on 09 Jul 07:42 collapse

I’m not looking to expose anything to the internet yet at least. From the little I researched, there seems to be a million things that can go wrong and very few that can go right.

What I’d ideally want is to be able to run a couple of simultaneous Jellyfin streams, backup photos (Immich/ente/etc) and possibly a “local cloud” like Nextcloud just to try it out without having to worry about any kind of hacking. If there are any good self hosted apps for like groceries and stuff, that would be pretty sweet too. They don’t have to sync immediately, just when someone is on the home network.

lime@feddit.nu on 09 Jul 07:55 next collapse

right, and what’s tripping you up? you’ve set up jellyfin, but other services are not cooperating?

Yesbutnotreally@lemmy.world on 09 Jul 21:05 collapse

I’m probably going to change hardware in a not-so-distant future, as the macbook is struggling with 2 simultaneous 1080p streams and is having a meltdown with 4K ones. I’m not using Docker, which seems to be a go-to as well.

From what I’ve gathered with the comments here, learning Linux is the first step.

mpramann@discuss.tchncs.de on 09 Jul 09:32 collapse

What will hell you in that journey: basic understanding of Linux cli (Debian is good choice), docker and docker compose (make sure you understand the concepts of images, containers, networks and volumes) and of one kind of web server (I’d recommend Caddy because it’s rather simple). After that you basically use the often officially provided docker compose files to setup common self hostable services.

irmadlad@lemmy.world on 09 Jul 15:24 collapse

I agree, basic understanding of Linux cli can be hell at times

slazer2au@lemmy.world on 09 Jul 07:47 next collapse

For an absolute beginner I would recommend Linux tutorials first so you can navigate the Linux cli.
After that watch some docker tutorials as a significant chunk of self hosting is done with docker or a kube variant but you won’t need to lean about kube yet.

LearnLinuxTV on YouTube has some great playlists for that.

Yesbutnotreally@lemmy.world on 09 Jul 21:32 collapse

Linux clearly is the way to go, I’ve seen. I’ve been in the Mac environment for the past 20 years so I think the very first thing to do is to install Linux on a VM. Question to that; I’ve seen Debian being mentioned a lot, is this “the best” to start with?

slazer2au@lemmy.world on 09 Jul 21:39 collapse

Debian is good to start with as one of its key tenants is stability. Which is what you want in any environment.

A lot of popular distros like Ubuntu and Mint are based on it.

Yesbutnotreally@lemmy.world on 09 Jul 21:48 next collapse

Yeah, okay, that makes a lot of sense. I asked in another comment as well. I read about “headless” servers, which from what I understood means no GUI. Would you recommend that, or use a GUI first and then move to headless when the actual server is in place?

poweruser@lemmy.sdf.org on 09 Jul 22:37 next collapse

I second the Debian recommendation, with one caveat: if ever you need to install software that is not maintained by Debian (I.e. it is installed using a command like make install instead of apt install) then you could run into significant problems.

Debian uses a system (called APT) to manage the logistics of all your apps and libraries. This is wonderful until you add a program using a different method that APT doesn’t know about. In that case you can “end up in dependency hell” where your system can no longer update or install new packages.

Advanced users can work around this limitation to install things safely, but for a user just starting out I suggest to only ever install packages that exist in the Debian repositories (that is, can be installed with APT or one of its various frontends). This can mean the programs are a little outdated or not available.

Debian has a document that explains this in greater detail, which I suggest every Debian user reads: Don’t Break Debian

Zos_Kia@jlai.lu on 09 Jul 23:16 collapse

I feel GUIs complicate everything. You need graphics drivers and a display server and a compositor and a window manager etc… it’s a pain and in the end you still have to open a console to type in commands for your actual self hosting. Not worth the effort in my opinion, and it’s better to bite the bullet and get used to the terminal and ssh early.

I recommend using something like tmux or screen, so you still have basic comforts like tabs and multi task. Once you get used to it you can configure it and add themes and plugins if you like. A modern tmux setup really feels like a desktop except everything is faster and it barely consumes any resources.

djdarren@piefed.social on 10 Jul 09:35 collapse

I started with Mint, then dipped into KDE Neon and Kubuntu, and these days I rock Debian on my server because I want absolutely nothing to fall over if possible. And that’s how it’s been for me. I SSH into it every couple of weeks to run updates, and that’s about it.

Debian is great. Boring, and great.

towerful@programming.dev on 09 Jul 08:02 next collapse

I’d start with learning some networking basics.
Subnets, default gateways, DNS, routes, VLANs.

Then get another computer to install proxmox on.
Learn VMs, SSH, firewalls, basically Linux. Probably VPNs as well.

Then set up a VM and play with docker & docker-compose.

And that’s most of the tooling to be able to self host anything. A VM with docker, set up the docker compose of what you want, boom: done.
Some projects are more of a “full of” kinda thing (like home assistant), which would be its own VM

kwarg@mander.xyz on 10 Jul 07:09 collapse

do you have any recommendation with regards to references to learn networking basics?

towerful@programming.dev on 10 Jul 09:12 collapse

I’ve given this a read.
homelabstarter.com/homelab-networking-basics/

Covers the basics, explains them well & technically, and points to “further learning”.

rimu@piefed.social on 09 Jul 07:58 next collapse

Self-hosting is a very individual journey - everyone wants different things and finds they own way to meet their own requirements. So there isn’t really one guide that covers everything.

Anyway, as a general road map:

  1. Create a Virtual Machine on your PC. Install Linux inside the VM.

  2. Play around in the VM to learn Linux basics. When you break the OS you can just wipe the VM and reinstall.

  3. In the VM, try some docker containers until you’re comfortable-ish with docker.

  4. Maybe try Yunohost in the VM. You might find Yunohost saves you a lot of time and hassle.

  5. Get hardware suitable for your goals.

  6. Install Linux, configure networking and docker containers on real hardware.

Yesbutnotreally@lemmy.world on 09 Jul 21:35 collapse

Quick question to the Linux inside the VM; I came across suggestions for a “headless” server, which, if I understood correctly, means no GUI. Is it better to get straight into that, or install a Linux with GUI and use the CLI from that?

rimu@piefed.social on 09 Jul 22:20 collapse

Good question.

A GUI will be easier to get into - you can use a gui file browser app to learn the layout of the file system, you can use a GUI text editor to change config files, that sort of thing. It’ll mean you can do a few basic things intuitively which will be less intimidating. So from a maintaining momentum and morale point of view it might be best to have a GUI initially even though you have to learn all the cli stuff eventually anyway and you’ll most likely be running a headless server on real hardware eventually.

Yesbutnotreally@lemmy.world on 09 Jul 23:26 collapse

Alright, thank you. This will be the first step. Debian in a VM, full GUI to learn all the basics.

Genuinely, I really appreciate the guidance here, I really want to learn to be as independent as possible tech wise and I’m really excited to get started with this.

irmadlad@lemmy.world on 09 Jul 10:26 next collapse

I’ve always recommended the Linux Upskill Challenge. It takes you step by step from the cli to scripting, incrementally. It’s also a good bookmark to reference in the future.

Artaca@lemdro.id on 09 Jul 10:59 next collapse

I started by running Jellyfin on my PC with so-so success. Next move was to get a raspberry pi to screw around with. That went kind of poorly (hosted a website that was quickly ransomwared, lessons learned). Ditched the pi and got some used PC parts on FBM to spin up an Unraid server. I’ve been using that for years now, with some upgrades here and there to hardware and storage. There are a couple YT channels with spectacular Unraid content for self hosting. Trash guides for the arr stack. Years later and I now handle multiple servers using either Unraid or Portainer.

As others have said, it’s a very personal journey. Best of luck, happy to try and answer questions you may have.

ohshit604@sh.itjust.works on 09 Jul 11:53 next collapse

If you manage to get Docker Compose installed on that Mac (I don’t know Dockers limitations with Macs) create a docker-compose.yaml file with the contents of;

services:

  jellyfin:

    image: jellyfin/jellyfin

    container_name: jellyfin

    # Optional - specify the uid and gid you would like Jellyfin to use instead of root

    user: uid:gid

    ports:

      - 8096:8096/tcp

      - 7359:7359/udp

    volumes:

      - /path/to/config:/config

      - /path/to/cache:/cache

      - type: bind

        source: /path/to/media

        target: /media

      - type: bind

        source: /path/to/media2

        target: /media2

        read_only: true

      # Optional - extra fonts to be used during transcoding with subtitle burn-in

      - type: bind

        source: /path/to/fonts

        target: /usr/local/share/fonts/custom

        read_only: true

    restart: 'unless-stopped'

    # Optional - alternative address used for autodiscovery

    environment:

      - JELLYFIN_PublishedServerUrl=http://example.com/

    # Optional - may be necessary for docker healthcheck to pass if running in host network mode

    extra_hosts:

      - 'host.docker.internal:host-gateway'

Edit the volumes so that the drive you want to use is exposed to the container and then run;

sudo docker compose up -d

In a shell while in the folder with the docker-compose.yaml file you just created. If everything works then the server should be running on port :8086 open your browser and make an http:// request to the ip of the server followed by the port.

Example; 127.0.0.1:8096

Documentation.

Edit: removed unnecessary \

Edit 2: I really should have read the post more thoroughly, while my example above works fine for a Jellyfin server (which you apparently already run) it also can be adapted for other services. Read and interpret the documentation as best as you can, that goes for any service.

placebo@lemmy.zip on 09 Jul 12:11 next collapse

An ultimate guide could be a few tomes long not because you need to know that much, but because there are so many options and solutions. I’d recommend learning basics: core utils (i.e. command line tools), docker, network security basics (vpn, firewall).

Then as you start adding more services, you can identify gaps in your knowledge and close them (e.g. what is a database, how to manage it, how to back it up and then restore if it fails).

talkingpumpkin@lemmy.world on 09 Jul 12:36 next collapse

You’ll need networking basics for anything you do (there are lots of courses on youtube).

After that, you can just follow wherever you curiosity carries you :)

atzanteol@sh.itjust.works on 09 Jul 15:47 next collapse

Underrated comment.

A “howto” that just gives you scripts and commands to run is pointless. You need to understand the technology, and networking in particular.

Yesbutnotreally@lemmy.world on 09 Jul 21:28 collapse

Linux commands and networking, two things I definitely haven’t done a lot of. Didn’t actually consider networking as I’m “just doing it locally”, but as u/atzanteol@sh.itjust.works said, I don’t just wanna run scripts or commands to get it to work and then have no idea what to do when it breaks.

fozid@feddit.uk on 09 Jul 15:55 next collapse

There isn’t one. Build incrementally, and adapt and modify as it grows. Starting out, you have no idea where you will eventually end up. It’s a journey and a learning experience bespoke to you. Start with a basic dedicated device as a server that’s cheap. Add a service and get it safe and secure. Once you are happy with it and it is reliable and solid, add another service… Rinse and repeat.

ClownStatue@piefed.social on 09 Jul 18:15 next collapse

Mr Frankenstein’s blog helped me out early on. I also found a write up that dovetailed into it using dockerproxy & swag instead of traefik or caddy. Unfortunately, I don’t have those links handy. Should be able to search for the first one pretty easily, though.

irmadlad@lemmy.world on 09 Jul 19:16 next collapse

Mr Frankenstein’s blog

Dr. Frankenstein?

Frankensteen /s

Yesbutnotreally@lemmy.world on 09 Jul 21:24 collapse

Thank you! That will go in the bookmarks folder too!

Yesbutnotreally@lemmy.world on 09 Jul 21:00 next collapse

That was a lot of engagement to wake up to, I appreciate you all! Thank you very much!

For anyone in the same position as me that may find this in the future, clearly the first step is to get acquainted with Linux and learn Linux commands. I feel I may have more to learn than I initially thought, but hey, that’s what free time is for right?

Decronym@lemmy.decronym.xyz on 09 Jul 21:50 next collapse

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

Fewer Letters More Letters
DNS Domain Name Service/System
NAS Network-Attached Storage
NVMe Non-Volatile Memory Express interface for mass storage
SSH Secure Shell for remote terminal access
VPN Virtual Private Network

[Thread #49 for this comm, first seen 9th Jul 2026, 21:50] [FAQ] [Full list] [Contact] [Source code]

terabyterex@lemmy.world on 09 Jul 22:50 next collapse

The true plug-and-play user friendly way is to buy a NAS device and install all apps there.

i think this space will actually get bigger because of everything going on. these nas devices will ve the way to go for your average user.

------- what i did, if you are curious ------

i have everything running on proxmox. mostly as lxcs. there are proxmox helper scripts so it installs nice. i use proxmox for a lot of services so ut all wotks. also, for hardware rendering , intel cpus work better because of intel qsv.

i bought a ugreen nas device. bought an nvme. installed truenas on the nvme, because i like it and its open source. tge ugreen device has a built in boot drive with ugreen os which you can not download so i did not want to overwrite it.


now i have 27 years professionally as a software dev, so i had a foundation to learn this stuff. i want to give a heads up if you use an llm for learning. always ask it to explain and question things. look up any new terms. because of my experience, i understood most of the answers it gave and questioned when i didnt. i remember one time it said to do one thing (i dont remember) and i asked for more info. when i understood i knew it was missing something. i said “but i have x, y, and z” which in alm fairness i never mentioned and it did change the answer. my long-windwd point? dont run anything, unless you fully understand why. this advice goes for anyone not just using ai. people will be wrong too. know what you are doing

Yesbutnotreally@lemmy.world on 10 Jul 03:04 next collapse

So, in a scenario where I’d wanna run a Jellyfin server and potentially an Immich in the future, they could all go on NAS?

Would this be command line exclusively too?

terabyterex@lemmy.world on 10 Jul 03:28 collapse

the nas just has a button like ibterface. its like installing a game from steam

irmadlad@lemmy.world on 10 Jul 13:08 collapse

this advice goes for anyone not just using ai. people will be wrong too

Truth. A lot of times I will even pose the same questions to multiple AI. It doesn’t guarantee that all three of them aren’t smoking crack, but you get a better 360 view. It’s akin to back when I worked for the man. I created an excel spreadsheet that helped us when estimating jobs. Say you had 50’ of 10"x20" duct, then a 90, a drop for a grill, necked down to 30’ of 12"x12" duct. At the bottom of the spreadsheet it would spit out numbers and prices. Now, that didn’t necessarily mean that the numbers and the prices were accurate in every way to this specific job. There are a lot of variables to consider. You have to understand the output and whether that is truly applicable to the situation at hand.

sixty@sh.itjust.works on 10 Jul 08:35 collapse

For me it’s been about slowly learning, building, and re-building what I have, as I have gotten more knowledgable.

I started with a Windows laptop running 24/7. Learned about Docker Desktop and ran Jellyfin and the *arr stack on it.

I had Linux running on my PC, so as I got more comfortable with CLI, I decided to migrate the server and everything on it to Ubuntu Server. Learned to navigate on SSH better, learned more about networking and expanded the server with more services like Nginx Revers Proxy Manager and exposing services online.

Then I upgraded my hardware and installed Proxmox on the new machine, to better manage that and the old laptop. Slowly getting better at backing up at different levels, heightening security and so on.

Guides are good, but I find experience and steady knowledge building is a better way to grow and not get overwhelmed or burned out.