I’ve now spent two days reading every forum/reddit post & watching every YouTube video I could find and now I come to the experts in hopes an answer can be found. In advance, I’d like to thank you for taking the time to assist. I think I’ve covered all the basics below.
MAIN ISSUE
Jellyfin is not loading media files to the library.
WHAT I CAN GATHER
From what I can tell by looking at the logs, the issue comes down to permissions. This is despite the fact I’ve changed the chmod settings numerous times. They’re currently event set to full 777 (though, ideally would not prefer this).
STEPS TO RESOLVE
I downloaded Ubuntu 20.04 LTS for Raspberry 3 from: https:// ubuntu{dot}com/download/raspberry-pi. Rasberry Pi 3 B+ up and running, check. My external HD (/dev/sda1) has a mountpoint created at /media/jfmovies.
I followed the Jellyfin Stable installation commands for Debian and Ubuntu from, https:// jellyfin{dot}org/downloads/. I was able to login to [ip]:8096 and completed the setup using the wizard and the quick setup guide.
I’ve read there have been issues when media is not in a /home folder, but I created a mountpoint as storing in /home wouldn’t work on the microSD Ubuntu is running on. When I go to Jellyfin>Add Library, Folders>Select Path I can see the /media/jfmovies path from the picker, but it stalls and does nothing. I’ve manually entered /media/jfmovies and it allows me to select OK (I’ve tried manually entering /media/jfmovies/movies - since the movies I want are actually in that directory - and I get an error saying the path cannot be found and Jellyfin will not allow me to continue).
I followed @bushy3’s line of thinking by removing my mountpoint and created a new one, but that did not work. According to @anthonylavado, an external /media path should work. The post trails off in Path to media not found and I wasn’t sure if this should be continued there.
And yes, I’ve used the naming convention prescribed by Jellyfin and the chmod settings are recursive from the primary directory.
I also thought I’d try to look at the configuration file to see if there was a path I could define there (https://www.youtube.com/watch?v=lUZluENL2a0 is using Docker, which I did not, to make some customizations) but I have NO idea where that is stored (I’m still relatively new to Linux).
TECHNICAL SPECS
Jellyfin Log
[2020-05-19 19:33:09.688 +00:00] [ERR] Error validating images for "/media/jfmovies" System.UnauthorizedAccessException: Access to the path '/media/jfmovies/lost+found' is denied. ---> System.IO.IOException: Permission denied --- End of inner exception stack trace --- at System.IO.FileStatus.EnsureStatInitialized(ReadOnlySpan`1 path, Boolean continueOnError) at System.IO.FileSystemInfo.Init(FileStatus& fileStatus) at System.IO.FileSystemInfo.Create(String fullPath, String fileName, FileStatus& fileStatus) at System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<DirectoryInfos>b__7_0(FileSystemEntry& entry) at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items) at System.Collections.Generic.SparseArrayBuilder`1.ReserveOrAdd(IEnumerable`1 items) at System.Linq.Enumerable.Concat2Iterator`1.ToArray() at MediaBrowser.Controller.Providers.DirectoryService.GetFileSystemEntries(String path) at MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetFiles(BaseItem item, Boolean includeDirectories, IDirectoryService directoryService) at MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetImages(BaseItem item, IDirectoryService directoryService) at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToList() at MediaBrowser.Providers.Manager.ItemImageProvider.ValidateImages(BaseItem item, IEnumerable`1 providers, IDirectoryService directoryService) at MediaBrowser.Providers.Manager.MetadataService`2.RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) [2020-05-19 19:33:09.714 +00:00] [INF] "Scan Media Library" Completed after 0 minute(s) and 0 seconds [2020-05-19 19:33:09.716 +00:00] [ERR] Error in Directory watcher for: "/media/jfmovies" System.UnauthorizedAccessException: Access to the path '/media/jfmovies/lost+found' is denied. ---> System.IO.IOException: Permission denied --- End of inner exception stack trace --- [2020-05-19 19:33:09.717 +00:00] [INF] Stopping directory watching for path "/media/jfmovies" [2020-05-19 19:33:09.721 +00:00] [INF] ExecuteQueuedTasks [2020-05-19 19:33:09.810 +00:00] [INF] Watching directory /media/jfmovies [2020-05-19 19:33:41.185 +00:00] [INF] Deleting item, Type: "Folder", Name: "jfmovies", Path: "/media/jfmovies", Id: [remitted] [2020-05-19 19:33:41.783 +00:00] [INF] Deleting item, Type: "CollectionFolder", Name: "Movies", Path: "/var/lib/jellyfin/root/default/Movies", Id: [remitted] [2020-05-19 19:33:42.192 +00:00] [INF] Queueing task "RefreshMediaLibraryTask" [2020-05-19 19:33:42.192 +00:00] [WRN] HTTP Response 204 to "[ip addr remitted]". Time (slow): 0:00:01.5681383. "http://[ip addr remitted]:8096/Library/VirtualFolders?refreshLibrary=true&name=Movies" [2020-05-19 19:33:42.194 +00:00] [INF] Executing "Scan Media Library" [2020-05-19 19:33:42.198 +00:00] [INF] Validating media library [2020-05-19 19:33:42.647 +00:00] [INF] "Scan Media Library" Completed after 0 minute(s) and 0 seconds [2020-05-19 19:33:42.652 +00:00] [INF] ExecuteQueuedTasks
Disk Details
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 48.4M 1 loop /snap/core18/1708
loop1 7:1 0 48.4M 1 loop /snap/core18/1753
loop2 7:2 0 23.5M 1 loop /snap/snapd/7267
loop3 7:3 0 61.3M 1 loop /snap/lxd/14808
loop4 7:4 0 61.6M 1 loop /snap/lxd/15066
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part /media/jfmovies
mmcblk0 179:0 0 3.8G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 3.5G 0 part /
Disk Permissions
[user]@[server-name]:/$ ls -l /media/jfmovies
total 20
drwxr–r-- 2 root root 16384 May 18 19:20 lost+found
drwxrwxrwx 2 [user] [user] 4096 May 18 20:03 movies
Hardware Details
[server name remitted] description: Computer product: Raspberry Pi 3 Model B Plus Rev 1.3 serial: [remitted] width: 64 bits capabilities: smp cp15_barrier setend swp tagged_addr_disabled *-core description: Motherboard physical id: 0 *-cpu:0 description: CPU product: cpu physical id: 0 bus info: cpu@0 size: 600MHz capacity: 1400MHz capabilities: fp asimd evtstrm crc32 cpuid cpufreq *-cpu:1 description: CPU product: cpu physical id: 1 bus info: cpu@1 size: 600MHz capacity: 1400MHz capabilities: fp asimd evtstrm crc32 cpuid cpufreq *-cpu:2 description: CPU product: cpu physical id: 2 bus info: cpu@2 size: 600MHz capacity: 1400MHz capabilities: fp asimd evtstrm crc32 cpuid cpufreq *-cpu:3 description: CPU product: cpu physical id: 3 bus info: cpu@3 size: 600MHz capacity: 1400MHz capabilities: fp asimd evtstrm crc32 cpuid cpufreq *-memory description: System memory physical id: 4 size: 908MiB *-usbhost product: DWC OTG Controller vendor: Linux 5.4.0-1008-raspi dwc_otg_hcd physical id: 1 bus info: usb@1 logical name: usb1 version: 5.04 capabilities: usb-2.00 configuration: driver=hub slots=1 speed=480Mbit/s *-usb description: USB hub product: USB 2.0 Hub vendor: Microchip Technology, Inc. (formerly SMSC) physical id: 1 bus info: usb@1:1 version: b.b3 capabilities: usb-2.00 configuration: driver=hub maxpower=2mA slots=4 speed=480Mbit/s *-usb description: USB hub product: USB 2.0 Hub vendor: Microchip Technology, Inc. (formerly SMSC) physical id: 1 bus info: usb@1:1.1 version: b.b3 capabilities: usb-2.00 configuration: driver=hub maxpower=2mA slots=3 speed=480Mbit/s *-usb:0 description: Ethernet interface vendor: Microchip Technology, Inc. (formerly SMSC) physical id: 1 bus info: usb@1:1.1.1 logical name: eth0 version: 3.00 serial: [remitted] size: 100Mbit/s capacity: 1Gbit/s capabilities: usb-2.10 ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=lan78xx duplex=full ip=[remitted] link=yes maxpower=2mA multicast=yes port=MII speed=100Mbit/s *-usb:1 description: Mass storage device product: Expansion vendor: Seagate physical id: 3 bus info: usb@1:1.1.3 logical name: scsi0 version: 7.07 serial: [remitted] capabilities: usb-2.10 scsi emulated scsi-host configuration: driver=usb-storage maxpower=500mA speed=480Mbit/s *-disk description: SCSI Disk product: Expansion vendor: Seagate physical id: 0.0.0 bus info: scsi@0:0.0.0 logical name: /dev/sda version: 0707 serial: [remitted] size: 931GiB (1TB) capabilities: partitioned partitioned:dos configuration: ansiversion=6 logicalsectorsize=512 sectorsize=512 signature=[remitted] *-volume description: EXT4 volume vendor: Linux physical id: 1 bus info: scsi@0:0.0.0,1 logical name: /dev/sda1 logical name: /media/jfmovies version: 1.0 serial: [remitted] size: 931GiB capacity: 931GiB capabilities: primary bootable journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized configuration: created=2020-05-18 19:20:35 filesystem=ext4 label=Media lastmountpoint=/media/noob/Media modified=2020-05-18 20:24:16 mount.fstype=ext4 mount.options=rw,relatime mounted=2020-05-18 20:24:16 state=mounted *-network DISABLED description: Wireless interface physical id: 2 logical name: wlan0 serial: [remitted] capabilities: ethernet physical wireless configuration: broadcast=yes driver=brcmfmac driverversion=7.45.154 firmware=01-4fbe0b04 multicast=yes wireless=IEEE 802.11