Voyager uses Laravel's filesystem to store media files, to access these files on the browser you need to create a shortcut folder in the public directory that points to the storage folder of your app, You can do that easily with artisan using this command
php artisan storage:link
But if your app is on shared hosting you probably don't have access to a CLI so as a workaround you need to create a symlink.php in your public directory that contains this script
?php
symlink('/path_to_public_directory', '/path_to_storage_directory');
Then open this file on the browser, this will automatically create a shortcut folder that points to the storage folder.
But even after doing this, you will still see a warning on your Voyager dashboard saying that: Missing storage symlink.
To fix that you need to change the root path of the public disk in config/filesystems.php
'public' => [
'driver' => 'local',
'root' => public_path('storage'),
'visibility' => 'public',
],
Now Voyager can access the media files without any problems.