2024-07-14, 04:59 PM
(This post was last modified: 2024-07-14, 07:10 PM by Kernal 64. Edited 2 times in total.)
I'm running Linux Mint and I installed Jellyfin via the Software Manager. It had been running fine for months, but when I installed the latest update, Jellyfin can no longer load the web interface, rendering it useless. Here's the output I get when running "jellyfin" from the command line:
The directory it's looking for is empty. I've been searching online for a solution and found some other people with this error, but the fixes that worked for them doesn't work for me. The solutions I've seen suggested were either:
1) They found that the web interface files were hosted elsewhere and copied them to the directory above.
2) Run Jellyfin with a command line option that tells the program where to look.
In both cases, the result I got was identical:
In my troubleshooting efforts, I tried to update Jellyfin from the official repository. It seems to have updated the software, but had no effect on my problem. I've tried purging and reinstalling the jellyfin-web package, which also had no effect. I'm not sure what else to try and I haven't been able to find any other possible solutions around the web. I've thought about uninstalling it from the Software Center and using the curl command in the official documentation to reinstall it, but I don't know if that will cause me to lose all my user info and library metadata, which I'd like to avoid, if possible. Does anyone have any ideas on how to fix this or do I need to go scorched earth?
Code:
[12:46:58] [INF] [1] Main: Jellyfin version: 10.9.7
[12:46:58] [INF] [1] Main: Environment Variables: ["[JELLYFIN_LOG_DIR, /home/kernal64/.local/share/jellyfin/log]"]
[12:46:58] [INF] [1] Main: Arguments: ["/usr/lib/jellyfin/bin/jellyfin.dll"]
[12:46:58] [INF] [1] Main: Operating system: Linux Mint 21.2
[12:46:58] [INF] [1] Main: Architecture: X64
[12:46:58] [INF] [1] Main: 64-Bit Process: True
[12:46:58] [INF] [1] Main: User Interactive: True
[12:46:58] [INF] [1] Main: Processor count: 8
[12:46:58] [INF] [1] Main: Program data path: /home/kernal64/.local/share/jellyfin
[12:46:58] [INF] [1] Main: Log directory path: /home/kernal64/.local/share/jellyfin/log
[12:46:58] [INF] [1] Main: Config directory path: /home/kernal64/.config/jellyfin
[12:46:58] [INF] [1] Main: Cache path: /home/kernal64/.cache/jellyfin
[12:46:58] [INF] [1] Main: Web resources path: /usr/lib/jellyfin/bin/jellyfin-web
[12:46:58] [INF] [1] Main: Application directory: /usr/lib/jellyfin/bin/
[12:46:58] [ERR] [1] Main: The server is expected to host the web client, but the provided content directory is either invalid or empty: /usr/lib/jellyfin/bin/jellyfin-web. If you do not want to host the web client with the server, you may set the '--nowebclient' command line flag, or set'hostwebclient=false' in your config settings
The directory it's looking for is empty. I've been searching online for a solution and found some other people with this error, but the fixes that worked for them doesn't work for me. The solutions I've seen suggested were either:
1) They found that the web interface files were hosted elsewhere and copied them to the directory above.
2) Run Jellyfin with a command line option that tells the program where to look.
In both cases, the result I got was identical:
Code:
[12:34:44] [INF] [1] Main: Jellyfin version: 10.9.7
[12:34:44] [INF] [1] Main: Environment Variables: ["[JELLYFIN_LOG_DIR, /home/kernal64/.local/share/jellyfin/log]"]
[12:34:44] [INF] [1] Main: Arguments: ["/usr/lib/jellyfin/bin/jellyfin.dll", "--webdir=/usr/share/jellyfin/web"]
[12:34:44] [INF] [1] Main: Operating system: Linux Mint 21.2
[12:34:44] [INF] [1] Main: Architecture: X64
[12:34:44] [INF] [1] Main: 64-Bit Process: True
[12:34:44] [INF] [1] Main: User Interactive: True
[12:34:44] [INF] [1] Main: Processor count: 8
[12:34:44] [INF] [1] Main: Program data path: /home/kernal64/.local/share/jellyfin
[12:34:44] [INF] [1] Main: Log directory path: /home/kernal64/.local/share/jellyfin/log
[12:34:44] [INF] [1] Main: Config directory path: /home/kernal64/.config/jellyfin
[12:34:44] [INF] [1] Main: Cache path: /home/kernal64/.cache/jellyfin
[12:34:44] [INF] [1] Main: Web resources path: /usr/share/jellyfin/web
[12:34:44] [INF] [1] Main: Application directory: /usr/lib/jellyfin/bin/
[12:34:44] [INF] [1] Jellyfin.Server.Migrations.MigrationRunner: Marking following migrations as applied because this is a fresh install: ["CreateNetworkConfiguration", "MigrateMusicBrainzTimeout", "MigrateNetworkConfiguration"]
[12:34:44] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /home/kernal64/.cache/jellyfin
[12:34:44] [INF] [1] Emby.Server.Implementations.ApplicationHost: Loading assemblies
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN exclusions: []
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Used LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered interface addresses: ["127.0.0.1", "192.168.1.190", "100.96.178.30", "10.96.0.2", "100.85.0.1"]
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Bind Addresses ["0.0.0.0"]
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Remote IP filter is Allowlist
[12:34:44] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered subnets: []
[12:34:45] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: TMDb 10.9.7.0
[12:34:45] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: Studio Images 10.9.7.0
[12:34:45] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: OMDb 10.9.7.0
[12:34:45] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: MusicBrainz 10.9.7.0
[12:34:45] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: AudioDB 10.9.7.0
[12:34:45] [INF] [1] Jellyfin.Server.Migrations.MigrationRunner: Marking following migrations as applied because this is a fresh install: ["DisableTranscodingThrottling", "CreateLoggingConfigHeirarchy", "MigrateActivityLogDatabase", "RemoveDuplicateExtras", "MigrateUserDatabase", "MigrateDisplayPreferencesDatabase", "RemoveDownloadImagesInAdvance", "MigrateAuthenticationDatabase", "FixPlaylistOwner", "MigrateRatingLevels", "FixAudioData"]
[12:34:45] [INF] [1] Main: Kestrel is listening on 0.0.0.0
[12:34:45] [ERR] [1] Jellyfin.Networking.AutoDiscoveryHost: Unable to bind to 0.0.0.0:7359
System.Net.Sockets.SocketException (98): Address already in use
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Jellyfin.Networking.AutoDiscoveryHost.ListenForAutoDiscoveryMessage(IPAddress listenAddress, CancellationToken cancellationToken)
[12:34:46] [WRN] [1] Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware: The WebRootPath was not found: /home/kernal64/wwwroot. Static files may be unavailable.
[12:34:46] [ERR] [1] Microsoft.Extensions.Hosting.Internal.Host: Hosting failed to start
System.IO.IOException: Failed to bind to address http://0.0.0.0:8096: address already in use.
---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use
---> System.Net.Sockets.SocketException (98): Address already in use
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(ListenOptions[] listenOptions, AddressBindContext context, Func`2 useHttps, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken token)
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
[12:34:46] [ERR] [1] Main: Kestrel failed to start! This is most likely due to an invalid address or port bind - correct your bind configuration in network.xml and try again
[12:34:46] [FTL] [1] Main: Error while starting server
System.IO.IOException: Failed to bind to address http://0.0.0.0:8096: address already in use.
---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use
---> System.Net.Sockets.SocketException (98): Address already in use
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(ListenOptions[] listenOptions, AddressBindContext context, Func`2 useHttps, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken token)
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Program.StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
[12:34:46] [INF] [1] Main: Running query planner optimizations in the database... This might take a while
[12:34:46] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing CoreAppHost
[12:34:46] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing MusicBrainzArtistProvider
[12:34:46] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing MusicBrainzAlbumProvider
[12:34:46] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing PluginManager
In my troubleshooting efforts, I tried to update Jellyfin from the official repository. It seems to have updated the software, but had no effect on my problem. I've tried purging and reinstalling the jellyfin-web package, which also had no effect. I'm not sure what else to try and I haven't been able to find any other possible solutions around the web. I've thought about uninstalling it from the Software Center and using the curl command in the official documentation to reinstall it, but I don't know if that will cause me to lose all my user info and library metadata, which I'd like to avoid, if possible. Does anyone have any ideas on how to fix this or do I need to go scorched earth?