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
Check out Immich next. It’s sort of like a self-hosted Google photos except it allows you to own your photos.
Loving it.
Don’t get discouraged by it being in “Beta”.
Yes it get’s many releases in a short time frame. But nothing you can manage without reading patch notes.+1 for Immich - it’s actually great
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:
- matrix server with element clients. (Self hosted discord/WhatsApp alternative which is open source unlike TS).
- Drop server and client setup (self hosted steam like experience).
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.
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.
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
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.
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 ;)
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).
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.
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.
It’s been a minute since I’ve done this in proxmox, but this video should help get you over the hump. Good luck!
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)
setup
‘set up’, my dude. Two words, as a verb.
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
Right, and when you said you “finally setup nginx”, that was a verb, and should have been “set up”.
Good point! I didn’t catch that earlier, that one’s definitely wrong
(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.
I’m on the west coast of the US! Washington to be specific.
Right on & what a coast it is!
Confidently incorrect.