Jump to content

Docker


Luke

Recommended Posts

alucryd

It's not a bug, it's a feature. We just push emby/embyserver because it's easier, so whatever hasn't yet been purged will be updated because apparently docker isn't smart enough to tell that a container hash hasn't changed, and apparently your container manager is equally dumb. I just duplicated code to make it more selective, you shouldn't get those warnings anymore.

Link to comment
Share on other sites

  • 2 weeks later...
downhouse

I'm not sure about where to post my issue, but I'm running emby in a docker container on my Synology NAS so I'm putting it here to begin with.

The container is running the latest docker image, server version 4.0.2.0, and I'm connecting to it using Kodi 17.6 with the emby beta addon.

 

The problems I'm having are:

  • The library is not updated correctly, episodes of TV shows are correctly marked as watched after finishing, but the season folders are never marked as watched. The season folders can't be manually marked as watched either. This results in me having a bunch of empty season folders visible while all the contents have been marked as watched (when showing only unwatched content). I.e. some parts of the library appear to not sync correctly.
  • The emby addon doesn't respect some settings in Kodi such as not showing the tv show season folder if there is only one season with unwatched episodes.
  • Movie collections are not synced and shown in the movie library. However movies are correctly marked as watched.

All of these issues started after updating to the new database according to the popup and I've tried completely removing emby and starting over, and the same issue is there.

Are these known issues or am I having some local problems?

Edited by downhouse
Link to comment
Share on other sites

I currently have emby as a docker in unraid.  Its in host mode and all working fine for ages.

I would like to change the docker to use an IP address instead so I can route emby differently (and QOS rules).

If I edit the docker template, change to custom:br for the network and give it a fixed IP address address then restart - will emby survive that ?

Is the IP address stored anywhere in the emby database ?

Anything else I should know about ?

I dont want to lose anything at all and if there is a remote chance of that, I wont bother.

Thanks.

Link to comment
Share on other sites

bozrdnag

I searched expecting any easy answer for this but was surprised that I didn't find much.  Is there a way to change the permission/ownership for the metadata files that Emby creates (nfo and artwork)?  I am running Emby Server as a Docker container in unRaid and I whenever I decide to delete a movie from my server I always get a permission denied message because of the metadata files.  I would rather they get the same permission/ownership that the rest of my files get on the server (0666 and nobody/users) rather than the 0644 and daemon/daemon that they current get when Emby creates them.

Link to comment
Share on other sites

BAlGaInTl

I searched expecting any easy answer for this but was surprised that I didn't find much.  Is there a way to change the permission/ownership for the metadata files that Emby creates (nfo and artwork)?  I am running Emby Server as a Docker container in unRaid and I whenever I decide to delete a movie from my server I always get a permission denied message because of the metadata files.  I would rather they get the same permission/ownership that the rest of my files get on the server (0666 and nobody/users) rather than the 0644 and daemon/daemon that they current get when Emby creates them.

What user are you running the emby docker as? You should be able to take care of this with groups I think.

  • Like 1
Link to comment
Share on other sites

vaise

I searched expecting any easy answer for this but was surprised that I didn't find much.  Is there a way to change the permission/ownership for the metadata files that Emby creates (nfo and artwork)?  I am running Emby Server as a Docker container in unRaid and I whenever I decide to delete a movie from my server I always get a permission denied message because of the metadata files.  I would rather they get the same permission/ownership that the rest of my files get on the server (0666 and nobody/users) rather than the 0644 and daemon/daemon that they current get when Emby creates them.

 

Dunno if it helps, but I regularly run the docker safe new permissions process on my unraid.  I have not had this issue.  

Link to comment
Share on other sites

mrwizardno2

I've been trying to get Emby running in Azure Container Instances and encounter an issue with SQLite when I try to set the config path.

 

When I try to map the /config directory to my Azure Storage File Share (empty, newly created for this purpose), the container will error out and stop. Emby Server will try to start up and begin unpacking files into the share, but seems to encounter some kind of issue with the DB. If I leave the path unmapped, the container will start but leave me with non-persistent settings. 

 

I scoured the Forums here and Luke usually points people at a reboot or says that there are multiple instances of the server running - neither of which apply here unless the Docker container is somehow starting two instances (not likely) in its default state. :-)

 

Here's how I've been creating the container to produce the issue:

$storageAccount=Get-AzStorageAccount -Name testacctmedia -ResourceGroupName test
$secPasswd = ConvertTo-SecureString (Get-AzStorageAccountKey -Name testacctmedia -ResourceGroupName test).Value[0] -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("testacctmedia", $secPasswd)

New-AzContainerGroup -ResourceGroupName test -Name embyserver -Image emby/embyserver:latest -OsType Linux -DnsNameLabel embyservertest -IpAddressType Public -Port @(8096,8920) -AzureFileVolumeShareName config -AzureFileVolumeMountPath /config -AzureFileVolumeAccountCredential $cred -MemoryInGB 4 -Cpu 4 -RestartPolicy Never   

Azure will pull the docker container and start it, but it will eventually terminate with the following log:

Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Server.Implementations, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.LiveTV, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Server.MediaEncoding, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Dlna, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading MediaBrowser.LocalMetadata, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Notifications, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Codecs.Dxva, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Codecs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Server.Connect, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading Emby.Server.Sync, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info App: Loading EmbyServer, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Info SqliteUserRepository: Sqlite version: 3.26.0
Info SqliteUserRepository: Sqlite compiler options: COMPILER=gcc-6.3.0,ENABLE_COLUMN_METADATA,ENABLE_DBSTAT_VTAB,ENABLE_FTS3_PARENTHESIS,ENABLE_FTS3_TOKENIZER,ENABLE_FTS4,ENABLE_FTS5,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 delete
Error Main: Error in appHost.Init
	*** Error Report ***
	Version: 4.0.2.0
	Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
	Operating system: Unix 4.15.0.1039
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Processor count: 4
	Program data path: /config
	Application directory: /system
	SQLitePCL.pretty.SQLiteException: Busy: database is locked
	SQLitePCL.pretty.SQLiteException: Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.
	   at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
	   at SQLitePCL.pretty.StatementImpl.MoveNext()
	   at SQLitePCL.pretty.DatabaseConnection.ExecuteAll(IDatabaseConnection This, String sql)
	   at Emby.Sqlite.BaseSqliteRepository.RunDefaultInitialization(ManagedConnection db)
	   at Emby.Server.Implementations.Data.SqliteUserRepository.Initialize()
	   at Emby.Server.Implementations.ApplicationHost.GetUserRepository()
	   at Emby.Server.Implementations.ApplicationHost.RegisterResources(FfmpegConfiguration ffmpegInfo)
	   at Emby.Server.Implementations.ApplicationHost.Init()
	   at EmbyServer.Program.InitAppHost(CoreAppHost appHost, ILogger logger)
	Source: SQLitePCL.pretty
	TargetSite: Void CheckOk(SQLitePCL.sqlite3, Int32)
	   at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
	   at SQLitePCL.pretty.StatementImpl.MoveNext()
	   at SQLitePCL.pretty.DatabaseConnection.ExecuteAll(IDatabaseConnection This, String sql)
	   at Emby.Sqlite.BaseSqliteRepository.RunDefaultInitialization(ManagedConnection db)
	   at Emby.Server.Implementations.Data.SqliteUserRepository.Initialize()
	   at Emby.Server.Implementations.ApplicationHost.GetUserRepository()
	   at Emby.Server.Implementations.ApplicationHost.RegisterResources(FfmpegConfiguration ffmpegInfo)
	   at Emby.Server.Implementations.ApplicationHost.Init()
	   at EmbyServer.Program.InitAppHost(CoreAppHost appHost, ILogger logger)
	
Error Main: UnhandledException
	*** Error Report ***
	Version: 4.0.2.0
	Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
	Operating system: Unix 4.15.0.1039
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Processor count: 4
	Program data path: /config
	Application directory: /system
	SQLitePCL.pretty.SQLiteException: Busy: database is locked
	SQLitePCL.pretty.SQLiteException: Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.
	   at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
	   at SQLitePCL.pretty.StatementImpl.MoveNext()
	   at SQLitePCL.pretty.DatabaseConnection.ExecuteAll(IDatabaseConnection This, String sql)
	   at Emby.Sqlite.BaseSqliteRepository.RunDefaultInitialization(ManagedConnection db)
	   at Emby.Server.Implementations.Data.SqliteUserRepository.Initialize()
	   at Emby.Server.Implementations.ApplicationHost.GetUserRepository()
	   at Emby.Server.Implementations.ApplicationHost.RegisterResources(FfmpegConfiguration ffmpegInfo)
	   at Emby.Server.Implementations.ApplicationHost.Init()
	   at EmbyServer.Program.InitAppHost(CoreAppHost appHost, ILogger logger)
	   at EmbyServer.Program.RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, IEnvironmentInfo environmentInfo, StartupOptions options)
	   at EmbyServer.Program.Main(String[] args)
	Source: SQLitePCL.pretty
	TargetSite: Void CheckOk(SQLitePCL.sqlite3, Int32)
	   at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
	   at SQLitePCL.pretty.StatementImpl.MoveNext()
	   at SQLitePCL.pretty.DatabaseConnection.ExecuteAll(IDatabaseConnection This, String sql)
	   at Emby.Sqlite.BaseSqliteRepository.RunDefaultInitialization(ManagedConnection db)
	   at Emby.Server.Implementations.Data.SqliteUserRepository.Initialize()
	   at Emby.Server.Implementations.ApplicationHost.GetUserRepository()
	   at Emby.Server.Implementations.ApplicationHost.RegisterResources(FfmpegConfiguration ffmpegInfo)
	   at Emby.Server.Implementations.ApplicationHost.Init()
	   at EmbyServer.Program.InitAppHost(CoreAppHost appHost, ILogger logger)
	   at EmbyServer.Program.RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, IEnvironmentInfo environmentInfo, StartupOptions options)
	   at EmbyServer.Program.Main(String[] args)
	
UnhandledException
SQLitePCL.pretty.SQLiteException: Busy: database is locked
SQLitePCL.pretty.SQLiteException: Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.
   at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
   at SQLitePCL.pretty.StatementImpl.MoveNext()
   at SQLitePCL.pretty.DatabaseConnection.ExecuteAll(IDatabaseConnection This, String sql)
   at Emby.Sqlite.BaseSqliteRepository.RunDefaultInitialization(ManagedConnection db)
   at Emby.Server.Implementations.Data.SqliteUserRepository.Initialize()
   at Emby.Server.Implementations.ApplicationHost.GetUserRepository()
   at Emby.Server.Implementations.ApplicationHost.RegisterResources(FfmpegConfiguration ffmpegInfo)
   at Emby.Server.Implementations.ApplicationHost.Init()
   at EmbyServer.Program.InitAppHost(CoreAppHost appHost, ILogger logger)
   at EmbyServer.Program.RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, IEnvironmentInfo environmentInfo, StartupOptions options)
   at EmbyServer.Program.Main(String[] args)
Source: SQLitePCL.pretty
TargetSite: Void CheckOk(SQLitePCL.sqlite3, Int32)
   at SQLitePCL.pretty.SQLiteException.CheckOk(sqlite3 db, Int32 rc)
   at SQLitePCL.pretty.StatementImpl.MoveNext()
   at SQLitePCL.pretty.DatabaseConnection.ExecuteAll(IDatabaseConnection This, String sql)
   at Emby.Sqlite.BaseSqliteRepository.RunDefaultInitialization(ManagedConnection db)
   at Emby.Server.Implementations.Data.SqliteUserRepository.Initialize()
   at Emby.Server.Implementations.ApplicationHost.GetUserRepository()
   at Emby.Server.Implementations.ApplicationHost.RegisterResources(FfmpegConfiguration ffmpegInfo)
   at Emby.Server.Implementations.ApplicationHost.Init()
   at EmbyServer.Program.InitAppHost(CoreAppHost appHost, ILogger logger)
   at EmbyServer.Program.RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, IEnvironmentInfo environmentInfo, StartupOptions options)
   at EmbyServer.Program.Main(String[] args)


[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] syncing disks.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

Anyone have any guidance on how to resolve this? 

 

Thanks,

Jimmie

 

 

Link to comment
Share on other sites

The server opens up the database in exclusive mode, so that generally means that something else already has it open, for whatever reason.

Link to comment
Share on other sites

mrwizardno2

Strange. How could that be possible given this is greenfield setup? The filesystem is empty at container startup.

Link to comment
Share on other sites

mrwizardno2

I don't see how there could be anything else with a lock open. This is entirely brand new. I originally thought maybe I had spun down a container without cleaning up, so I trashed the file share I was using and created a new, empty one. Sadly, the behavior is the same. The only thing running is the emby container which was just pulled and started. 

Edited by mrwizardno2
Link to comment
Share on other sites

egandt

Just pulled the latest docker image:

docker pull emby/embyserver:latest

However upon restarting the container

docker restart emby

However the version upon restarting still shows as 3.5.3.0 while saying that 4.0.2.0 is available.

 

 

 What is needed to upgrade to 4.0.2.0, as this normally works for images.

 

ERIC

Edited by egandt
Link to comment
Share on other sites

alucryd

You can't upgrade a named container with just a pull, it will still point to the image it had when it was created. You need to delete it and recreate it.

Link to comment
Share on other sites

zeroidea

If portainer is installed to manage containers, upgrades are a three-click process: 1. Click edit; 2.) Click deploy 3.) Confirm replacement of old container.

Watchtower can supposedly automate this process.

Portainer also has a templating system and its worth making one for emby.

Edited by zeroidea
Link to comment
Share on other sites

bozrdnag

What user are you running the emby docker as? You should be able to take care of this with groups I think.

 

 

The UID variable in the container settings is set to 99 and the GID is set to 100. Same as Unraid.

 

Dunno if it helps, but I regularly run the docker safe new permissions process on my unraid.  I have not had this issue.

 

Not sure what that is.

Link to comment
Share on other sites

BAlGaInTl

If portainer is installed to manage containers, upgrades are a three-click process: 1. Click edit; 2.) Click deploy 3.) Confirm replacement of old container.

 

Watchtower can supposedly automate this process.

 

Portainer also has a templating system and its worth making one for emby.

I use watchtower to keep my containers updated. It works quite well.

  • Like 1
Link to comment
Share on other sites

bradsjm

I don't see how there could be anything else with a lock open. This is entirely brand new. I originally thought maybe I had spun down a container without cleaning up, so I trashed the file share I was using and created a new, empty one. Sadly, the behavior is the same. The only thing running is the emby container which was just pulled and started. 

 

Azure containers use SMB file shares and SQL LITE needs locks that SMB nor NFS will provide so it won't work or even if it did you'll find it gets corrupted.

Link to comment
Share on other sites

aptalca

I noticed that there is no docker build for 4.0.3.0 yet. Just wondering if it's been overlooked or if there is an issue. The fix it contains seems to be a super important one (accidental media deletion bug? yikes)

 

Thanks

Link to comment
Share on other sites

should have been day1 across all supported platforms.

sitting here still waiting for critical fix isn't good enough.

Link to comment
Share on other sites

BAlGaInTl

should have been day1 across all supported platforms.

sitting here still waiting for critical fix isn't good enough.

Multiple safeguards have been suggested in the meantime. If you run it in a docker, and you have the type of folders affected there are a couple of easy ones:

 

1. Disable the delete feature for users. (I actually have this disabled anyway except for a single admin account. Even though I don't have affected folders).

 

or

 

2. Change the mount of shares in docker to read only.

 

The second safeguard only takes a minute to complete until you get the patch.

Link to comment
Share on other sites

skobkin

Today I tried to update docker image of my container to the latest beta image (probably 0316f41ea06938f1ba49f6ba39db4d223d9aa2b6c6a703f605ff51aac3e97608 for now). But looks like it's not working. I tried to gradually downgrade image versions using tags from Docker Hub and last version which is working for me is 4.1.0.9.

All newer versions are ending with something like this in the docker logs:


Infinite recursion during resource lookup within System.Private.CoreLib.  This may be a bug in System.Private.CoreLib, or potentially in certain extensibility points such as assembly resolve events or CultureInfo names.  Resource name: Arg_ExternalException
   at System.Environment.FailFast(System.String)
   at System.SR.InternalGetResourceString(System.String)
   at System.SR.GetResourceString(System.String, System.String)
   at System.Globalization.CompareInfo.InitSort(System.Globalization.CultureInfo)
   at System.Globalization.CultureInfo.get_CompareInfo()
   at System.Globalization.CompareInfo..cctor()
   at System.String.IndexOf(System.String, Int32, Int32, System.StringComparison)
   at System.Globalization.CultureData.InitCultureData()
   at System.Globalization.CultureData.CreateCultureData(System.String, Boolean)
   at System.Globalization.CultureData.GetCultureData(System.String, Boolean)
   at System.Globalization.CultureInfo.InitializeFromName(System.String, Boolean)
   at System.Globalization.CultureInfo.GetCultureInfoHelper(Int32, System.String, System.String)
   at System.Globalization.CultureInfo.GetCultureInfo(System.String)
   at System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage(System.Reflection.Assembly, System.Resources.UltimateResourceFallbackLocation ByRef)
   at System.Resources.ResourceManager.CommonAssemblyInit()
   at System.Resources.ResourceManager..ctor(System.Type)
   at System.SR.InternalGetResourceString(System.String)
   at System.SR.GetResourceString(System.String, System.String)
   at System.Globalization.CompareInfo.InitSort(System.Globalization.CultureInfo)
   at System.Globalization.CultureInfo.get_CompareInfo()
   at System.StringComparer..cctor()
   at System.AppDomain.InitializeCompatibilityFlags()
   at System.AppDomain.Setup(System.Object)
Aborted (core dumped)
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] syncing disks.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.
Edited by skobkin
Link to comment
Share on other sites

bozrdnag

I searched expecting any easy answer for this but was surprised that I didn't find much. Is there a way to change the permission/ownership for the metadata files that Emby creates (nfo and artwork)? I am running Emby Server as a Docker container in unRaid and I whenever I decide to delete a movie from my server I always get a permission denied message because of the metadata files. I would rather they get the same permission/ownership that the rest of my files get on the server (0666 and nobody/users) rather than the 0644 and daemon/daemon that they current get when Emby creates them.

Anyone have a suggestion on how to fix this?

Link to comment
Share on other sites

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...