How to fix "WebRootPath was not found" error - theolaa - 2024-05-13
Hello, I recently updated my Jellyfin server to 10.9.1 which runs on a Linux Mint 20.3 box.
Previously there was no issue starting Jellyfin as a service, but now I am getting this error when starting Jellyfin:
Code: May 12 22:58:42 THEO-FILE-SERVER jellyfin[1282]: [22:58:42] [WRN] The WebRootPath was not found: /var/lib/jellyfin/wwwroot. Static files may be unavailable.
May 12 22:58:42 THEO-FILE-SERVER jellyfin[1282]: [22:58:42] [ERR] Hosting failed to start
So it seems there is some issue with hosting the web client, but I don't know how to fix this.
I would be very grateful if anyone has some advice for this situation.
Thanks,
Theo L
Here is the full stack trace (retrieved using sudo systemctl status jellyfin -n 100 ):
Code: May 12 23:35:27 THEO-FILE-SERVER systemd[1]: Started Jellyfin Media Server.
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Jellyfin version: 10.9.1
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Environment Variables: ["[JELLYFIN_ADDITIONAL_OPTS, ]", "[JELLYFIN_FFMPEG_OPT, --ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg]","[JELLYFIN_DATA_DIR, /var/lib/jellyfin]", "[JELLYFIN_WEB_OPT, --webdir=/usr/share/jellyfin/web]", "[JELLYFIN_CONFIG_DIR, /etc/jellyfin]", "[JELLYFIN_LOG_DIR, /var/log/jellyfin]", "[JELLYFIN_USER, jellyfin]","[JELLYFIN_ARGS, $JELLYFIN_WEB_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_SERVICE_OPT $JELLYFIN_NOWEBAPP_OPT $JELLFIN_ADDITIONAL_OPTS --datadir $JELLYFIN_DATA_DIR --configdir $JELLYFIN_CONFIG_DIR --logdir $JELLYFIN_LOG_DIR --cachedir $JELLYFIN_CACHE_DIR]", "[JELLYFIN_CACHE_DIR, /var/cache/jellyfin]"]
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Arguments: ["/usr/lib/jellyfin/bin/jellyfin.dll", "--webdir=/usr/share/jellyfin/web", "--ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg"]
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Operating system: Linux Mint 20.3
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Architecture: X64
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] 64-Bit Process: True
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] User Interactive: True
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Processor count: 8
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Program data path: /var/lib/jellyfin
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Log directory path: /var/log/jellyfin
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Config directory path: /etc/jellyfin
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Cache path: /var/cache/jellyfin
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Web resources path: /usr/share/jellyfin/web
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Application directory: /usr/lib/jellyfin/bin/
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Setting cache path: /var/cache/jellyfin
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Loading assemblies
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Loaded assembly Jellyfin.Plugin.OpenSubtitles, Version=20.0.0.0, Culture=neutral, PublicKeyToken=null from /var/lib/jellyfin/plugins/Open Subtitles_20.0.0.0/Jellyfin.Plugin.OpenSubtitles.dll
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Loaded assembly Jellyfin.Plugin.SubtitleExtract, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null from /var/lib/jellyfin/plugins/Subtitle Extract_4.0.0.0/Jellyfin.Plugin.SubtitleExtract.dll
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Defined LAN addresses: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Defined LAN exclusions: []
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Using LAN addresses: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Using bind addresses: ["127.0.0.1", "192.168.0.100"]
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Remote IP filter is Allowlist
May 12 23:35:30 THEO-FILE-SERVER jellyfin[1378]: [23:35:30] [INF] Filter list: []
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: Open Subtitles 20.0.0.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: Subtitle Extract 4.0.0.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: TMDb 10.9.1.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: Studio Images 10.9.1.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: OMDb 10.9.1.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: MusicBrainz 10.9.1.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Loaded plugin: AudioDB 10.9.1.0
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Kestrel is listening on 127.0.0.1
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Kestrel is listening on 192.168.0.100
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Kestrel is listening on 10.5.0.2
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [WRN] The WebRootPath was not found: /var/lib/jellyfin/wwwroot. Static files may be unavailable.
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [ERR] Hosting failed to start
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: System.Net.Sockets.SocketException (99): Cannot assign requested address
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at System.Net.Sockets.Socket.Bind(EndPoint localEP)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: --- End of stack trace from previous location ---
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(ListenOptions[] listenOptions, AddressBindContext context, Func`2 useHttps, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken token)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [ERR] 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
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [FTL] Error while starting server
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: System.Net.Sockets.SocketException (99): Cannot assign requested address
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at System.Net.Sockets.Socket.Bind(EndPoint localEP)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: --- End of stack trace from previous location ---
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(ListenOptions[] listenOptions, AddressBindContext context, Func`2 useHttps, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken token)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: at Jellyfin.Server.Program.StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Running query planner optimizations in the database... This might take a while
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Disposing CoreAppHost
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Disposing MusicBrainzArtistProvider
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Disposing MusicBrainzAlbumProvider
May 12 23:35:34 THEO-FILE-SERVER jellyfin[1378]: [23:35:34] [INF] Disposing PluginManager
May 12 23:35:34 THEO-FILE-SERVER systemd[1]: jellyfin.service: Succeeded.
RE: How to fix "WebRootPath was not found" error - TheDreadPirate - 2024-05-13
The WebRootPath message is harmless. I also see it in my log and it hasn't been a problem.
The actual problem is this message.
Code: System.Net.Sockets.SocketException (99): Cannot assign requested address
This sounds like you have another jellyfin instance running on the same port. Or you specified a bind IP that is no longer available.
RE: How to fix "WebRootPath was not found" error - theolaa - 2024-05-13
(2024-05-13, 11:39 AM)TheDreadPirate Wrote: This sounds like you have another jellyfin instance running on the same port. Or you specified a bind IP that is no longer available.
Interesting, do you know where I can find the config for the network settings?
RE: How to fix "WebRootPath was not found" error - TheDreadPirate - 2024-05-13
/etc/jellyfin/network.xml has all your network related configs, including ports, bind addresses, LAN addresses, etc.
RE: How to fix "WebRootPath was not found" error - theolaa - 2024-05-13
(2024-05-13, 04:38 PM)TheDreadPirate Wrote: /etc/jellyfin/network.xml has all your network related configs, including ports, bind addresses, LAN addresses, etc.
Thanks a bunch. I'll look into this when I'm home later.
RE: How to fix "WebRootPath was not found" error - theolaa - 2024-05-14
(2024-05-13, 04:38 PM)TheDreadPirate Wrote: /etc/jellyfin/network.xml has all your network related configs, including ports, bind addresses, LAN addresses, etc.
Here is my network.xml file:
Code: <?xml version="1.0" encoding="utf-8"?>
<NetworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BaseUrl />
<EnableHttps>false</EnableHttps>
<RequireHttps>false</RequireHttps>
<CertificatePath />
<CertificatePassword />
<InternalHttpPort>8096</InternalHttpPort>
<InternalHttpsPort>8920</InternalHttpsPort>
<PublicHttpPort>8096</PublicHttpPort>
<PublicHttpsPort>8920</PublicHttpsPort>
<AutoDiscovery>true</AutoDiscovery>
<EnableUPnP>false</EnableUPnP>
<EnableIPv4>true</EnableIPv4>
<EnableIPv6>false</EnableIPv6>
<EnableRemoteAccess>true</EnableRemoteAccess>
<LocalNetworkSubnets />
<LocalNetworkAddresses />
<KnownProxies />
<IgnoreVirtualInterfaces>true</IgnoreVirtualInterfaces>
<VirtualInterfaceNames>
<string>veth</string>
</VirtualInterfaceNames>
<EnablePublishedServerUriByRequest>false</EnablePublishedServerUriByRequest>
<PublishedServerUriBySubnet />
<RemoteIPFilter />
<IsRemoteIPFilterBlacklist>false</IsRemoteIPFilterBlacklist>
</NetworkConfiguration>
I ran a port scanner and I can confirm that I don't have any services running on either port 8096 or 8920 . What did you mean earlier about specifying a bind IP that is no longer available? The file doesn't have any IPs specified anywhere, is it maybe missing something somewhere then?
RE: How to fix "WebRootPath was not found" error - theolaa - 2024-05-14
I believe I have fixed the issue. I read that removing the network.xml file will cause the server to regenerate it on next startup, so I moved it to my Documents as a backup, and rebooted my machine. The jellyfin service then regenerated its network.xml file and successfully started itself. Thank you for your advice!
|