Installation

Navidrome is a media server I am currently using to host music on my RPi. But Plex is good if you want to host video files as well.
A few issues I faced with Plex are sudden crashes and the app eats up storage very fast. The plexamp app does not work with non-internal networks.
The playlist management is not good either.

curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
sudo apt update
sudo apt install plexmediaserver
This should install plexmediaserver on your Pi. If you are using ufw firewall, don't forget to allow 32400 port.

Configuration

Once installed, if the media is on external storage, Plex can't display it as linux locks the viewing of it or something like that.
To bypass this, we should mount the drive on a different path on startup. Follow this guide.

Creating a mount directory with necessary permissions.
sudo mkdir /usb /usb/
sudo chown -R piserver:piserver /usb/ #replace with your pi username
sudo chmod -R 755 /usb/

Creating mounting entries in fstab
blkid /dev/sda1 #replace it with the id of the external device. You can find that using df, lsblk etc.
sudo mousepad /etc/fstab
# Add these lines in the file
#Mounting Seagate Expansion 1tb HDD (rpi_ext_1tb_sea) at /usb/rpi_ext_1tb_sea for plex
UUID= /usb/rpi_ext_1tb_sea ntfs defaults,auto,rw,nofail 0 1

After creating the mount points, unmount the drive and mount it again.
sudo umount /media/piserver/rpi_ext_1tb_sea
sudo systemctl daemon-reload
sudo mount /usb/rpi_ext_1tb_sea #You might get some permission denied error, but ignore it. To test if it worked, use below command.
ls /usb/rpi_ext_1tb_sea/* #All files in all folders will be displayed

Now, everytime you restart, it will be mounted in the location you specified. Now, you can go to the plex server on your localhost:32400.
From that you can use zrok to host it on the internet. Ngrok has a limit on request per minute which disrupts our experience.
Install zrok on your RPi curl -sSf https://get.openziti.io/install.bash | sudo bash -s zrok.
You can find the code needed to enable zrok from the account. You need to activate it with zrok enable
zrok reserve public 32400 -n "plexamp" will reserve the domain name for you.
To start share, use zrok share reserved "plexamp".