Jump to content

Linux Setup


Luke

Recommended Posts

Guest scokar

Pokorra's mono build is at version 3.2.8.  Patching for servicestack may no longer be necessary.  

 

 

Link to comment
Share on other sites

Pokorra's mono build is at version 3.2.8.  Patching for servicestack may no longer be necessary.  

 

What's your experience level with this? Are you interested in doing any dev work related to the mono port?

Link to comment
Share on other sites

dantheman

I just tested the most recent build posted in this thread with embedded Mono in an Ubuntu 13.10 64bit virtual machine.

I installed libgdiplus from the Ubuntu repositories using apt-get.

 

The metadata and artwork weren't loading, and I occasionally received errors.  I took a look at the log, and the error seems to be:

InnerException: System.DllNotFoundException
/usr/lib64/libgdiplus.so

I read that Debian/Ubuntu removed lib32/lib64.  The path in my installation is /usr/lib/libgdiplus.so.

 

Not sure if this matters for the future... just thought I'd point it out.

Link to comment
Share on other sites

I just tested the most recent build posted in this thread with embedded Mono in an Ubuntu 13.10 64bit virtual machine.

I installed libgdiplus from the Ubuntu repositories using apt-get.

 

The metadata and artwork weren't loading, and I occasionally received errors.  I took a look at the log, and the error seems to be:

InnerException: System.DllNotFoundException
/usr/lib64/libgdiplus.so

I read that Debian/Ubuntu removed lib32/lib64.  The path in my installation is /usr/lib/libgdiplus.so.

 

Not sure if this matters for the future... just thought I'd point it out.

 

Did you see this?

 

http://mediabrowser.tv/community/index.php?/topic/3634-linux-os-x-server/?p=57993

Link to comment
Share on other sites

hooraysimpsons

I'm excited that people are working on expanding options for operating system, I appreciate the efforts.  My question: what TV backend is being planned for the linux based server?

Link to comment
Share on other sites

smitopher

Well, I re-initialized my Fedora server from scratch (this is a testing machine of course) and installed Fedora 19 minimal, Webmin, Amahi Home Server and "mono-opt libgdiplus-opt" from pokorra repo. I updated my .bash.profile to have . /opt/mono/env.sh so pokorra repo Mono can be found.

 

Checking Mono I get 

[smitopher@localhost ~]$ mono -V
Mono JIT compiler version 3.2.8 (tarball Thu Feb 20 17:33:58 UTC 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS:           __thread
SIGSEGV:       altstack
Notifications: epoll
Architecture:  amd64
Disabled:      none
Misc:          softdebug 
LLVM:          supported, not enabled.
GC:            sgen
[smitopher@localhost ~]$ 

So, pokorra repo now installs 3.2.8 where I think you have 3.2.7, am I understanding correctly?

 

Anyway, I download and unzip MB3 for Mono and try to run it and get

[smitopher@localhost MBServer]$ mono MediaBrowser.Server.Mono.exe
Info, Main, Media Browser Server started
Info, Main, Command line: /home/smitopher/MBServer/MediaBrowser.Server.Mono.exe
Info, Main, Server: localhost.localdomain
Info, Main, Operating system: Unix 3.13.5.101
appHost.Init
Info, App, Application Configuration:
{"WeatherUnit":"Fahrenheit","EnableHttpLevelLogging":true,"EnableUPnP":true,"HttpServerPortNumber":8096,"LegacyWebSocketPortNumber":8945,"EnableInternetProviders":true,"SeasonZeroDisplayName":"Specials","MetadataRefreshDays":30,"SaveLocalMeta":false,"RefreshItemImages":false,"PreferredMetadataLanguage":"en","MetadataCountryCode":"US","SortReplaceCharacters":[".","+","%"],"SortRemoveCharacters":[",","&","-","{","}","'"],"SortRemoveWords":["the","a","an"],"ShowLogWindow":false,"RecentItemDays":10,"MinResumePct":5,"MaxResumePct":90,"MinResumeDurationSeconds":300,"RealtimeWatcherDelay":20,"EnableDashboardResponseCaching":true,"ManualLoginClients":[],"EnableTvDbUpdates":false,"EnableTmdbUpdates":false,"EnableFanArtUpdates":false,"ImageSavingConvention":"Compatible","EnablePeoplePrefixSubFolders":true,"MediaEncodingQuality":"Auto","AllowVideoUpscaling":false,"EnableMovieChapterImageExtraction":true,"EnableEpisodeChapterImageExtraction":false,"EnableOtherVideoChapterImageExtraction":false,"MetadataOptions":[{"ItemType":"Book","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicAlbum","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicArtist","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Season","ImageOptions":[{"Type":"Backdrop","Limit":0,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]}],"EnableDebugEncodingLogging":false,"EnableAutomaticRestart":true,"TvFileOrganizationOptions":{"IsEnabled":false,"MinFileSizeMb":50,"LeftOverFileExtensionsToDelete":[],"WatchLocations":[],"SeasonFolderPattern":"Season %s","SeasonZeroFolderName":"Season 0","EpisodeNamePattern":"%sn - %sx%0e - %en.%ext","MultiEpisodeNamePattern":"%sn - %sx%0e-x%0ed - %en.%ext","OverwriteExistingEpisodes":false,"DeleteEmptyFolders":false,"CopyOriginalFile":false},"LiveTvOptions":{},"EnableRealtimeMonitor":true,"PathSubstitutions":[],"EnableDebugLevelLogging":false,"EnableAutoUpdate":true,"SystemUpdateLevel":"Release","LogFileRetentionDays":3,"RunAtStartup":false,"IsStartupWizardCompleted":false}
Info, App, Loading MediaBrowser.Api, Version=3.0.5180.21472, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.WebDashboard, Version=3.0.5180.21471, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Model, Version=3.0.5180.21468, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common, Version=3.0.5180.21469, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Controller, Version=3.0.5180.21470, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Providers, Version=3.0.5180.21470, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common.Implementations, Version=3.0.5180.21469, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Server.Implementations, Version=3.0.5180.21471, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Dlna, Version=3.0.5180.21472, 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.0.5180.21473, Culture=neutral, PublicKeyToken=null
Info, App, Version 3.0.5180.21473 initializing
Info, SqliteUserRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/users.db
Info, SqliteItemRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/chapters.db
Info, SqliteItemRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/mediainfo.db
Info, SqliteFileOrganizationRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/fileorganization.db
Error, Main, UnhandledException
One or more errors occured
System.AggregateException
  at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[] tasks) [0x00000] in <filename unknown>:0 
  at MediaBrowser.Server.Mono.MainClass.RunApplication (MediaBrowser.Server.Implementations.ServerApplicationPaths appPaths, ILogManager logManager) [0x00000] in <filename unknown>:0 
  at MediaBrowser.Server.Mono.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 
InnerException: System.TypeInitializationException
An exception was thrown by the type initializer for MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloadInfo
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[MediaBrowser.ServerApplication.FFMpeg.FFMpegInfo].Start[<GetFFMpegInfo>c__asyncD] (MediaBrowser.ServerApplication.FFMpeg.<GetFFMpegInfo>c__asyncD& stateMachine) [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloader.GetFFMpegInfo (IProgress`1 progress) [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.ApplicationHost+<RegisterMediaEncoder>c__async2.MoveNext () [0x00000] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.ApplicationHost+<RegisterResources>c__async1.MoveNext () [0x00000] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <filename unknown>:0 
  at MediaBrowser.Common.Implementations.BaseApplicationHost`1+<Init>c__async0[MediaBrowser.Server.Implementations.ServerApplicationPaths].MoveNext () [0x00000] in <filename unknown>:0 
InnerException: System.TypeInitializationException
An exception was thrown by the type initializer for MediaBrowser.ServerApplication.FFMpeg.PlatformDetection
  at MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloadInfo.ffmpegOsType (System.String arg) [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloadInfo..cctor () [0x00000] in <filename unknown>:0 
InnerException: System.TypeInitializationException
An exception was thrown by the type initializer for Mono.Unix.Native.Syscall
  at MediaBrowser.ServerApplication.FFMpeg.PlatformDetection..cctor () [0x00000] in <filename unknown>:0 
InnerException: System.DllNotFoundException
libMonoPosixHelper.so
  at (wrapper managed-to-native) Mono.Unix.Native.Syscall:get_at_fdcwd ()
  at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0 

UnhandledException
One or more errors occured
System.AggregateException
  at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[] tasks) [0x00000] in <filename unknown>:0 
  at MediaBrowser.Server.Mono.MainClass.RunApplication (MediaBrowser.Server.Implementations.ServerApplicationPaths appPaths, ILogManager logManager) [0x00000] in <filename unknown>:0 
  at MediaBrowser.Server.Mono.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 
InnerException: System.TypeInitializationException
An exception was thrown by the type initializer for MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloadInfo
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[MediaBrowser.ServerApplication.FFMpeg.FFMpegInfo].Start[<GetFFMpegInfo>c__asyncD] (MediaBrowser.ServerApplication.FFMpeg.<GetFFMpegInfo>c__asyncD& stateMachine) [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloader.GetFFMpegInfo (IProgress`1 progress) [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.ApplicationHost+<RegisterMediaEncoder>c__async2.MoveNext () [0x00000] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.ApplicationHost+<RegisterResources>c__async1.MoveNext () [0x00000] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult () [0x00000] in <filename unknown>:0 
  at MediaBrowser.Common.Implementations.BaseApplicationHost`1+<Init>c__async0[MediaBrowser.Server.Implementations.ServerApplicationPaths].MoveNext () [0x00000] in <filename unknown>:0 
InnerException: System.TypeInitializationException
An exception was thrown by the type initializer for MediaBrowser.ServerApplication.FFMpeg.PlatformDetection
  at MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloadInfo.ffmpegOsType (System.String arg) [0x00000] in <filename unknown>:0 
  at MediaBrowser.ServerApplication.FFMpeg.FFMpegDownloadInfo..cctor () [0x00000] in <filename unknown>:0 
InnerException: System.TypeInitializationException
An exception was thrown by the type initializer for Mono.Unix.Native.Syscall
  at MediaBrowser.ServerApplication.FFMpeg.PlatformDetection..cctor () [0x00000] in <filename unknown>:0 
InnerException: System.DllNotFoundException
libMonoPosixHelper.so
  at (wrapper managed-to-native) Mono.Unix.Native.Syscall:get_at_fdcwd ()
  at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0 

I guess I can try installing the pokorra mono rpm you have posted at the beginning of this thread?

Link to comment
Share on other sites

smitopher

well well well...

looking back at the start of the thread, I noticed I did not install mono-opt-devel

 

yum'ed it in and... ta da...

 

it starts

Link to comment
Share on other sites

Hi

 

What is the recommended distribution (s) for mb3?

 

I plan on trying unraid v6 soon, and running mb3 in a vm of some other distribution

 

 

Thanks

 

 

Chuga

Link to comment
Share on other sites

well well well...

looking back at the start of the thread, I noticed I did not install mono-opt-devel

 

yum'ed it in and... ta da...

 

it starts

 

would you be willing to document all of your install steps from start to finish? we are hoping to get the builds up on the website soon but first we need to understand all of the requirements. Thanks.

Link to comment
Share on other sites

smitopher

would you be willing to document all of your install steps from start to finish? we are hoping to get the builds up on the website soon but first we need to understand all of the requirements. Thanks.

I want to help.

 

To have as good a story as you have with the windows server, I think that Mono 3.x needs to be generally available from the main Linux distros repositories.   Now, it is 2.something.  It was many iterations and a large bit of fumbling around before I felt comfortable with having an appropriate Mono installation and it is still not generic.  For general release of MB3 Server on Mono, The minimum required Mono should be installable with apt-get in Ubuntu or yum in Fedora.

 

Then the MB3 team can host both a yum and apt-get repository, or even better, be the MB3 maintainer for the official Ubuntu and Fedora repositories.  Then MB3 would be available in the standard package managers with built in gui tools that allow end users to maintain their MB3 installation in the same standard and officially sanctioned repositories.  You can install XBMC for Ubuntu directly from the Ubuntu Software Manager.

 

Your licence would need to be compatible with whatever are the GPL requirements of the Linux distro.

 

The next "requirement" that I see is, when installing MB3 with yum or apt-get, it should directly install as a daemon.  I'm not sure if a daemon can throw up a browser to run the initial setup wizard so a good install story is needed there.  My server is headless.  I connect to it with an ssh console and run everything from a command line.  I have not tried running MB3 as a daemon, only in the console and so only by seeing the http url in the console was I able to complete the first time setup wizard.

 

Once you can install from a yum or apt-get repository, then you have a good Linux story. 

Edited by smitopher
  • Like 1
Link to comment
Share on other sites

smitopher

OK, starting with a minimal Fedora 19 installation.

 

First step is getting Mono.  I had the easiest time with Mono 3.x repository maintained by Timotheus Pokorra here http://www.pokorra.de/2013/12/easy-installation-of-current-mono-and-monodevelop-for-all-major-linux-distributions/

 

The description of the Pokorra repository is here:  http://www.pokorra.de/2013/12/easy-installation-of-current-mono-and-monodevelop-for-all-major-linux-distributions/

For Fedora http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt

For Ubuntu http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt

 

I installed on Fedora 19.  After adding the appropriate repository, I installed  Mono with yum with the 3 following commands.

sudo yum install mono-opt
sudo yum install mono-opt-devel
sudo yum install mono-libgdiplus-opt

next, since Pokorra's repository is NOT "official", he chose to have it install in a non-standard location so not to conflict with the "official" Mono.  He provides a script that tells your computer where to find Mono.

 

. /opt/mono/env.sh

 

After running this script, this lasts as long as you are logged on to your computer.  You have to run it every time you log on before you try to start MB3.

 

I added it to my startup script so it runs every time I logon.

(I edited the .bash_profile file in my home folder.  This is a hidden file so you don't see it unless you know how to look for it.  I just used nano to edit it)

 

My .bash_profile now looks like this

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
. /opt/mono/env.sh

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

You can test your Mono installation now by executing mono -V

[smitopher@localhost ~]$ mono -V
Mono JIT compiler version 3.2.8 (tarball Thu Feb 20 17:33:58 UTC 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS:           __thread
SIGSEGV:       altstack
Notifications: epoll
Architecture:  amd64
Disabled:      none
Misc:          softdebug 
LLVM:          supported, not enabled.
GC:            sgen
[smitopher@localhost ~]$ 

Next, I downloaded the MB3 mono build that Luke provided (a zip archive, to be Linux friendly maybe a tar archive would be better?)

 

Since my server has no keyboard or display, I had to download it and then copy it on to my server using a Samba share to my home folder.

(could use a ssh file utility like WinSCP http://winscp.net/eng/docs/free_ssh_client_for_windows.  A more linux friendly approach when you start publishing the mono build is a direct http link so a user could get it directly with wget)

 

I unzipped  the zip archive

unzip ~/MBServer.Mono.zip -d ~/MBServer

This created a MBServer folder off my home folder

 

I could then start MB3 

mono MediaBrowser.Server.Mono.exe

My server has no GUI or browser so instead of launching Firefox, the console had an error message with the URL to run the MB3 initial wizard.  If you are like me, you can use that URL, replacing "localhost" with the ip address or hostname of your server to complete the wizard from another computer.

 

Congratulations, You now have Media Browser 3 Server running on a Linux Box.

 

Your next steps are to run MB3 as a daemon (equivalent of a Windows Service).  I have not done that yet.  Someone earlier in the thread has.

Edited by smitopher
  • Like 3
Link to comment
Share on other sites

@@smitopher - you know that we have a build with mono embedded, right? have you tried that as a means to eliminate some of those early steps?

Link to comment
Share on other sites

PhAzE

@@smitopher - you know that we have a build with mono embedded, right? have you tried that as a means to eliminate some of those early steps?

Hey Luke, if you have a linux distro running another app that uses mono (but a different version) and I install your embedded version, any idea if the two mono versions would conflict or run side by side?

Link to comment
Share on other sites

Hey Luke, if you have a linux distro running another app that uses mono (but a different version) and I install your embedded version, any idea if the two mono versions would conflict or run side by side?

 

Well you don't actually install it. It's embedded into the application.

Link to comment
Share on other sites

PhAzE

Well you don't actually install it. It's embedded into the application.

Perfect, I wasn't sure so I thought I'd ask. I'm going to have a look this week at writing an UnRaid plugin to get this going.  With respect to UnRaid, a lot of the data locations need to be customized so that the install can be persistent after a reboot as UnRaid is installed to a RAM disk and wiped out on each boot.  

 

Having not really looked at it yet, i'm not sure if your app stores this information in config files or XML files, and the plugin will need to be able to modify these settings prior to each boot (aka have the config stored on the USB stick and copied over prior to installation).  The actual install of MB3 will be done on each reboot, but the cache directory, transcode directory, Logs, and ImageByName directory will normally be installed on a cache drive to keep the data persistent. On windows you have a MediaBroser-Server directory that has other files among these ... so that whole directory i suppose will need to be persistent.

 

In order to write this plugin for UnRaid, I would need to know which config file is used to store the paths to those directories, and any other database files that need to be persistent that may not be in the normal appdata directory. After that is setup, I'll have the plugin point to wherever these files end up being hosted or if there is a git of the linux version, it can clone from there on boot.

 

Edit: I guess there are two ways to do this plugin.

 

Option 1: plugin can clone from GIT, plugin will need to install all dependencies and be updated as dependencies change which usually isn't too often, but a common location for dependencies to be downloaded from needs to be stable.  

 

Option 2: plugin downloads the completed package you have setup with mono embedded, hopefully all dependencies are part of that package, the install is downloaded and kept on the users USB stick. This is how plex currently does it.  The side effect of this is that the plugin has to be released with ever new server release (or the user would install the same version each time and then need to perform an application update immediately after boot up of the app automatically).

Edited by PhAzE
  • Like 1
Link to comment
Share on other sites

Perfect, I wasn't sure so I thought I'd ask. I'm going to have a look this week at writing an UnRaid plugin to get this going.  With respect to UnRaid, a lot of the data locations need to be customized so that the install can be persistent after a reboot as UnRaid is installed to a RAM disk and wiped out on each boot.  

 

Having not really looked at it yet, i'm not sure if your app stores this information in config files or XML files, and the plugin will need to be able to modify these settings prior to each boot (aka have the config stored on the USB stick and copied over prior to installation).  The actual install of MB3 will be done on each reboot, but the cache directory, transcode directory, Logs, and ImageByName directory will normally be installed on a cache drive to keep the data persistent. On windows you have a MediaBroser-Server directory that has other files among these ... so that whole directory i suppose will need to be persistent.

 

In order to write this plugin for UnRaid, I would need to know which config file is used to store the paths to those directories, and any other database files that need to be persistent that may not be in the normal appdata directory. After that is setup, I'll have the plugin point to wherever these files end up being hosted or if there is a git of the linux version, it can clone from there on boot.

 

Awesome! The app.config file, which is in the executable directory has a setting called ReleaseProgramDataPath. That might be all you need to set. Individual directories underneath that can then be configured within the application.

Link to comment
Share on other sites

smitopher

@@smitopher - you know that we have a build with mono embedded, right? have you tried that as a means to eliminate some of those early steps?

Yes. I tried it before and just now, I downloaded it again and retried it.

 

It works

 

but...

Version 3.0.5138.32388A new version of Media Browser Server is available!
Version 3.0.5171.19958 is now available for download.

it does not appear to be as current as the non mono embedded.

 

It is also missing path substitution

 
Edited by smitopher
Link to comment
Share on other sites

ok, i just need to update the download url. can you do an installation procedure for the embedded version?

Link to comment
Share on other sites

smitopher

for S**ts and Giggles, I just installed the officially available Mono

[smitopher@localhost MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388]$ mono -V
Mono JIT compiler version 2.10.8 (tarball Sat Feb 16 11:51:56 UTC 2013)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
TLS:           __thread
SIGSEGV:       altstack
Notifications: epoll
Architecture:  amd64
Disabled:      none
Misc:          debugger softdebug 
LLVM:          supported, not enabled.
GC:            Included Boehm (with typed GC and Parallel Mark)
[smitopher@localhost MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388]$ 

I also have Pakorra repo Mono installed

[smitopher@localhost MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388]$ . /opt/mono/env.sh 
[smitopher@localhost MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388]$ mono -V
Mono JIT compiler version 3.2.8 (tarball Thu Feb 20 17:33:58 UTC 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS:           __thread
SIGSEGV:       altstack
Notifications: epoll
Architecture:  amd64
Disabled:      none
Misc:          softdebug 
LLVM:          supported, not enabled.
GC:            sgen
[smitopher@localhost MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388]$ 

MB3 with Mono embedded appears to run normally

[smitopher@localhost ~]$ cd mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388
[smitopher@localhost MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388]$ ./MediaBrowser.Server.Mono.x86_64 
Info, Main, Media Browser Server started
Info, Main, Command line: /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/MediaBrowser.Server.Mono.exe
Info, Main, Server: localhost.localdomain
Info, Main, Operating system: Unix 3.13.5.101
appHost.Init
Info, App, Application Configuration:
{"WeatherUnit":"Fahrenheit","EnableHttpLevelLogging":true,"HttpServerPortNumber":8096,"LegacyWebSocketPortNumber":8945,"EnableInternetProviders":true,"SeasonZeroDisplayName":"Specials","MetadataRefreshDays":30,"SaveLocalMeta":true,"RefreshItemImages":false,"PreferredMetadataLanguage":"en","MetadataCountryCode":"US","DownloadMovieImages":{"Art":true,"Logo":true,"Primary":true,"Backdrops":true,"Disc":true,"Thumb":true,"Banner":true},"DownloadSeriesImages":{"Art":true,"Logo":true,"Primary":true,"Backdrops":true,"Disc":true,"Thumb":true,"Banner":true},"DownloadSeasonImages":{"Art":true,"Logo":true,"Primary":true,"Backdrops":false,"Disc":true,"Thumb":true,"Banner":true},"DownloadMusicArtistImages":{"Art":true,"Logo":true,"Primary":true,"Backdrops":true,"Disc":true,"Thumb":true,"Banner":true},"DownloadMusicAlbumImages":{"Art":true,"Logo":true,"Primary":true,"Backdrops":true,"Disc":true,"Thumb":true,"Banner":true},"SortReplaceCharacters":[".","+","%"],"SortRemoveCharacters":[",","&","-","{","}","'"],"SortRemoveWords":["the","a","an"],"ShowLogWindow":false,"RecentItemDays":10,"MinResumePct":5,"MaxResumePct":90,"MinResumeDurationSeconds":300,"FileWatcherDelay":8,"EnableDashboardResponseCaching":true,"ManualLoginClients":[],"EnableTvDbUpdates":false,"EnableTmdbUpdates":false,"EnableVideoImageExtraction":true,"ImageSavingConvention":"Compatible","EnablePeoplePrefixSubFolders":true,"MediaEncodingQuality":"Auto","EnableMovieChapterImageExtraction":true,"EnableEpisodeChapterImageExtraction":false,"EnableOtherVideoChapterImageExtraction":false,"MovieOptions":{"MaxBackdrops":3,"MinBackdropWidth":1280},"TvOptions":{"MaxBackdrops":3,"MinBackdropWidth":1280},"MusicOptions":{"MaxBackdrops":1,"MinBackdropWidth":1280},"GameOptions":{"MaxBackdrops":3,"MinBackdropWidth":1280},"BookOptions":{"MaxBackdrops":1,"MinBackdropWidth":1280},"EnableDebugEncodingLogging":false,"EnableAutomaticRestart":true,"TvFileOrganizationOptions":{"IsEnabled":false,"MinFileSizeMb":50,"LeftOverFileExtensionsToDelete":[],"WatchLocations":[],"SeasonFolderPattern":"Season %s","SeasonZeroFolderName":"Season 0","EpisodeNamePattern":"%sn - %sx%0e - %en.%ext","MultiEpisodeNamePattern":"%sn - %sx%0e-x%0ed - %en.%ext","OverwriteExistingEpisodes":false,"DeleteEmptyFolders":false},"LiveTvOptions":{},"EnableDebugLevelLogging":false,"EnableAutoUpdate":true,"SystemUpdateLevel":"Release","LogFileRetentionDays":3,"RunAtStartup":false,"IsStartupWizardCompleted":true}
Info, App, Loading MediaBrowser.Api, Version=3.0.5138.32388, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.WebDashboard, Version=3.0.5138.32387, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Model, Version=3.0.5138.32384, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common, Version=3.0.5138.32384, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Controller, Version=3.0.5138.32385, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common.Implementations, Version=3.0.5138.32385, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Server.Implementations, Version=3.0.5138.32386, 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.0.5138.32388, Culture=neutral, PublicKeyToken=null
Info, App, Version 3.0.5138.32388 initializing
Info, SqliteUserRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/users.db
Info, SqliteItemRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/chapters.db
Info, SqliteItemRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/mediainfo.db
Info, SqliteItemRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/providerinfo.db
Info, SqliteFileOrganizationRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/fileorganization.db
Info, SqliteDisplayPreferencesRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/displaypreferences.db
Info, SqliteNotificationsRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/notifications.db
Info, SqliteItemRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/library.db
Info, SqliteUserDataRepository, Opening /home/smitopher/mb3MonoEmbed/MediaBrowser.Mono.mkbundlex.X86_64.3.0.5138.32388/ProgramData-Server/data/userdata_v2.db
Info, HttpServer, Calling ServiceStack AppHost.Init
Error, ServiceController, System.ArgumentException: Type ServiceStack.Api.Swagger.SwaggerResourcesService is not a Web Service that inherits IService
  at ServiceStack.Host.ServiceController.RegisterService (System.Type serviceType) [0x00000] in <filename unknown>:0 
Error, ServiceController, System.ArgumentException: Type ServiceStack.Api.Swagger.SwaggerApiService is not a Web Service that inherits IService
  at ServiceStack.Host.ServiceController.RegisterService (System.Type serviceType) [0x00000] in <filename unknown>:0 
Info, ServiceStackHost, Initializing Application took 4405.526ms
Info, App, Loading Http Server
Info, HttpServer, Adding HttpListener prefix http://+:8096/mediabrowser/
Info, HttpServer, Starting HttpListner
Info, App, Starting Alchemy web socket server on port 8945
Info, App, Alchemy Web Socket Server started
Running startup tasks
Info, App, Core startup complete

MB3 without Mono embedded appears to be running normally

[smitopher@localhost MBServer]$ . /opt/mono/env.sh 
[smitopher@localhost MBServer]$ mono MediaBrowser.Server.Mono.exe
Info, Main, Media Browser Server started
Info, Main, Command line: /home/smitopher/MBServer/MediaBrowser.Server.Mono.exe
Info, Main, Server: localhost.localdomain
Info, Main, Operating system: Unix 3.13.5.101
appHost.Init
Info, App, Application Configuration:
{"WeatherUnit":"Fahrenheit","EnableHttpLevelLogging":true,"EnableUPnP":true,"HttpServerPortNumber":8096,"LegacyWebSocketPortNumber":8945,"EnableInternetProviders":true,"SeasonZeroDisplayName":"Specials","MetadataRefreshDays":30,"SaveLocalMeta":true,"RefreshItemImages":false,"PreferredMetadataLanguage":"en","MetadataCountryCode":"US","SortReplaceCharacters":[".","+","%"],"SortRemoveCharacters":[",","&","-","{","}","'"],"SortRemoveWords":["the","a","an"],"ShowLogWindow":false,"RecentItemDays":10,"MinResumePct":5,"MaxResumePct":90,"MinResumeDurationSeconds":300,"RealtimeWatcherDelay":20,"EnableDashboardResponseCaching":true,"ManualLoginClients":[],"EnableTvDbUpdates":false,"EnableTmdbUpdates":false,"EnableFanArtUpdates":false,"ImageSavingConvention":"Compatible","EnablePeoplePrefixSubFolders":true,"MediaEncodingQuality":"Auto","AllowVideoUpscaling":false,"EnableMovieChapterImageExtraction":true,"EnableEpisodeChapterImageExtraction":false,"EnableOtherVideoChapterImageExtraction":false,"MetadataOptions":[{"ItemType":"Book","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicAlbum","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicArtist","ImageOptions":[{"Type":"Backdrop","Limit":1,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Season","ImageOptions":[{"Type":"Backdrop","Limit":0,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Movie","ImageOptions":[{"Type":"Backdrop","Limit":3,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Episode","ImageOptions":[{"Type":"Backdrop","Limit":3,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"AdultVideo","ImageOptions":[{"Type":"Backdrop","Limit":3,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"MusicVideo","ImageOptions":[{"Type":"Backdrop","Limit":3,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Video","ImageOptions":[{"Type":"Backdrop","Limit":3,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]},{"ItemType":"Trailer","ImageOptions":[{"Type":"Backdrop","Limit":3,"MinWidth":1280}],"DisabledMetadataSavers":[],"LocalMetadataReaderOrder":[],"DisabledMetadataFetchers":[],"MetadataFetcherOrder":[],"DisabledImageFetchers":[],"ImageFetcherOrder":[]}],"EnableDebugEncodingLogging":false,"EnableAutomaticRestart":true,"TvFileOrganizationOptions":{"IsEnabled":false,"MinFileSizeMb":50,"LeftOverFileExtensionsToDelete":[],"WatchLocations":[],"SeasonFolderPattern":"Season %s","SeasonZeroFolderName":"Season 0","EpisodeNamePattern":"%sn - %sx%0e - %en.%ext","MultiEpisodeNamePattern":"%sn - %sx%0e-x%0ed - %en.%ext","OverwriteExistingEpisodes":false,"DeleteEmptyFolders":false,"CopyOriginalFile":false},"LiveTvOptions":{},"EnableRealtimeMonitor":true,"PathSubstitutions":[{"From":"/home/smitopher/mblib/tv","To":"\\\\192.168.14.20\\Videos"},{"From":"/home/smitopher/mblib/movies","To":"\\\\192.168.14.20\\Movies"}],"EnableDebugLevelLogging":false,"EnableAutoUpdate":true,"SystemUpdateLevel":"Release","LogFileRetentionDays":3,"RunAtStartup":false,"IsStartupWizardCompleted":true}
Info, App, Loading MediaBrowser.Api, Version=3.0.5180.21472, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.WebDashboard, Version=3.0.5180.21471, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Model, Version=3.0.5180.21468, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common, Version=3.0.5180.21469, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Controller, Version=3.0.5180.21470, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Providers, Version=3.0.5180.21470, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Common.Implementations, Version=3.0.5180.21469, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Server.Implementations, Version=3.0.5180.21471, Culture=neutral, PublicKeyToken=null
Info, App, Loading MediaBrowser.Dlna, Version=3.0.5180.21472, 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.0.5180.21473, Culture=neutral, PublicKeyToken=null
Info, App, Version 3.0.5180.21473 initializing
Info, SqliteUserRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/users.db
Info, SqliteItemRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/chapters.db
Info, SqliteItemRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/mediainfo.db
Info, SqliteFileOrganizationRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/fileorganization.db
Info, SqliteDisplayPreferencesRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/displaypreferences.db
Info, SqliteNotificationsRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/notifications.db
Info, SqliteItemRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/library.db
Info, SqliteUserDataRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/userdata_v2.db
Info, SqliteProviderInfoRepository, Opening /home/smitopher/MBServer/ProgramData-Server/data/refreshinfo.db
Info, HttpServer, Calling ServiceStack AppHost.Init
Info, ServiceStackHost, Initializing Application took 3336.953ms
Info, App, Loading Http Server
Info, HttpServer, Adding HttpListener prefix http://+:8096/mediabrowser/
Info, HttpServer, Starting HttpListner
Info, App, Starting Alchemy web socket server on port 8945
Info, App, Alchemy Web Socket Server started
Running startup tasks
Info, App, Core startup complete
Link to comment
Share on other sites

smitopher

ok, i just need to update the download url. can you do an installation procedure for the embedded version?

Sure, let me know when you have updated the URL

Link to comment
Share on other sites

smitopher

I don't this that is the Mono embedded

[smitopher@localhost mb3MonoEmbed]$ ls
Alchemy.dll                  MediaBrowser.Common.Implementations.dll      MediaBrowser.Providers.dll.mdb               NLog.dll                      sqlite3
ApiClient.js                 MediaBrowser.Common.Implementations.dll.mdb  MediaBrowser.Server.Implementations.dll      ServiceStack.Api.Swagger.dll  sqlite3.dll
BDInfo.dll                   MediaBrowser.Controller.dll                  MediaBrowser.Server.Implementations.dll.mdb  ServiceStack.Client.dll       swagger-ui
dashboard-ui                 MediaBrowser.Controller.dll.mdb              MediaBrowser.Server.Mono.exe                 ServiceStack.Common.dll       System.Data.SQLite.dll
DvdLib.dll                   MediaBrowser.Dlna.dll                        MediaBrowser.Server.Mono.exe.config          ServiceStack.dll              System.Data.SQLite.dll.config
MediaBrowser.Api.dll         MediaBrowser.IsoMounting.Linux.dll           MediaBrowser.WebDashboard.dll                ServiceStack.Interfaces.dll   System.Data.SQLite.Linq.dll
MediaBrowser.Api.dll.mdb     MediaBrowser.Model.dll                       MediaBrowser.WebDashboard.dll.mdb            ServiceStack.Text.dll
MediaBrowser.Common.dll      MediaBrowser.Model.dll.mdb                   Mono.Nat.dll                                 SharpCompress.dll
MediaBrowser.Common.dll.mdb  MediaBrowser.Providers.dll                   MoreLinq.dll                                 SimpleInjector.dll
[smitopher@localhost mb3MonoEmbed]$ . MediaBrowser.Server.Mono.exe
-bash: .: MediaBrowser.Server.Mono.exe: cannot execute binary file
[smitopher@localhost mb3MonoEmbed]$ 
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...