My setup exists of one local server that basically hosts Jellyfin and an arr stack. I only access this server locally with PC, TV and phone, however I might setup a Wireguard based remote access in the future.

Should I use a reverse proxy like Caddy so I can access the different containers with a local domain name like jellyfin.myserver.local?

I am also interested in hosting Adguard home but how can this work together with Caddy, won’t they both conflict as a DNS server?

I appreciate any possible advice on these topics.

Thank you.

  • BrianTheeBiscuiteer@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    7 days ago

    I didn’t for the longest time but now I use Traefik for this. It can automatically add services (i.e. containers) to it’s routing list so the overhead is low and since I also run openwrt on my router I setup *. localhost to point to 127.0.0.1 so I don’t have to remember what ports I’m using for which service (e.g. jellyfin.localhost). You can also setup DNS entries using something like PiHole.

  • hperrin@lemmy.world
    link
    fedilink
    English
    arrow-up
    27
    ·
    6 days ago

    A reverse proxy makes setup a lot easier and more versatile, and can manage SSL certs for you.

    • folkrav@lemmy.ca
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      7 days ago

      I’m curious what made it that complicated. Was the Synology OS (DSM they call it right?) fighting you along every step or something? As far as I know it’s a custom Linux OS but I have no idea what it’s based on, or if it’s even based on a specific distribution… I could definitely see it being a challenge depending on the answers haha.

      • kratoz29@lemm.ee
        link
        fedilink
        English
        arrow-up
        1
        ·
        6 days ago

        I don’t know what he is talking about, this can be easily done from the DSM UI, also you don’t even need to mess with the certs expiring as it auto renews them.

  • gaylord_fartmaster@lemmy.world
    cake
    link
    fedilink
    English
    arrow-up
    36
    ·
    6 days ago

    I like the workflow of having a DNS record on my network for *.mydomain.com pointing to Nginx Proxy Manager, and just needing to plug in a subdomain, IP, and port whenever I spin up something new for super easy SSL. All you need is one let’s encrypt wildcard cert for your domain and you’re all set.

  • StrawberryPigtails@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    7
    ·
    7 days ago

    Personal preference.

    Unless something has changed, Caddy isn’t a dns server. It’s a web server and reverse proxy. If you might expose something to the public internet, you will want it behind the reverse proxy.

    If you want to access local network services (private vpn counts) via a domain name all you need is a DNS server and for you clients setup to query that dns server. I use PiHole for this. From what I understand Adguard may be similar to PiHole but I’ve never looked a it.

    One thing to be wary of, there are no reserved private network domains. Depending on how you set things up your local network dns queries may go out onto the public internet. It’s best to go ahead and register a domain name that you want to use so that you can control it routing if that happens. They can be had cheap as $11 USD each.

  • MajinBlayze@lemmy.world
    link
    fedilink
    English
    arrow-up
    15
    arrow-down
    1
    ·
    7 days ago

    Don’t use jellyfin.server.local

    .local is reserved for mdns, which doesn’t support more than one dot. (Though it may still sometimes work).

    In any case, to make that work you need either a DNS server on your network or something like duckdns (which supports wildcard entries).

    • Lem453@lemmy.ca
      link
      fedilink
      English
      arrow-up
      6
      ·
      6 days ago

      For people wanting the a very versatile setup, follow this video:

      https://youtu.be/liV3c9m_OX8

      Apps that are accessed outside the network (jellyfin) are jellyfin.domain.com

      Apps that are internal only (vaultwarden) or via wireguard as extra security: Vaultwarden.local.domain.com

      Add on Authentik to get single sign on. Apps like sonarr that don’t have good security can be put behind a proxy auth and also only accessed locally or over wireguard.

      Apps that have oAuth integration (seafile etc) get single sign on as well at Seafile.domain.com (make this external so you can do share links with others, same for immich etc).

      With this setup you will be super versatile and can expand to any apps you could every want in the future.

  • jubilationtcornpone@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    5
    ·
    7 days ago

    If you’re not hosting any publicly available services, then no. A reverse proxy would be unnecessary. You can just just set static records in your DNS server that tell it which internal hostname goes with what IP and it will relay that info to any device on your local network that requests it. Even with a Wireguard connection, you can tell it to use the DNS server from your local network.

  • Kalcifer@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    4
    ·
    7 days ago

    It entirely depends on how you want your homelab to work. I use a reverse proxy to set up subdomains for my publicly facing services because I find it easier and cleaner to assign a subdomain to each service, and I also like having HTTPS managed by a single point — a sort of single point of entry to the rest of the services. You’d have to decide what you want out of your homelab, and find and set up the services that yield the outcome that you want.

  • hedgehog@ttrpg.network
    link
    fedilink
    English
    arrow-up
    5
    ·
    7 days ago

    Reverse proxies aren’t DNS servers.

    The DNS server will be configured to know that your domain, e.g., example.com or *.example.com, is a particular IP, and when someone navigates to that URL it tells them the IP, which they then send a request to.

    The reverse proxy runs on that IP; it intercepts and analyzes the request. This can be as simple as transparently forwarding jellyfin.example.com to the specific IP (could even be an internal IP address on the same machine - I use Traefik to expose Docker network IPs that aren’t exposed at the host level) and port, but they can also inspect and rewrite headers and other request properties and they can have different logic depending on the various values.

    Your router is likely handling the .local “domain” resolution and that’s what you’ll need to be concerned with when configuring AdGuard.

  • muntedcrocodile@lemm.ee
    link
    fedilink
    English
    arrow-up
    1
    ·
    6 days ago

    I use one but then again i want things accessible over the internet cos i have sone thibgs i want public

  • butter@midwest.social
    link
    fedilink
    English
    arrow-up
    3
    ·
    7 days ago

    For sure.

    At some point, your services could easily warrent it. If you learn it early, it makes it much easier to organize your services and share them with others if you decide to.

    Also, if you do decide to use a domain name, you probably won’t be able to use it internally to your network. If you use Adguard, you can use DNS rewrite to only direct your traffic to your server when you’re in your network.

    Also, personally, I use nginx, but I’m more than happy to give you any advice on setup or reverse proxy.

  • Shimitar@feddit.it
    link
    fedilink
    English
    arrow-up
    3
    ·
    4 days ago

    Definitely yes. I only see positive benefits by using a reverse proxy. From the fun of learning new stuff to the added security (which is never a downside) and being ready to expose outside in a future.

  • vividspecter@lemm.ee
    link
    fedilink
    English
    arrow-up
    10
    ·
    7 days ago

    It’s nice not to deal with HTTPS warnings etc and as you said it’s more convenient to access by domain name rather than remembering port numbers. You should be able to technically achieve the latter in another way by using docker and configuring it to assign a real IP for each service (a bridge network presumably), then setting each service to use port 80 externally. But that’s probably as much work as just setting up a reverse proxy.

    And if you’re concerned about exposing ports, you can use DNS challenge which doesn’t require opening port 80 on your router.