For this new year, I’d like to learn the skills necessary to self host. Specifically, I would like to eventually be able to self host Nextcloud, Jellyfin and possibly my email server too.

I’ve have a basic level understanding of Python and Kotlin. Now I’m in the process of learning Linux through a virtual machine because I know Linux is better suited for self hosting.

Should I stick with Python? Or is JavaScript (or maybe Ruby) better suited for that purpose? I’m more than happy to learn a new language, but I’m unsure on which is better suited.

And if you could start again in your self hosting journey, what would you do differently? :)

EDIT: I wasn’t expecting all these wonderful replies. You’re all very kind people to share so much with me :)

The consensus seems to be that hosting your own email server might be a lot, so I might leave that as future project. But for Nextcloud and Jellyfin I saw a lot of great tips! I forgot to mention that ideally I would like to have Nextcloud available for multiple users (ie. family memebers) so indeed learning some basic networking/firewalling seems the bare minimum.

I also promise that I will carefully read the manuals!

  • @[email protected]
    link
    fedilink
    English
    21 hour ago

    Lots of people have been talking about products and tools. It’s docker, tailscale, cloudflare proxmox etc. These are important, but will likely come and go on a long enough timescale.

    In terms of actual skills, there’s two that will dramatically decrease your headaches. Documention and backup planning. The problem with developing those skills is, to my knowledge, they’ve only ever been obtained through suffering. Trying to remember how to rebuild something when you built it 6 months ago is futile. Trying to recover borked data is brutal. There’s no fail-safe that you haven’t created, and there’s no history that you haven’t written. Fortunately, these are also the most transferable skills.

    My advice is, jump in. Don’t hesitate. The chops in docker/linux/networking will come with use and familiarity. If it looks cool, do it. Make mistakes. You will rapidly realise what the problems with your set up are. You will gain knowledge in leaps and bounds from breaking a thing vs learning by rote or lesson. Reframe the headaches as a feature, not a bug - they’re highlighting holes in your understanding. They signpost the way to being a better tech, and a more stable production environment.

    The greatest bit about self hosting for me is planning the next great leap forward, making it better, cleaner, more robust. Growing the confidence in your abilities to create a system you can trust. Honing your skills and toolset is the entirety of the excercise, so jump in, and don’t focus on any one thing to master or practice before hand!

    • Possibly linux
      link
      fedilink
      English
      160 minutes ago

      Networking is way more important than pretty much anything else. TCP/IP and http are going to stay for quite a while.

  • @[email protected]
    link
    fedilink
    English
    22 hours ago

    The ability to read, and maybe watch a video. And then persistence for some of the trial and error you will run in to. All skills you need can be picked up with the above.

  • @[email protected]
    link
    fedilink
    English
    33 hours ago

    Dude it sounds you’re over skilled for the job. You just need to read some guides and you probably know already how networking works, very basic linux commands, linux folder structures, and then the concept of docker - primarily how it maps networking & folders from your “host machine” to the “docker container”, and how it loads services using a docker compose file. Especially for nextcloud, domain dns management and dynamic dns etc would be very helpful knowledge.

    Also, just a suggestion, chatgpt etc are super useful. You tell them what you want and it spits out custom instructions for your setup, and you’re able to counter question at any point. If it does make mistakes, which it will, it’s a learning opportunity for you to troubleshoot and figure out how everything works. All the best and if you have a question feel free to message me.

  • @[email protected]
    link
    fedilink
    English
    614 hours ago

    Honestly, you just need to pick a video on follow along these days. There’s a load of YouTube videos out there that take you step by step.

    Lewis rosman recently put out a 14-hour mega video of doing everything, well he might have made some controversial choices, The outcome is quite comprehensive.

  • Human Crayon
    link
    fedilink
    English
    615 hours ago

    Determination, patience, a willingness to learn anything you need to.

    If you have those, in time, you will be able to get your lab up and running. I started mine with a minimal knowledge of Linux (I could install it from a USB and poke around). Now it’s the center of my families digital life.

    You’ll get there in time.

  • @[email protected]
    link
    fedilink
    English
    517 hours ago

    Experimenting with VMs is the way forward.

    Basic networking knowledge is vital. And being able to configure your own firewall(s) safely is an important skill. Check out something like Foomuuri, or Firewald. Shorewall is brilliant for documentation and description of issues (with diagrams!) but it does not use the newer Linux kernel nftables and is no longer actively developed.

    Go for it with Nextcloud.

    I would also recommend at least having a shot at setting up an email server, although I would recommend pushing through to a fully working system. It is possible, and is very satisfying to have in place. The process of setting one up touches so many different parts of internet function and culture that it is worth it even if you don’t end up with a production system. The Workaround.org ISPMail stuff is a good starting point, and includes some helpful background information at every stage, enough so you can begin to understand what’s going on in the background and why certain choices are being made - even if you disagree with the decisions.

    Python is great for server admin, although most server config and startup shutdown snippets are written in BASH. You will no doubt have already begun picking that up as you interact with your VMs.

  • Synapse
    link
    fedilink
    English
    619 hours ago

    Take the time to properly understand Linux file ownership and permission. Permission will be the cause of many issues you will encounter in you self-hosting journey on Linux. Make sure you know the basics of chmod (change permission) and chown (change ownership), Linux users and groups. This will save you some head-scratching, but don’t worry, you will learn by doing !

    Remember that, if you setup everything right, especially with docker, running as root / with sudo is not required for any of the services you may want to run.

  • @[email protected]
    link
    fedilink
    English
    51 day ago

    Give Nextcloud AIO a shot. I installed bare metal the first time, but AIO has decreased my maintenance burden to next to nothing. Before that, it felt like every update would break my system. I’m a year or two into my transition from Linux nerd to self-hoster. I still fail at things on occasion, but I have learned a lot. I hope it goes as well or even better for you.

    • @[email protected]
      link
      fedilink
      English
      213 hours ago

      I’ve hosted NC for a decade, and the AIO was the first method that doesn’t make me dread updates. And I’ve used pretty much every method of installing it over the years, everything sucked.

      I snapshotted every time before and update because I knew it was a crapshoot whether the update was going to crater the system, and I’d roll back and wait for a working update to come out. Before snapshotting, I had to fix borked updates about every second time.

  • Presi300
    link
    fedilink
    English
    412 days ago

    You don’t need to be a programmer to selfhost.

    The most important “skills” to have if you want to selfhost imo are:

    • Basic Networking knowledge

    • Basic Linux knowledge

    • Basic docker/docker compose knowledge

    But I’d say to not get lost in the papers and just jump right in. Imo, the best way to learn how to selfhost is to just… Do it. Most everything is free and fairly well documented

    • @RedditRefugee69
      link
      English
      16 hours ago

      Where’d you learn Docker basics? I pretty much have no clue what’s going on every time I try to even start.

    • @[email protected]
      link
      fedilink
      English
      219 hours ago

      Totally agree! I’m not a programmer and I have several services running in my home server. I’m just curious and have used Linux for a decade as a normal user. With just these 3 basic knowledge skills you’re good to go.

  • slazer2au
    link
    fedilink
    English
    512 days ago

    Docker really. If something goes bad, trash the container and start again without loosing your actual data.

    • @[email protected]
      link
      fedilink
      English
      122 days ago

      Mostly Docker.

      Portainer and plugging Docker Compose XML into Portainer stacks makes Docker stupid-simple. (personally speaking as a stupid person that does this)

      Cloudflare tunnels for stuff people other than you might want to access.

      Tailscale if it’s only you.

      Reverse proxy & port forwarding for sharing media over Jellyfin without violating the Cloudflare Tunnel ToS.

    • @[email protected]
      link
      fedilink
      English
      4
      edit-2
      2 days ago

      Dokploy is a pretty easy web gui and is itself a docker container.

      Makes it dead simple to manage multiple containers and domains. (Not for power users that need kubernetes level flexibility)

  • @[email protected]
    link
    fedilink
    English
    8
    edit-2
    24 hours ago

    if you could start again in your self hosting journey, what would you do differently? :)

    That’s an excellent question.

    If I were to start over, the first thing that I would do is start by learning the basics of networking and set up a VPN! IMO exposing services to the public internet should be considered more of an advanced level task. When you don’t know what you don’t know, it’s risky and frankly unnecessary.

    The lowest barrier to entry for a personal VPN, by far, is Tailscale. Automatic internal DNS and clients for nearly any device makes finding services on a dedicated machine really, really, easy. Look into putting a tailscale client right into the compose file so you automatically get an internal DNS records for a service rather than a whole machine.

    From there, play around with more ownership (work) with regard to what can touch your network. Switch from Tailscale’s “trusted” login to hosting your own Headscale instance. Add a PiHole or AdGuard exit node and set up your own internal DNS records.

    Maybe even scrap the magic (someone else’s logic that may or may not be doing things you need) and go for a plain-Jane Wireguard setup.

    • @[email protected]
      link
      fedilink
      English
      31 day ago

      For sure use Tailscale for VPN. They have apps for iPhone, Android, macOS, and Linux, so setting up your own personal network will be easy. Hosting on the real internet is definitely advanced and not always necessary.

  • NeatoBuilds
    link
    fedilink
    English
    292 days ago

    Learn how to properly backup your data in case you nuke something you shouldn’t

    • @[email protected]
      link
      fedilink
      English
      132 days ago

      And regularly check them. I just found out the hard way this last week that my backups haven’t been running for a few weeks …

      • @[email protected]
        link
        fedilink
        English
        42 days ago

        Yep.

        I have friends in the SMB space, one thing they do is a regular backup verification (quarterly). At that frequency, restoring even a few files (especially to a new VM), is very indicative, especially if it’s a large dataset (e.g. Quickbooks).

        In Enterprise, we do all sorts of validation, depending on the system. Some is performed as part of Data Center operations, some is by IT (those are separate things), some by Business Unit management and their IT counterparts.

        • @[email protected]
          link
          fedilink
          English
          21 day ago

          Unfortunately, that wouldn’t have done anything. Because I did that in December and they stopped running like 2 weeks after my verification. I would have caught it on my next scheduled validation, but that doesn’t help me now 😕

          • @[email protected]
            link
            fedilink
            English
            21 day ago

            I mean, it still helps right? It limits your losses to X weeks instead of X months or, I hate to say it, X years.

  • @[email protected]
    link
    fedilink
    English
    71 day ago
    • Docker: You can practice on your main computer before complicating things with networking.
    • How to set up a reverse proxy: DNS, certificates, etc. I recommend Caddy.
    • Backups: If you use Docker Volumes, make sure you back those up too and test the backups.

    To self-host, you do not need to know how to code.

    • @[email protected]
      link
      fedilink
      English
      41 day ago

      To self-host, you do not need to know how to code.

      I agree but also say that learning enough to be able to write simple bash scripts is maybe required.

      There’s always going to be stuff you want to automate and knowing enough bash to bang out a script that does what you want that you can drop into cron or systemd timers is probably a useful time investment.