Nothing crazy in this post, I just wanna brag about setting up nginx for my media server.

My media sharing journey has been long, with a number of huge upgrades to my setup. I started in January, where I would torrent movies and shows and stream them over discord to my girlfriend.

In February, the wonderful people of the fediverse convinced me to try Linux, so I installed Fedora Linux on my pc (I absolutely love it and will never go back), I learned so much about Linux in just a few weeks, and wanted to try self hosting, so I installed jellyfin on my computer for just me and my girlfriend.

In late February (maybe March?), I got a homelab server running to install jellyfin, I had nothing else on it, jellyfin wasn’t even installed through docker (I was afraid of docker). I would manually transfer torrented movies/shows from my pc to the server via sftp clients.

Eventually, i think May, I introduced some friends/ family to my media server, and realized I needed to scale up a bit, so I setup the full arr stack with jellyseerr and qBitTorrent and migrated jellyfin to docker.

A few weeks ago, i finally figured out hardware acceleration with my old nvidia graphics card, as it was being a pain in the ass previously. Up to this point, everyone would just connect with my homes external ip and port forwarding.

This brings us to yesterday, my isp, Comcast, had a “planned” outage that they didn’t warn anyone about. Which ended up changing my ip so none of my friends/family could access anything until I figured out what happened. So, I finally decided to setup a ddns with noip, and looked into nginx and reverse proxies. After a few trials and tribulations, people can now access everything on the server without sticking a port on the end of a url/ip. Along the way i also started hosting my own team speak and factorio servers

Now I’m just wondering if there’s anything else that’ll make a huge improvement like everything else mentioned, I don’t think there’s anything else I could even want, except upgrading the actual server hardware with more storage

all 21 comments

sorted by: hot top controversial new old
[–] 31 points 1 year ago (2 children)

Check out Immich next. It's sort of like a self-hosted Google photos except it allows you to own your photos.

  • source
  • hideshow 2 child comments
  • [–] 10 points 1 year ago

    Congrats! Out of the usual suspects, (nginx, traefik & caddy), id say nginx has the steepest learning curve, so it's definitely something to crow about mate! I know professionals in the tech industry that have a hard time with nginx config, so an enthusiast getting it down is a bigger deal than you're giving yourself credit for.

    I host various services for friends and family; and here are a couple I think will be of particular interest to you:

    Another thing I would strongly suggest doing, is setting up a single sign on Auth server. Something that will allow your friends and family to have one login for anything you setup. Personally I use keycloak. But there are other options like authentik and voidauth that are worth looking at too!

    Congrats again on the progress mate! You're smashing it so far.

  • source
  • [–] 11 points 1 year ago (7 children)

    Did you follow a specific guide or refer to specific documentation for the reverse proxy? I've tried (admittedly not super hard) multiple times to set one up with nginx with no luck.

  • source
  • hideshow 7 child comments
  • [–] 8 points 1 year ago (1 child)

    Vanilla nginx is still too far over my head, but Nginx Proxy Manager makes easy work of it.

    A lot of people like Caddy but I've never tried it. The config files are much simpler and it auto-renews certificates (but so does Nginx Proxy Manager).

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 year ago

    Straight up reverse proxy isn't bad. I think it's only a couple lines in a file.

    But when you want to add let's encrypt and dynamic DNS. It starts to get a little bit meatier.

  • source
  • parent
  • [–] [S] 10 points 1 year ago (2 children)

    As much as I hate to admit it, I asked ChatGPT, because like you, I couldn’t find any good tutorials/guides about setting it up, ultimately ChatGPT gave me exactly the information I needed, if you need some help I can send a template config thingy later

  • source
  • parent
  • hideshow 2 child comments
  • [–] 4 points 1 year ago

    Providing documentation to something that you don't know is one of its few really solid uses. If it misses a detail or doesn't get it right on the first try, it's still probably faster than you starting from scratch, RTFM.

  • source
  • parent
  • [–] 3 points 1 year ago

    No worries. But be sure to research what you setup for it being sane or secure.

    As for myself: I had significant help from a fellow dude on discord answering many of my stupid questions.
    Everyone had to begin at one point ;)

  • source
  • parent
  • If you've got a docker host, nginx proxy manager is super simple. Aside from a super basic docker compose file, the rest of the config can be done via the web gui.

    If you're on proxmox, there's a helper script for creating an nginx proxy manager lxc, and the rest can be done via the web gui as well.

  • source
  • parent
  • [–] 5 points 1 year ago

    Stuff I run:

    • HomeAssistant (home automation)
    • frigate (local foss security cam mgmt)
    • metube (web gui for yt-dlp)
    • technitium (dns mgmt with adblocking and many other features that make it better than pihole imo)
    • pdfDing (foss for pdf library mgmt)
    • netbird (in lieu of ddns, I use this self hosted vpn to connect to stuff when I’m not local)
    • caddy (maybe similar to ngnx, this lets me use custom names so I don’t have to remember ip/ports to connect)
    • heimdall (simple static dashboard)
  • source
  • [+] -10 points 1 year ago (7 children)

    setup

    'set up', my dude. Two words, as a verb.

  • source
  • hideshow 7 child comments
  • [–] [S] 7 points 1 year ago (5 children)

    I’d actually argue that my usage is correct here, it’s probably a regional thing but imo, set up means the verb of setting something up, whereas setup is a noun referring to a specific way that something was set up

  • source
  • parent
  • hideshow 5 child comments
  • [–] 2 points 1 year ago (2 children)

    (not parent commenter) May I word-nerd with you OP? Nice post btw.

    OK with your permission, which region? & I believe -

    You have a sweet new setup. A sweet new nginix setup! You spent time getting nginix set up. Now you can say you finally set up nginix as a reverse proxy. You’re proud of the setup.

  • source
  • parent
  • hideshow 2 child comments