Jump to content

Recommended Posts

Posted

I am using the following script to start emby:

 

[briemers@media1 Videos]$ cat ~/emby.sh
#!/bin/bash
exec /usr/bin/docker run -d -P --restart=always --net=host --name emby \
    -v /mnt/share/spool/emby/docbill:/config \
    -v /mnt/share:/media \
    dperson/emby
 

 

Overall it works quite well.   However, one thing I don't like it it does not run as the correct user.   Ideally I want it to run as the same user who owns the media folder, so the files created by emby have the correct ownership.   So I'll probably do my own custom image, but overall the image is working quite well and this is little more than an annoyance.

 

BTW.  For those who want to compare emby with plex:

 

[briemers@media1 Videos]$ more ~/plex.sh
#!/bin/bash
exec /usr/bin/docker run -d -P --restart=always --net=host --name plex \
    -v "/mnt/share/spool/plex/docbillnet/:/config/:z" \
    -v "/mnt/share:/mnt/share:z" \
    docbill/fedora-plex
 

 

I do not recommend running both at the same time.  As plex will use a significant amount of CPU generating thumbnails which will interfere with emby streaming movies.   However, you can easily switch back and forth with the pause and unpause command:

 

$ docker pause plex

$ docker unpause emby

 

...

 

$ docker pause emby

$ docker unpause plex

 

...

 

Note: It looks like the emby docker container downloads a new instance of the server each time it runs.   My plex container relies on me clicking the "build" button on the docker-hub when I see an update notice so there is a newer version to pull.   I'm not sure I really like either solution.   Since emby is open source, it would make sense for the docker container to build from the open source rather than relying on already built binaries...   But I'm not sure if it is possible to build a .net program like this directly in a docker container.

hurricanehrndz
Posted

I just discovered that the last update was a while ago and the new features are looking promising.

Any intend in upgrading hurricane? Not pushing, just asking. Thanks for all your work

It should be updated. 

 

The latest builds were executed a couple of hours ago. The only one that has not been built recently is the stable version. Is there a newer stable release?

https://github.com/MediaBrowser/Emby/releases

https://hub.docker.com/r/emby/embyserver/tags/

fantaxp7
Posted

Hello,

 

After updating today I ran into an error and emby won't start.

Debug info from gdb:


=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

Aborted
Info, Main, Emby
Command line: /usr/lib/emby-server/bin/MediaBrowser.Server.Mono.exe -programdata /config -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartpath /usr/lib/emby-server/restart.sh
Operating system: Unix 4.1.18.0
Processor count: 8
64-Bit OS: True
64-Bit Process: True
Program data path: /config
Mono: 4.2.2 (Stable 4.2.2.30/996df3c Tue Apr 26 12:45:48 UTC 2016)
Application Path: /usr/lib/emby-server/bin/MediaBrowser.Server.Mono.exe
appHost.Init
Info, App, Application version: 3.1.18.0
Info, App, Application configuration:
{"EnableUPnP":true,"PublicPort":8096,"PublicHttpsPort":8920,"HttpServerPortNumber":8096,"HttpsPortNumber":8920,"EnableHttps":false,"EnableInternetProviders":true,"IsPortAuthorized":true,"EnableCaseSensitiveItemIds":false,"MetadataPath":"","SeasonZeroDisplayName":"Specials","SaveLocalMeta":true,"PreferredMetadataLanguage":"en","MetadataCountryCode":"US","SortReplaceCharacters":[".","+","%"],"SortRemoveCharacters":[",","&","-","{","}","'"],"SortRemoveWords":["the","a","an"],"MinResumePct":5,"MaxResumePct":90,"MinResumeDurationSeconds":300,"LibraryMonitorDelay":60,"EnableDashboardResponseCaching":true,"EnableDashboardResourceMinification":true,"DashboardSourcePath":"","ImageSavingConvention":"Compatible","MetadataOptions":[{"ItemType":"Book","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Movie","ImageOptions":[{"Type":"Primary","Limit":1,"MinWidth":0},{"Type":"Art","Limit":1,"MinWidth":0},{"Type":"Banner","Limit":1,"MinWidth":0},{"Type":"Disc","Limit":1,"MinWidth":0},{"Type":"Logo","Limit":1,"MinWidth":0},{"Type";:"Thumb","Limit":1,"MinWidth":0},{"Type":"Backdrop","Limit":1,"MinWidth":1280},{"Type":"Screenshot","Limit":1,"MinWidth":0}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":["Nfo","Emby Xml"],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":["The Open Movie Database","TheMovieDb"],"DisabledImageFetchers":[],"ImageFetcherOrder":["TheMovieDb","FanArt","The Open Movie Database","Screen Grabber"]},{"ItemType":"MusicVideo","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280},{"Type":"Art","Limit":0,"MinWidth":0},{"Type":"Disc","Limit":0,"MinWidth":0},{"Type":"Primary","Limit":1,"MinWidth":0},{"Type":"Banner","Limit":0,"MinWidth":0},{"Type":"Thumb","Limit":1,"MinWidth":0},{"Type":"Logo","Limit":1,"MinWidth":0}],"DisabledMetadataSavers":["Emby Xml"],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Series","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280},{"Type":"Art","Limit":0,"MinWidth":0},{"Type":"Primary","Limit":1,"MinWidth":0},{"Type":"Banner","Limit":1,"MinWidth":0},{"Type":"Thumb","Limit":1,"MinWidth":0},{"Type":"Logo","Limit":1,"MinWidth":0}],"DisabledMetadataSavers":["Emby Xml"],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicAlbum","ImageOptions":[{"Type":"Backdrop","Limit":0,"MinWidth":1280},{"Type":"Disc","Limit":0,"MinWidth":0}],"DisabledMetadataSavers":["Emby Xml"],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicArtist","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280},{"Type":"Banner","Limit":0,"MinWidth":0},{"T
Info, App, Loading AutoBoxSets, Version=1.1.0.1, Culture=neutral, PublicKeyToken=null
Info, App, Loading CoverArt, Version=4.0.12.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading Emby.Kodi.SyncQueue, Version=1.0.5966.21505, Culture=neutral, PublicKeyToken=null
Info, App, Loading GameBrowser, Version=3.0.5882.25260, Culture=neutral, PublicKeyToken=null
Info, App, Loading MBBackup, Version=1.0.0.13, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Plugins.RottenTomatoes, Version=3.0.5978.120, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Plugins.Trailers, Version=1.0.5946.24707, Culture=neutral, PublicKeyToken=null
Info, App, Loading MiOSEmbyZWaveControllerCS, Version=1.0.5929.22820, Culture=neutral, PublicKeyToken=null
Info, App, Loading MovieThemeSongs, Version=1.1.2.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MovieThemeVideos, Version=1.1.2.1, Culture=neutral, PublicKeyToken=null
Info, App, Loading ThemeSongs, Version=1.1.1.82, Culture=neutral, PublicKeyToken=null
Info, App, Loading ThemeVideos, Version=1.1.2.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Api, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.WebDashboard, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Model, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Controller, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Providers, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common.Implementations, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Server.Implementations, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.MediaEncoding, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Dlna, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.LocalMetadata, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.XbmcMetadata, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.IsoMounting.Linux, Version=1.0.5131.24779, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Server.Mono, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Server.Startup.Common, Version=3.1.18.0, Culture=neutral, PublicKeyToken=null
Info, ImageMagick, ImageMagick version: ImageMagick 6.9.2-8 Q8 x86_64 2016-05-05 http://www.imagemagick.org
Info, ImageProcessor, ImageProcessor started with 8 max concurrent image processes
Info, App, FFMpeg: /bin/ffmpeg
Info, App, FFProbe: /bin/ffprobe
System.Data.SQLite.SQLiteConnectionPool.PoolQueue doesn't implement interface System.Collections.IEnumerator

Stacktrace:

at <unknown> <0xffffffff>
at System.Data.SQLite.SQLiteBase.GetLastError (System.Data.SQLite.SQLiteConnectionHandle,intptr) <0x00098>
at System.Data.SQLite.SQLite3.GetLastError (string) <0x0004b>
at System.Data.SQLite.SQLite3.GetLastError () <0x00015>
at System.Data.SQLite.SQLite3.SetTimeout (int) <0x000d3>
at System.Data.SQLite.SQLite3.Open (string,System.Data.SQLite.SQLiteConnectionFlags,System.Data.SQLite.SQLiteOpenFlagsEnum,int,bool) <0x00587>
at System.Data.SQLite.SQLiteConnection.Open () <0x0116e>
at System.Data.Common.DbConnection.OpenAsync (System.Threading.CancellationToken) <0x00096>
at System.Data.Common.DbConnection.OpenAsync () <0x0002d>
at (wrapper remoting-invoke-with-check) System.Data.Common.DbConnection.OpenAsync () <0xffffffff>
at MediaBrowser.Server.Implementations.Persistence.SqliteExtensions/<ConnectToDb>c__async0.MoveNext () <0x00327>
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MediaBrowser.Server.Implementations.Persistence.SqliteExtensions/<ConnectToDb>c__async0> (MediaBrowser.Server.Implementations.Persistence.SqliteExtensions/<ConnectToDb>c__async0&) <0x000db>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Data.IDbConnection>.Start<MediaBrowser.Server.Implementations.Persistence.SqliteExtensions/<ConnectToDb>c__async0> (MediaBrowser.Server.Implementations.Persistence.SqliteExtensions/<ConnectToDb>c__async0&) <0x00019>
at MediaBrowser.Server.Implementations.Persistence.SqliteExtensions.ConnectToDb (string,bool,bool,System.Nullable`1<int>,MediaBrowser.Model.Logging.ILogger) <0x00189>
at MediaBrowser.Server.Mono.Native.DbConnector.Connect (string,bool,bool,System.Nullable`1<int>) <0x0003b>
at MediaBrowser.Server.Implementations.Persistence.BaseSqliteRepository/<CreateConnection>c__async0.MoveNext () <0x00098>
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MediaBrowser.Server.Implementations.Persistence.BaseSqliteRepository/<CreateConnection>c__async0> (MediaBrowser.Server.Implementations.Persistence.BaseSqliteRepository/<CreateConnection>c__async0&) <0x000e3>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Data.IDbConnection>.Start<MediaBrowser.Server.Implementations.Persistence.BaseSqliteRepository/<CreateConnection>c__async0> (MediaBrowser.Server.Implementations.Persistence.BaseSqliteRepository/<CreateConnection>c__async0&) <0x00019>
at MediaBrowser.Server.Implementations.Persistence.BaseSqliteRepository.CreateConnection (bool) <0x00160>
at MediaBrowser.Server.Implementations.Persistence.SqliteUserRepository.RetrieveAllUsers () <0x000a6>
at MediaBrowser.Server.Implementations.Library.UserManager/<LoadUsers>c__async3.MoveNext () <0x0009e>
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MediaBrowser.Server.Implementations.Library.UserManager/<LoadUsers>c__async3> (MediaBrowser.Server.Implementations.Library.UserManager/<LoadUsers>c__async3&) <0x000cb>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Collections.Generic.IEnumerable`1<MediaBrowser.Controller.Entities.User>>.Start<MediaBrowser.Server.Implementations.Library.UserManager/<LoadUsers>c__async3> (MediaBrowser.Server.Implementations.Library.UserManager/<LoadUsers>c__async3&) <0x00019>
at MediaBrowser.Server.Implementations.Library.UserManager.LoadUsers () <0x00155>
at MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0.MoveNext () <0x000af>
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0> (MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0&) <0x000df>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Threading.Tasks.VoidTaskResult>.Start<MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0> (MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0&) <0x00019>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0> (MediaBrowser.Server.Implementations.Library.UserManager/<Initialize>c__async0&) <0x00019>
at MediaBrowser.Server.Implementations.Library.UserManager.Initialize () <0x00147>
at MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1.MoveNext () <0x0809f>
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1> (MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1&) <0x000df>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Threading.Tasks.VoidTaskResult>.Start<MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1> (MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1&) <0x00019>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1> (MediaBrowser.Server.Startup.Common.ApplicationHost/<RegisterResources>c__async1&) <0x00019>
at MediaBrowser.Server.Startup.Common.ApplicationHost.RegisterResources (System.IProgress`1<double>) <0x0018a>
at MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<T_REF>.MoveNext () <0x006c4>
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<MediaBrowser.Server.Implementations.ServerApplicationPaths>> (MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<MediaBrowser.Server.Implementations.ServerApplicationPaths>&) <0x000d3>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Threading.Tasks.VoidTaskResult>.Start<MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<MediaBrowser.Server.Implementations.ServerApplicationPaths>> (MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<MediaBrowser.Server.Implementations.ServerApplicationPaths>&) <0x00019>
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<MediaBrowser.Server.Implementations.ServerApplicationPaths>> (MediaBrowser.Common.Implementations.BaseApplicationHost`1/<Init>c__async0<MediaBrowser.Server.Implementations.ServerApplicationPaths>&) <0x00019>
at MediaBrowser.Common.Implementations.BaseApplicationHost`1<T_REF>.Init (System.IProgress`1<double>) <0x001c9>
at MediaBrowser.Server.Startup.Common.ApplicationHost.Init (System.IProgress`1<double>) <0x0019b>
at MediaBrowser.Server.Mono.MainClass.RunApplication (MediaBrowser.Server.Implementations.ServerApplicationPaths,MediaBrowser.Model.Logging.ILogManager,MediaBrowser.Server.Startup.Common.StartupOptions) <0x00353>
at MediaBrowser.Server.Mono.MainClass.Main (string[]) <0x001c7>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

/usr/bin/mono-sgen() [0x4a16a5]
/lib64/libpthread.so.0(+0x10e80) [0x2b3f153a8e80]
/lib64/libc.so.6(gsignal+0x38) [0x2b3f155e99e8]
/lib64/libc.so.6(abort+0x13a) [0x2b3f155eae3a]
/usr/bin/mono-sgen() [0x62a2b9]
/usr/bin/mono-sgen() [0x62a4df]
/usr/bin/mono-sgen() [0x62a582]
/usr/bin/mono-sgen() [0x4a2427]
/usr/bin/mono-sgen() [0x4a27fd]
[0x40b4d05d]

Debug info from gdb:


=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 

fantaxp7
Posted

So I'd been using beta, I installed the stable docker and pointed to the same directories and stable is working. 

fantaxp7
Posted

Does anyone here use custom paths for Metadata and Cache? I noticed they are getting large and filling up my cache drive. 

 

Also I don't see anything for ImagesByName is that now part of Metadata? 

Posted

Did you know that this deployment and articles does not work on armv7 architectures? Just gives the error that wrong image format was found cannot start container. I've been working all day today on building an image for that architecture today fixing one issue after another. If anyone has any articles or guides for a western digital nas id appreciate it. Its just seemed pointless to run the server on another machine when my Nvidia shield direct plays everything and you have 16tb of Network storage with a dual core arm processor and 1gb of ram doing nothing...... figure hey it can at least keep an eye on the file changes.

hurricanehrndz
Posted (edited)

Did you know that this deployment and articles does not work on armv7 architectures? Just gives the error that wrong image format was found cannot start container. I've been working all day today on building an image for that architecture today fixing one issue after another. If anyone has any articles or guides for a western digital nas id appreciate it. Its just seemed pointless to run the server on another machine when my Nvidia shield direct plays everything and you have 16tb of Network storage with a dual core arm processor and 1gb of ram doing nothing...... figure hey it can at least keep an eye on the file changes.

Yes we are aware. Its a work in progress. I'm the only developer working on this, and I have many projects to work on. It is very difficult to find some free time at the moment. If you would like to help and contribute that would be appreciated

Edited by hurricanehrndz
Posted

Yes we are aware. Its a work in progress. I'm the only developer working on this, and I have many projects to work on. It is very difficult to find some free time at the moment. If you would like to help and contribute that would be appreciated

 

 

 

Well i'm kind of shooting in the dark here so if you could help point me in the right direction i'd really appreciate it. Here are some logs after setting up an ubuntu docker and resolving all dependency errors with emby just instantly killing itself. So any ideas would be greatly appreciated. 

 

execve("/usr/bin/emby-server", ["emby-server"], [/* 10 vars */]) = 0
brk(NULL)                               = 0xd0000
uname({sysname="Linux", nodename="Storage", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=60344, ...}) = 0
mmap2(NULL, 60344, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6c88000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\260\\\0\0004\0\0\0"..., 512) = 512
lseek(3, 103608, SEEK_SET)              = 103608
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 103256, SEEK_SET)              = 103256
read(3, "A0\0\0\0aeabi\0\1&\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 49) = 49
fstat64(3, {st_mode=S_IFREG|0644, st_size=104688, ...}) = 0
mmap2(NULL, 169920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c58000
mprotect(0xb6c70000, 32768, PROT_NONE)  = 0
mmap2(0xb6c78000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0xb6c78000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0`\t\0\0004\0\0\0"..., 512) = 512
lseek(3, 8652, SEEK_SET)                = 8652
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 8328, SEEK_SET)                = 8328
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=9772, ...}) = 0
mmap2(NULL, 73912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c40000
mprotect(0xb6c48000, 32768, PROT_NONE)  = 0
mmap2(0xb6c50000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6c50000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\331i\1\0004\0\0\0"..., 512) = 512
lseek(3, 894132, SEEK_SET)              = 894132
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2960) = 2960
lseek(3, 888324, SEEK_SET)              = 888324
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\3\f"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0755, st_size=897092, ...}) = 0
mmap2(NULL, 963968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b50000
mprotect(0xb6c28000, 32768, PROT_NONE)  = 0
mmap2(0xb6c30000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd0000) = 0xb6c30000
close(3)                                = 0
set_tls(0xb6cc3d50, 0xb6cc4428, 0xb6cc0050, 0xb6cc3d50, 0xb6cc0050) = 0
mprotect(0xb6c30000, 32768, PROT_READ)  = 0
mprotect(0xb6c78000, 32768, PROT_READ)  = 0
mprotect(0xb6cb8000, 32768, PROT_READ)  = 0
munmap(0xb6c88000, 60344)               = 0
open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
close(3)                                = 0
brk(NULL)                               = 0xd0000
brk(0xd8000)                            = 0xd8000
brk(0xe0000)                            = 0xe0000
getuid32()                              = 0
getgid32()                              = 0
geteuid32()                             = 0
getegid32()                             = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
gettimeofday({1466409802, 338279}, NULL) = 0
brk(0xe8000)                            = 0xe8000
brk(0xf0000)                            = 0xf0000
sysinfo({uptime=14218, loads=[16352, 10880, 14336], totalram=1062207488, freeram=95387648, sharedram=0, bufferram=95387648, totalswap=2147385344, freeswap=2129756160, procs=226, totalhigh=261095424, freehigh=2392064, mem_unit=1}) = 0
rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
uname({sysname="Linux", nodename="Storage", ...}) = 0
stat64("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getpid()                                = 227
getppid()                               = 225
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=497, ...}) = 0
brk(0xf8000)                            = 0xf8000
read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 497
read(3, "", 4096)                       = 0
close(3)                                = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=60344, ...}) = 0
mmap2(NULL, 60344, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6c88000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0x\r\0\0004\0\0\0"..., 512) = 512
lseek(3, 21220, SEEK_SET)               = 21220
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 20888, SEEK_SET)               = 20888
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=22340, ...}) = 0
mmap2(NULL, 86620, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b38000
mprotect(0xb6b40000, 32768, PROT_NONE)  = 0
mmap2(0xb6b48000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6b48000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\30/\0\0004\0\0\0"..., 512) = 512
lseek(3, 54072, SEEK_SET)               = 54072
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 53748, SEEK_SET)               = 53748
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=55192, ...}) = 0
mmap2(NULL, 128764, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b18000
mprotect(0xb6b28000, 32768, PROT_NONE)  = 0
mmap2(0xb6b30000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0xb6b30000
close(3)                                = 0
munmap(0xb6c88000, 60344)               = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=60344, ...}) = 0
mmap2(NULL, 60344, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6c88000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0<\30\0\0004\0\0\0"..., 512) = 512
lseek(3, 29248, SEEK_SET)               = 29248
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 28920, SEEK_SET)               = 28920
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=30368, ...}) = 0
mmap2(NULL, 94816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b00000
mprotect(0xb6b08000, 32768, PROT_NONE)  = 0
mmap2(0xb6b10000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6b10000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0l\31\0\0004\0\0\0"..., 512) = 512
lseek(3, 29224, SEEK_SET)               = 29224
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1120) = 1120
lseek(3, 28892, SEEK_SET)               = 28892
read(3, "A2\0\0\0aeabi\0\1(\0\0\0\0057-A\0\6\n\7A\10\1\t\2\n\4\22"..., 51) = 51
fstat64(3, {st_mode=S_IFREG|0644, st_size=30344, ...}) = 0
mmap2(NULL, 119548, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ae0000
mprotect(0xb6ae8000, 32768, PROT_NONE)  = 0
mmap2(0xb6af0000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb6af0000
mmap2(0xb6af8000, 21244, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6af8000
close(3)                                = 0
munmap(0xb6c88000, 60344)               = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
_llseek(3, 0, [0], SEEK_CUR)            = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=1314, ...}) = 0
mmap2(NULL, 1314, PROT_READ, MAP_SHARED, 3, 0) = 0xb6c90000
_llseek(3, 1314, [1314], SEEK_SET)      = 0
munmap(0xb6c90000, 1314)                = 0
close(3)                                = 0
gettimeofday({1466409802, 357177}, NULL) = 0
getpgrp()                               = 225
rt_sigaction(SIGCHLD, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
ugetrlimit(RLIMIT_NPROC, {rlim_cur=8085, rlim_max=8085}) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
open("/usr/bin/emby-server", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, TCGETS, 0xbefaf5a4)            = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR)            = 0
read(3, "#!/bin/bash\n# vim:set ft=sh sw=2"..., 80) = 80
_llseek(3, 0, [0], SEEK_SET)            = 0
ugetrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0
fcntl64(255, F_GETFD)                   = -1 EBADF (Bad file descriptor)
dup2(3, 255)                            = 255
close(3)                                = 0
fcntl64(255, F_SETFD, FD_CLOEXEC)       = 0
fcntl64(255, F_GETFL)                   = 0x20000 (flags O_RDONLY|O_LARGEFILE)
fstat64(255, {st_mode=S_IFREG|0755, st_size=3632, ...}) = 0
_llseek(255, 0, [0], SEEK_CUR)          = 0
read(255, "#!/bin/bash\n# vim:set ft=sh sw=2"..., 3632) = 3632
open("/etc/default/emby-server", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1793, ...}) = 0
read(3, "# Defaults for emby initscript\n#"..., 1793) = 1793
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
stat64("/etc/emby-server.conf", {st_mode=S_IFREG|0644, st_size=1403, ...}) = 0
open("/etc/emby-server.conf", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1403, ...}) = 0
read(3, "# Override defaults for emby ini"..., 1403) = 1403
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [iNT CHLD], [], 8) = 0
_llseek(255, -1932, [1700], SEEK_CUR)   = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6cc38f8) = 228
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
close(4)                                = 0
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=228, si_uid=0, si_status=1, si_utime=0, si_stime=1} ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG, NULL) = 228
wait4(-1, 0xbefaed94, WNOHANG, NULL)    = -1 ECHILD (No child processes)
sigreturn({mask=[]})                    = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(255, "MONO_EXEC_ENV=\"$MONO_ENV ${MAGIC"..., 3632) = 1932
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [iNT CHLD], [], 8) = 0
_llseek(255, -1720, [1912], SEEK_CUR)   = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6cc38f8) = 232
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
close(4)                                = 0
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=232, si_uid=0, si_status=1, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG, NULL) = 232
wait4(-1, 0xbefaed94, WNOHANG, NULL)    = -1 ECHILD (No child processes)
sigreturn({mask=[]})                    = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(255, "[ -n \"$FFMPEG_BIN\" ] && FFMPEG_O"..., 3632) = 1720
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [iNT CHLD], [], 8) = 0
_llseek(255, -1617, [2015], SEEK_CUR)   = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6cc38f8) = 233
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
close(4)                                = 0
read(3, "", 128)                        = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 233
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233, si_uid=0, si_status=1, si_utime=0, si_stime=1} ---
wait4(-1, 0xbefaebd4, WNOHANG, NULL)    = -1 ECHILD (No child processes)
sigreturn({mask=[]})                    = 0
read(255, "[ -n \"$FFPROBE_BIN\" ] && FFPROBE"..., 3632) = 1617
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [iNT CHLD], [], 8) = 0
_llseek(255, -1353, [2279], SEEK_CUR)   = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6cc38f8) = 234
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
close(4)                                = 0
read(3, "/var/run\n", 128)              = 9
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=234, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 234
wait4(-1, 0xbefaee4c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
sigreturn({mask=[]})                    = 9
read(3, "", 128)                        = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(255, "\n# Exit if the mono-sgen not ins"..., 3632) = 1353
faccessat(AT_FDCWD, "/usr/bin/mono-sgen", X_OK) = 0
stat64("/var/lib/emby-server", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [iNT CHLD], [], 8) = 0
_llseek(255, -620, [3012], SEEK_CUR)    = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6cc38f8) = 235
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, {0x472a9, [], SA_RESTORER|SA_RESTART, 0xb6b75251}, 8) = 0
close(4)                                = 0
read(3, "emby\n", 128)                  = 5
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=235, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 235
wait4(-1, 0xbefaee4c, WNOHANG, NULL)    = -1 ECHILD (No child processes)
sigreturn({mask=[]})                    = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0xb6b75251}, {0x44e9d, [], SA_RESTORER, 0xb6b75251}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(255, "\nif [ \"$DATA_CURRENT_USER\" != \"$"..., 3632) = 620
fcntl64(1, F_GETFD)                     = 0
fcntl64(1, F_DUPFD, 10)                 = 10
fcntl64(1, F_GETFD)                     = 0
fcntl64(10, F_SETFD, FD_CLOEXEC)        = 0
dup2(2, 1)                              = 1
fcntl64(2, F_GETFD)                     = 0
write(1, "Usage: /usr/bin/emby-server {sta"..., 42Usage: /usr/bin/emby-server {start|clear}
) = 42
dup2(10, 1)                             = 1
fcntl64(10, F_GETFD)                    = 0x1 (flags FD_CLOEXEC)
close(10)                               = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
exit_group(3)                           = ?
+++ exited with 3 +++
 

 

 

 

 

I have no idea honestly what any of that means. Long story short i have it set to the 14.04 trusty repo for now since the 15.10 repo is missing the arm files / dependencies. I saw another section on there with newer updated arm files but they are in the rms installer format and i have no idea yet how to install that. Here are my current codes for setting up the container. Obviously you'll have to change it as needed. However the reason i made the app user "admin" is because most NAS devices are configured with an admin folder and directory with full read and write capability. However i'm semi hoping the --privileged tag will superceed that, but who really knows. If anyone has any advice on what i might be doing wrong to at least "get" emby started i'd appreciate it. I'm used to things giving me an error of some sort. Not just saying oh your dead not running. Thanks

 

 

 
 
docker run -ti -p 192.168.1.229:8096:8096/tcp -p 192.168.1.229:8920:8920/tcp -p 192.168.1.229:7359:7359/udp -p 192.168.1.229:1900:1900/udp --restart="always" --publish-all --privileged="true" --name="Emby_Server" --net=host -v /shares/Kodi/Docker/mbconf:/config -e "APP_USER=admin" -e "APP_CONFIG=/shares/Kodi/Docker/Emby" 96b68f7da39c
 
 
 
locale-gen en_US
 
 
update-locale LANG=en_US
 
 
apt-mark hold initscripts udev plymouth mountall
 
 
apt-get -q update
 
 
apt-get install -y wget
 
apt-get install build-essential
 
apt-get build-dep ffmpeg
 
 
apt-get -q update
 
 
echo 'deb http://download.opensuse.org/repositories/home:/emby/xUbuntu_14.04/ /' > /etc/apt/sources.list.d/emby.list
 
apt-get update
 
apt-get install binfmt-support
 
 
apt-get install -y mono-runtime libmono-cil-dev mono-devel mediainfo libembymagickwand-6.q8-2 libembymagickcore-6.q8-2
 
apt-get update
 
apt-get install -fy
 
apt-get clean -y && rm -rf /var/lib/apt/lists/* /var/cache/* /var/tmp/* /tmp/mono*
 
 
apt-get update
 
apt-get install -y emby-server
  • 2 weeks later...
wangmaster
Posted

I've been struggling with getting the emby docker container working with a custom APP_UID and APP_GID and it's been failing.  I finally tracked it down to the  02-user-onetime script.  It's got a few calls to groupdel -f emby and groupdel -f ${APP_GID}.

 

The -f option is illegal to groupdel and this is causing a group for my APP_GID to fail to be created properly.  i created an issue on github, but thought i'd mention it here too:

https://github.com/MediaBrowser/Emby.Build/issues/51

hurricanehrndz
Posted (edited)

I've been struggling with getting the emby docker container working with a custom APP_UID and APP_GID and it's been failing.  I finally tracked it down to the  02-user-onetime script.  It's got a few calls to groupdel -f emby and groupdel -f ${APP_GID}.

 

The -f option is illegal to groupdel and this is causing a group for my APP_GID to fail to be created properly.  i created an issue on github, but thought i'd mention it here too:

https://github.com/MediaBrowser/Emby.Build/issues/51

Strange, this is the first I have seen this be an issue. Plus I use APP_UID and APP_UID all the the time. I will fix and update. Thanks for the heads up. PS It might not get done till the end of next week.

Edited by hurricanehrndz
wangmaster
Posted

Strange, this is the first I have seen this be an issue. Plus I use APP_UID and APP_UID all the the time. I will fix and update. Thanks for the heads up. PS It might not get done till the end of next week.

 

I swear I got this to work a couple of times too, so I'm not sure what was going on.  But at some point I consistently couldn't get it working and ended up creating a custom docker layer and modified 02-user-onetime to remove all of the >dev/null's to troubleshoot what was going on and saw the errors on -f.

 

I updated the script as I described on github and bingo, everything worked.

 

Another comment on the docker systemd service (the /opt/emby/emby-service change from /usr/local/bin/emby-service is my own personal preference)

The current config does this

 [service]

Type=forking
ExecStartPre=/usr/bin/docker pull emby/embyserver:latest
ExecStart=/opt/emby/emby-server
Restart=on-abort
TimeoutSec=20
 
The problem with this is that you can't use systemd to stop the unit.  
 
Maybe this makes more sense:
 [service]
ExecStartPre=/usr/bin/docker pull emby/embyserver:latest
ExecStart=/opt/emby/emby-server
ExecStop=/usr/bin/docker stop emby-server
Restart=on-abort
TimeoutSec=20
RemainAfterExit=true
 
This allows systemd to trigger docker to start the container (via the emby-server script) and at the same time allows a 'systemctl stop emby-server' to work by stopping the container.
Posted

Hello,

Does anyone know if I can turn on ISO mounting for docker? if so how?

Posted

Unless you run the docker container with priveledged rights no. Its an environment variable you can setup when starting a container. What platform is this for?

Posted

Unless you run the docker container with priveledged rights no. Its an environment variable you can setup when starting a container. What platform is this for?

It's UnRAID. I don't mind running the container with privileged rights if that's what it takes.

Posted

What iso are you trying to mount and for what reason? The issue is that the docker container is pretty much a sandbox environment youd have to mount the iso on the host system run the docker container os with priveledged rights giving it full access to the hosts systems and then mount the iso that's mounted again in the container. You'll have to see how docker maps itself with the OS once it's built. You can always for security bind the mount with an environment variable if you've already mounted it in the host OS first as well but I've noticed sometimes there can be permissions issues so be sure to use the right switches for read access. It defaults to rw access and iso shares really don't like that.

Posted

What iso are you trying to mount and for what reason? The issue is that the docker container is pretty much a sandbox environment youd have to mount the iso on the host system run the docker container os with priveledged rights giving it full access to the hosts systems and then mount the iso that's mounted again in the container. You'll have to see how docker maps itself with the OS once it's built. You can always for security bind the mount with an environment variable if you've already mounted it in the host OS first as well but I've noticed sometimes there can be permissions issues so be sure to use the right switches for read access. It defaults to rw access and iso shares really don't like that.

I still have several hundred blu-ray & DVD ISOs. working on converting them, but and this is a multi-month process (wanting to grab all the extras too) I want to be able to play them in the mean time. Not an expert on the ins and outs of Docker as a run time environment - I was hoping there was a reasonably simple answer like the SUDO option in Linux.

Posted

Are they in a folder on the host system ? Like media/movies?

Posted

Are they in a folder on the host system ? Like media/movies?

 

Yes. I have two movie folders to keep things clean. mnt/user/Film Files (MKV and the like), and mnt/user/Film Discs (all ISOs). I often watch on KODI, which uses path substitution to grab the ISO directly over the local network, and it can mount it or pass it on to PowerDVD with no problem. However, much of my family (and a few friends) access through the web, so for them they just get no joy when trying to play any of the files.

Posted

I'm not sure how the unRaid os handles shares but if it is setup like that all you should have to do is setup the bind variable for docker during the run command (when the container is built) now the key here will be to see how your host actually maps your drives which I've found can be confusing. Traditionally youd think it would be /shares/media/movies but it usually isn't. For example my western digital nas has it mapped on its host os as /mnt/HD/HD_a2/shares/media/movies. So here's the annoying part from your ssh console you'll need to find how your partitions are mounted according to your host OS so you can use the docker bind mount switches correctly. Haha but in order to even do that you need to know what shell it's using like mine uses busybox which is shitty. I'm working on rebuilding a custom kernel. What you'll want to probably do from the ssh console is type --help that should list the available commands to you. From there you can find one that will list the mounted partitions. I think the one that worked for me was blkid as ls wasn't recognized. Once you see the listed mounted partitions you can then pair that with the docker run command your building. Which will end up being quite long. Once you name it put the right port forwarding variables on it and the right mount points on it but once that's all done your in the clear. All you have to do is tell Emby to look at that folder. I'm pretty sure it has iso support. Then sit back let it build your library and there you go. There might even be a container that has a dockerfile already made for your OS with all the right mappings done but I've found that to be few and far in between but if you find one that's close enough keep in mind the variables you set at run will override what's in the dockerfile. If you need additional help let me know. If you send me specific information I can probably just build the command for you. Sadly the process doesn't work for me on the arm architecture and Emby. My core linux kernel is missing dependencies and installing them into docker doesn't help not to mention we don't have a complete list of all the Emby requirements for service startup on the arm architecture. If we did I could actually build the devs here a custom build kernel for the WD nas devices with the missing dependencies and package Emby right into the OS. Then have a bin file for activation but without proper documentation I cannot.

  • Like 1
Posted

Sorry that is all thrown together I'm typing this from my phone. I can throw together proper documentation for this if the Emby community would like.

Posted

Oh and I almost forgot the other reason it isn't compatible with the western digital nas systems and soon others is because it uses a 64kb block system with 32kb block emulation on the arm architecture. Meaning older apps are no longer compatible without rebuilt binaries using the new toolchains. The older systems used 4kb. According to all the development I've read the issue is that If the binaries weren't build using the new block system they will simply self terminate and will do so in docker as well because docker can only emulate what the host system can. Which is what I was seeing when trying to install Emby. So if any of the devs are willing to assist me on bringing the app to more platforms I have the sdks and toolchains for western digital and synology nas systems and their toolchains. They both now use the new 64kb block system. The reason plex works is because they now use pure java scripting based on pre-installed binaries already on the systems. I backtracked how plex does it's installation. Since it runs off of the java binaries that have already been ported to the new block system it doesn't have any issues however java is not optimized to run on arm very well especially on Marvell boards. So they had to disable transcoding. I feel Emby may be able to fill this void since it calculates what the system resources are and it's transcoding power is. However that's not going to work from a docker container since its a sandbox environment and unless the container runs in priveledged mode with direct access to the host /proc /sys and a few other folders it will not be able to read the proper system variables.

Buckaroo
Posted

Sorry that is all thrown together I'm typing this from my phone. I can throw together proper documentation for this if the Emby community would like.

I for one would love it!

Posted

I'll see what I can do to compile all the docker information for all the platforms and translate it into Lehman terms for the general user. I'll try and work with hurricane as well if I can to try and automate Emby docker installation and setup using the dockerfile platform so general users can get it running and access the web portal for setup after that for any remaining settings. It's just difficult because there's so many host systems changing their dependencies and docker is limited somewhat by this.

  • Like 1
hurricanehrndz
Posted

I'll see what I can do to compile all the docker information for all the platforms and translate it into Lehman terms for the general user. I'll try and work with hurricane as well if I can to try and automate Emby docker installation and setup using the dockerfile platform so general users can get it running and access the web portal for setup after that for any remaining settings. It's just difficult because there's so many host systems changing their dependencies and docker is limited somewhat by this.

@@Tdunk,

 

It would be amazing if you can it to the wiki, that is where most of the information is kept. I will try and get an official image for arm on docker going soon, but I'm super busy with work. More contributors and more help is always welcomed though. 

  • Like 1
  • 2 weeks later...
BobbyDing
Posted

Hi folks, I've read through this thread and I'm not finding an answer to a question (or just not understanding what I'm reading). I'm running stable versions of the docker and also plugin versions (not at the same time) on my unraid server. I've been able to update the plugin to 3.0.5986, but the docker version only says 3.0.5973. Running the docker updates yields no newer versions. Does the docker version require a different method of updating?

 

Thanks so much!

 

Bobby

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