The IP is dynamic, but for my self-hosted services that require a static IP I make use of a WireGuard tunnel between my raspberry pi and a virtual private server. The VPS has a static IP, so my domains point at the VPS and then the VPS re-routes the packets via the wireguard tunnel. In a wire guard tunnel only the server needs a static IP, so the VPS can route packets to the client even if the client’s ip is dynamic.