Locally, everything works fine on HTTP (http://192.168.1.222).

Externally, however, only PARTIALLY on HTTPS (https://mydomain:8344) through Caddy. I can connect to the site (first picture), but streams won’t start.

Any idea why this is the case? My theory is that the RTSP port (554) is for streaming and that when I go to the local address (that is on 80), the site ITSELF initiates a connection to port 554 in the background. However, this apparently does not happen when I connect remotely.

EDIT: In the same Caddyfile, I reverse proxy my Jellyfin server that only uses a single port, and that works fine. The Caddy server runs on my Ubuntu Server 23 on Raspberry pi 5.

  • SteveTech@programming.dev
    link
    fedilink
    English
    arrow-up
    8
    ·
    3 months ago

    I really wouldn’t expose a DVR to the internet, and especially not RTSP, those sorts of things get brute forced all the time, and you can find websites full of hacked cameras.

    What I would do is run a VPN server (maybe Wireguard) on your Pi, and VPN in when you want to look at your cameras.

    • dysprosium@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      3 months ago

      yeah but I am not exposing my DVR to the internet, right? I only expose my reverse proxy (Caddy) to the internet that is just redirecting the traffic from my DVR. You kinda make me worry as if this is still not safe enough??

      • SteveTech@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        3 months ago

        A reverse proxy by itself doesn’t do much security wise. You could possibly setup some sort of authentication, attempt blocking, and rate limiting (in the reverse proxy, don’t trust the DVR), but it’ll probably also break the DVR even more.

        There’s bots that port scan and specifically target all sorts of stuff, and DVRs are a very common target. With a VPN in the way, there’s no way of knowing what’s there. A VPN also shouldn’t break the web UI.