Jump to content

pb after update, Emby server won't start in Unraid


Go to solution Solved by Luke,

Recommended Posts

Posted

Getting a few errors pasting the log below and attaching (the port :80 is for a reverse proxy, the subdomain points to the correct port 8096)

Info App: Loading Emby.Server.Sync, Version=4.5.0.50, Culture=neutral, PublicKeyToken=null
Info App: Loading EmbyServer, Version=4.5.0.50, Culture=neutral, PublicKeyToken=null
Info SqliteUserRepository: Sqlite version: 3.32.3
Info SqliteUserRepository: Sqlite compiler options: COMPILER=gcc-8.3.0,ENABLE_COLUMN_METADATA,ENABLE_DBSTAT_VTAB,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS4,ENABLE_FTS5,ENABLE_GEOPOLY,ENABLE_JSON1,ENABLE_PREUPDATE_HOOK,ENABLE_RTREE,ENABLE_SESSION,ENABLE_UNLOCK_NOTIFY,ENABLE_UPDATE_DELETE_LIMIT,LIKE_DOESNT_MATCH_BLOBS,MAX_SCHEMA_RETRY=25,MAX_VARIABLE_NUMBER=250000,OMIT_LOOKASIDE,SECURE_DELETE,THREADSAFE=1
Info SqliteUserRepository: Default journal_mode for /config/data/users.db is wal
Info AuthenticationRepository: Default journal_mode for /config/data/authentication.db is wal
Info ActivityRepository: Default journal_mode for /config/data/activitylog.db is wal
Info SqliteDisplayPreferencesRepository: Default journal_mode for /config/data/displaypreferences.db is wal
Info App: Adding HttpListener prefix http://+:80/
Error HttpServer: Unable to start Kestrel.
*** Error Report ***
Version: 4.5.0.50
Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
Operating system: Linux version 4.19.107-Unraid (root@38721b48cdfb) (gcc version 9.2.0 (GCC)) #1 SMP Sun Mar 8 14:34:03 CDT 2020
Framework: .NET Core 3.1.7
OS/Process: x64/x64
Runtime: system/System.Private.CoreLib.dll
Processor count: 12
Data path: /config
Application path: /system
System.Net.Sockets.SocketException: System.Net.Sockets.SocketException (13): Permission denied
at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
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.SocketConnectionListener.Bind()
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.AnyIPListenOptions.BindAsync(AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(IServerAddressesFeature addresses, KestrelServerOptions serverOptions, ILogger logger, Func`2 createBinding)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
Source: System.Net.Sockets
TargetSite: Void UpdateStatusAfterSocketErrorAndThrowException(System.Net.Sockets.SocketError, System.String)

Error Main: Error in appHost.Init
*** Error Report ***
Version: 4.5.0.50
Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
Operating system: Linux version 4.19.107-Unraid (root@38721b48cdfb) (gcc version 9.2.0 (GCC)) #1 SMP Sun Mar 8 14:34:03 CDT 2020
Framework: .NET Core 3.1.7
OS/Process: x64/x64
Runtime: system/System.Private.CoreLib.dll
Processor count: 12
Data path: /config
Application path: /system
System.Net.Sockets.SocketException: System.Net.Sockets.SocketException (13): Permission denied
at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
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.SocketConnectionListener.Bind()
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.AnyIPListenOptions.BindAsync(AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(IServerAddressesFeature addresses, KestrelServerOptions serverOptions, ILogger logger, Func`2 createBinding)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.WebHost.StartAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.WebHost.Start()
at Emby.Server.Implementations.HttpServer.KestrelHost.KestrelListener.OnAddPrefixesComplete()
at Emby.Server.Implementations.ApplicationHost.Init()
at EmbyServer.HostedService.StartAsync(CancellationToken cancellationToken)
Source: System.Net.Sockets
TargetSite: Void UpdateStatusAfterSocketErrorAndThrowException(System.Net.Sockets.SocketError, System.String)

Info Main: Shutdown complete
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

embyerrorlog.txt

Posted

It looks like you set port 80 as the server's http port? Try setting that back to default of 8096 and see if that allows you to start.

Posted (edited)
2 minutes ago, Luke said:

It looks like you set port 80 as the server's http port? Try setting that back to default of 8096 and see if that allows you to start.

using a reverse proxy via nginx. the port has to be set as 80 in the app settings for it to work, but the reverse proxy url goes to 8096.

so for example... https://emby.myurl.com goes to my https://serveripaddress:8096

This set up has been working fine until this morning.

Edited by Sab39
Posted

Guess it couldn't hurt to change Public Port and httpServerPortNumber to 8096 (http) and  PublicHttpsPort and HttpsPortNumber to 8920 (https) and see if it fixes it? Just don't want to completely kill what I've built.

 

<?xml version="1.0"?>
<ServerConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <EnableDebugLevelLogging>false</EnableDebugLevelLogging>
  <EnableAutoUpdate>true</EnableAutoUpdate>
  <LogFileRetentionDays>3</LogFileRetentionDays>
  <RunAtStartup>true</RunAtStartup>
  <IsStartupWizardCompleted>true</IsStartupWizardCompleted>
  <CachePath />
  <EnableUPnP>false</EnableUPnP>
  <PublicPort>80</PublicPort>
  <PublicHttpsPort>443</PublicHttpsPort>
  <HttpServerPortNumber>80</HttpServerPortNumber>
  <HttpsPortNumber>443</HttpsPortNumber>
  <EnableHttps>true</EnableHttps>
  <IsPortAuthorized>true</IsPortAuthorized>
  <AutoRunWebApp>true</AutoRunWebApp>
  <EnableRemoteAccess>true</EnableRemoteAccess>
  <LogAllQueryTimes>false</LogAllQueryTimes>
  <EnableCaseSensitiveItemIds>true</EnableCaseSensitiveItemIds>

Posted

So then you should have 80 as your nginx port and 8096 as your emby port...so that means try what i suggested.

  • Solution
Posted

You have a port conflict by assigning both emby and nginx to port 80. The previous version was more forgiving by catching that and automatically switching back to 8096. We'll look at restoring that, but in the meantime you can resolve this on your own by setting emby back to 8096.

Posted
14 minutes ago, Luke said:

You have a port conflict by assigning both emby and nginx to port 80. The previous version was more forgiving by catching that and automatically switching back to 8096. We'll look at restoring that, but in the meantime you can resolve this on your own by setting emby back to 8096.

just do it in that system file i copied and pasted above right?

Posted

Yes, make sure emby server is shutdown first.

Posted
3 minutes ago, Luke said:

Yes, make sure emby server is shutdown first.

worked like a charm. amazing. Thank you so much.

For anyone else, just modify the system.xml in the config folder and change the http ports to 8096 and the http ports to 8920. Like Luke said, make sure EmbyServer is stopped before doing this. Restart emby server with the new server.xml file in the config folder. Then restart your letsencrypt/swag docker to get the reverse proxy working again. Then you're all set.

 

Thanks again Luke. Sorry for the late response. Had to feed the kids lunch during the e-learning break from school. lol

Posted

I had it break again for some reason last night, but got it working again. I would only use the settings below if you are using a reverse proxy with the letsencrpyt/swag docker the way spaceinvaderone's youtube tutorial showed how to set it up. I hope this helps folks with the same set up as me.

Step 1:

For the LetsEncrypt/Swag>nginx>proxy-confs> emby.subdomain.conf file:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name emby.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        include /config/nginx/proxy.conf;
        resolver 127.0.0.11 valid=30s;
        set $upstream_app EmbyServer;
        set $upstream_port 8096;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
   }
}

 

Step 2:

Make sure the emby docker is stopped like Luke said and then...

In the EmbyServer>config>system.xml file copy below (if you've been locked out like I was, you may need to make the public port 8096 and the publichttpsport 8902 just to get you into the emby webui first and log into emby on the local network, and then skip down to the emby webui settings. I think the system.xml will change once you set the settings in the emby webui, but Luke can correct me if I'm wrong on if that file will automatically change to the settings set in the webui):

 <EnableDebugLevelLogging>false</EnableDebugLevelLogging>
  <EnableAutoUpdate>true</EnableAutoUpdate>
  <LogFileRetentionDays>3</LogFileRetentionDays>
  <RunAtStartup>true</RunAtStartup>
  <IsStartupWizardCompleted>true</IsStartupWizardCompleted>
  <CachePath />
  <EnableUPnP>true</EnableUPnP>
  <PublicPort>80</PublicPort>
  <PublicHttpsPort>443</PublicHttpsPort>
  <HttpServerPortNumber>8096</HttpServerPortNumber>
  <HttpsPortNumber>8920</HttpsPortNumber>
  <EnableHttps>true</EnableHttps>
  <IsPortAuthorized>true</IsPortAuthorized>
  <AutoRunWebApp>true</AutoRunWebApp>
  <EnableRemoteAccess>true</EnableRemoteAccess>
  <LogAllQueryTimes>false</LogAllQueryTimes>
  <EnableCaseSensitiveItemIds>true</EnableCaseSensitiveItemIds>

 

Step 3:

In the Emby Server Management WebUI settings:

Click on Network

-Local http port is 8096

-Local https port is 8920 (may need to add this in your docker settings as an additional port)

-Remote http port is 80

-Remote https port is 443 (the reason http is 80 and https is 443 is because your reverse proxy nginx file is already using the plain url https://emby.yoururl.com to go to the 8096 port via https even though we have the settings for https to go to 8902. so by using https://emby.yoururl.com:443 you're essentially still using https://emby.yoururl.com like the nginx file is asking for the 443 on the end is essentially like not having it there at all). I'm probably explaining this poorly, but if you set up your reverse proxy like spaceinvaderone did in his unraid video tutorials using the letsencrypt docker (now swag), then this method will work for you.

-add your external domain

-Secure Connection Mode: Handled by reverse proxy

-check the box

Step 4

-Restart the letsencrypt/swag docker

Step 5

-Restart the Emby docker

Step 6

-Try your url from an external/cell network and it should go to your login page

Good Luck

Posted

Thanks for following up with this info. I'm looking at restoring the more forgiving behavior that we had before where it will automatically revert back to the default ports.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...