Best way for a self managed Loki + Prometheus set up for K8S

If I want to set-up self managed (not cloud-based) Grafana+Loki+Prometheus based observability stack for K8S, what would be the best approach.
Is it that a K8S based Stateful Set be the better option? Or do I need to set up a server and have the logs get collected there?