Gitlab uses a ton of resources and is a pain to setup. Once you get it going, it’s fine.
Going to echo what others have said: Use Gitea or Forgejo instead if you can. Both have runners you can setup like gitlab, but they instead mimic github actions instead of gitlab ci/cd.
I run a semi-private gitea instance, and have not had any problems past the initial setup in 2+ years.
Second this. Mailcow very easy to setup, though the docs could use improvement. This might have changed already.
That said, I found it easier to pay for a domain and email service where they worry about reputation and random microsoft blacklists.