For anyone reading this best practice is to put it behind a VPN or something similar, I personally have it setup as a subdomain (bitwarden.domain.com) using nginx proxy manager to sign using let's encrypt.
In saying that I'm in the middle of migrating everything to swag (which is pure nginx with fail2ban built in) just to make management of some other things easier.
I will say if you do set it up public facing, make sure you disable signups for both security and to stop random people from using your server.