Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Support] Linuxserver.io - Kodi-Headless

Featured Replies

Anyone about to get Sonarr or Couchpotato to update this? I keep getting failed. Sorry if its been asked already. I tried to skim the thread.

Give us more details of how you've got things setup. Ports & folder mappings for the containers.

  • Replies 660
  • Views 175.9k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • Living Legend
    Living Legend

    This docker does function.  Read my last couple posts to see a little issue that I had to overcome to make sure you don't run into it as well.   What were you looking to get out of it?  If y

  • I think you've missed the point of what this does.

  • Pretty sure that linuxserver no longer supports this app at all.   BUT, from what I remember years ago you had to initially set up how the library gets scanned etc on another "real" Kodi ins

Posted Images

Mine updates fine but I can't get it to clean database on update.

Anyone about to get Sonarr or Couchpotato to update this? I keep getting failed. Sorry if its been asked already. I tried to skim the thread.

Give us more details of how you've got things setup. Ports & folder mappings for the containers.

 

Kodi-Headless:

8080/tcp <-> 192.168.1.133:8084

/mnt  <-> /mnt

/config/.kodi <-> /mnt/cache/Apps/Kodi/

 

In Sonarr, notifications going to:

Host: 192.168.133

Post 8084

Username: kodi

Password: <blank>

 

Edit: And now its working... Wonder if it took a bit first kodi-headless to initialize? Got me, its working now though, Ill leave my configuration there in case anyone else finds them useful

 

Edit2: And now the requests are failing again...

 

Looking at the logs for kodi-headless it doesnt even seem to be starting. Its having trouble connecting to the db.

 

mysql (linuxserver.io docker):

3306/tcp  <-> 192.168.1.133:3306

/config <-> /mnt/cache/Apps/MySQL/

 

My htpc can connect to it using the same advancedsettings.xml configuration.

 

 

Edit3: For those of you following along with this cluster, I copied and pasted my advancedsettings.xml fill again (only the DB portion) and kodi-headless booted right up. No idea why or how it was working earlier

Hey guys,

 

Is it possible to share my add-on installs via the database so I don't have to reinstall everything when I setup a new client? How will my LiveTV setup with NextPVR be handled? Would I need to setup PVR across every client?

 

In SickRage and Couchpotato, if I turn on the "Notify on xx" settings and send them to Kodi Headless, do the clients also get a notification? Should I check the "only update first host" option?

 

I APPRECIATE any help!!

 

Here is my AdvancedSettings.xml file

 

<advancedsettings>

<!-- 
#####################################################
# For more information on the settings available in #
# this file, refer to the kodi wiki at              #
# http://kodi.wiki/view/Advancedsettings.xml        #
#####################################################
-->

<videodatabase>
<type>mysql</type> <!-- don't change this value -->  
<host>192.168.1.5</host> <!-- change this to the IP address of your mysql/mariadb server  -->
<port>3306</port> <!-- change this to the port of your mysql/mariadb server  -->
<user>kodi</user> <!-- change this to the user for your database, not root  --> 
<pass>kodi</pass> <!-- change this to the password for your database -->
</videodatabase>
<musicdatabase>
<type>mysql</type> <!-- don't change this value -->
<host>192.168.1.5</host> <!-- change this to the IP address of your mysql/mariadb server  -->
<port>3306</port> <!-- change this to the port of your mysql/mariadb server  -->
<user>kodi</user> <!-- change this to the user for your database, not root  -->
<pass>kodi</pass> <!-- change this to the password for your database -->
</musicdatabase>

<services>
<devicename>TT-Kodi</devicename>
<esallinterfaces>true</esallinterfaces> <!-- don't change this value -->
<escontinuousdelay>25</escontinuousdelay>
<esenabled>true</esenabled> <!-- don't change this value -->
<esinitialdelay>750</esinitialdelay>
<esmaxclients>20</esmaxclients>
<esport>9777</esport> <!-- don't change this value -->
<esportrange>10</esportrange>
<upnpannounce>true</upnpannounce>
<upnprenderer>false</upnprenderer>
<upnpserver>true</upnpserver>
<webserver>true</webserver> <!-- don't change this value -->
<webserverpassword>xbmc</webserverpassword>
<webserverport>8080</webserverport> <!-- don't change this value -->
<webserverusername>xbmc</webserverusername>
<webskin>webinterface.default</webskin>
<zeroconf>true</zeroconf>
</services>

<pathsubstitution>
<substitute>
    <from>special://profile/playlists/</from>
    <to>PROTOCOL://192.168.1.5/appdata/MariaDB/Kodi Headless/userdata/playlists/</to>
  </substitute>
  <substitute>
    <from>special://profile/keymaps/</from>
    <to>PROTOCOL://192.168.1.5/appdata/MariaDB/Kodi Headless/userdata/keymaps/</to>
  </substitute>
<!--     <substitute>
    <from>special://profile/favourites.xml</from>
    <to>PROTOCOL://YOUR_NETWORK_SHARE/kodi/userdata/favourites.xml</to>
  </substitute> -->
</pathsubstitution>

<videolibrary>
<importresumepoint>true</importresumepoint>    <!-- import previously exported resume point from .nfo files -->
<importwatchedstate>true</importwatchedstate>  <!-- import previously exported playdate and playcount from .nfo files -->
<backgroundupdate>true</backgroundupdate>
<dateadded>1</dateadded> <!-- 0 results in using the current datetime when adding a video;
                              1 (default) results in prefering to use the files mtime (if it's valid) and only using the file's ctime if the mtime isn't valid;
                              2 results in using the newer datetime of the file's mtime and ctime -->

</videolibrary>
<musiclibrary>
<backgroundupdate>true</backgroundupdate> <!-- don't change this value -->
</musiclibrary>
<videoscanner>
<ignoreerrors>true</ignoreerrors> <!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don't have to keep hitting "yes" to keep scanning.-->
</videoscanner>
<splash>false</splash>
<bginfoloadermaxthreads>2</bginfoloadermaxthreads>
<myvideos>
<extractflags>false</extractflags>
<extractthumb>false</extractthumb>
</myvideos>
<lookandfeel>
<enablerssfeeds>false</enablerssfeeds>
</lookandfeel>
<audiooutput>
<guisoundmode>0</guisoundmode>
<ac3passthrough>false</ac3passthrough>
<dtspassthrough>false</dtspassthrough>
<multichannellpcm>false</multichannellpcm>
<truehdpassthrough>false</truehdpassthrough>
<dtshdpassthrough>false</dtshdpassthrough>
<mode>2</mode>
</audiooutput>
<videoscreen>
<vsync>2</vsync>
</videoscreen>
<input>
<enablemouse>false</enablemouse>
<remoteaskeyboard>false</remoteaskeyboard>
</input>
<general>
<addonnotifications>false</addonnotifications>
</general>
<skinsettings>
<setting type="bool" name="skin.confluence.FirstTimeRun">false</setting>
</skinsettings>
</advancedsettings>

Mine updates fine but I can't get it to clean database on update.

Please read OP, you do not want kodi-headless to clean your db as it will empty them. Always best to use the client you used to scan for cleaning

Hey guys,

 

Is it possible to share my add-on installs via the database so I don't have to reinstall everything when I setup a new client? How will my LiveTV setup with NextPVR be handled? Would I need to setup PVR across every client?

 

In SickRage and Couchpotato, if I turn on the "Notify on xx" settings and send them to Kodi Headless, do the clients also get a notification? Should I check the "only update first host" option?

 

I APPRECIATE any help!!

 

Here is my AdvancedSettings.xml file

 

<advancedsettings>

<!-- 
#####################################################
# For more information on the settings available in #
# this file, refer to the kodi wiki at              #
# http://kodi.wiki/view/Advancedsettings.xml        #
#####################################################
-->

<videodatabase>
<type>mysql</type> <!-- don't change this value -->  
<host>192.168.1.5</host> <!-- change this to the IP address of your mysql/mariadb server  -->
<port>3306</port> <!-- change this to the port of your mysql/mariadb server  -->
<user>kodi</user> <!-- change this to the user for your database, not root  --> 
<pass>kodi</pass> <!-- change this to the password for your database -->
</videodatabase>
<musicdatabase>
<type>mysql</type> <!-- don't change this value -->
<host>192.168.1.5</host> <!-- change this to the IP address of your mysql/mariadb server  -->
<port>3306</port> <!-- change this to the port of your mysql/mariadb server  -->
<user>kodi</user> <!-- change this to the user for your database, not root  -->
<pass>kodi</pass> <!-- change this to the password for your database -->
</musicdatabase>

<services>
<devicename>TT-Kodi</devicename>
<esallinterfaces>true</esallinterfaces> <!-- don't change this value -->
<escontinuousdelay>25</escontinuousdelay>
<esenabled>true</esenabled> <!-- don't change this value -->
<esinitialdelay>750</esinitialdelay>
<esmaxclients>20</esmaxclients>
<esport>9777</esport> <!-- don't change this value -->
<esportrange>10</esportrange>
<upnpannounce>true</upnpannounce>
<upnprenderer>false</upnprenderer>
<upnpserver>true</upnpserver>
<webserver>true</webserver> <!-- don't change this value -->
<webserverpassword>xbmc</webserverpassword>
<webserverport>8080</webserverport> <!-- don't change this value -->
<webserverusername>xbmc</webserverusername>
<webskin>webinterface.default</webskin>
<zeroconf>true</zeroconf>
</services>

<pathsubstitution>
<substitute>
    <from>special://profile/playlists/</from>
    <to>PROTOCOL://192.168.1.5/appdata/MariaDB/Kodi Headless/userdata/playlists/</to>
  </substitute>
  <substitute>
    <from>special://profile/keymaps/</from>
    <to>PROTOCOL://192.168.1.5/appdata/MariaDB/Kodi Headless/userdata/keymaps/</to>
  </substitute>
<!--     <substitute>
    <from>special://profile/favourites.xml</from>
    <to>PROTOCOL://YOUR_NETWORK_SHARE/kodi/userdata/favourites.xml</to>
  </substitute> -->
</pathsubstitution>

<videolibrary>
<importresumepoint>true</importresumepoint>    <!-- import previously exported resume point from .nfo files -->
<importwatchedstate>true</importwatchedstate>  <!-- import previously exported playdate and playcount from .nfo files -->
<backgroundupdate>true</backgroundupdate>
<dateadded>1</dateadded> <!-- 0 results in using the current datetime when adding a video;
                              1 (default) results in prefering to use the files mtime (if it's valid) and only using the file's ctime if the mtime isn't valid;
                              2 results in using the newer datetime of the file's mtime and ctime -->

</videolibrary>
<musiclibrary>
<backgroundupdate>true</backgroundupdate> <!-- don't change this value -->
</musiclibrary>
<videoscanner>
<ignoreerrors>true</ignoreerrors> <!-- Set to true to silently ignore errors while scanning videos. This prevents the error dialogue box, so you don't have to keep hitting "yes" to keep scanning.-->
</videoscanner>
<splash>false</splash>
<bginfoloadermaxthreads>2</bginfoloadermaxthreads>
<myvideos>
<extractflags>false</extractflags>
<extractthumb>false</extractthumb>
</myvideos>
<lookandfeel>
<enablerssfeeds>false</enablerssfeeds>
</lookandfeel>
<audiooutput>
<guisoundmode>0</guisoundmode>
<ac3passthrough>false</ac3passthrough>
<dtspassthrough>false</dtspassthrough>
<multichannellpcm>false</multichannellpcm>
<truehdpassthrough>false</truehdpassthrough>
<dtshdpassthrough>false</dtshdpassthrough>
<mode>2</mode>
</audiooutput>
<videoscreen>
<vsync>2</vsync>
</videoscreen>
<input>
<enablemouse>false</enablemouse>
<remoteaskeyboard>false</remoteaskeyboard>
</input>
<general>
<addonnotifications>false</addonnotifications>
</general>
<skinsettings>
<setting type="bool" name="skin.confluence.FirstTimeRun">false</setting>
</skinsettings>
</advancedsettings>

For each client, you will need to copy over your advancedsettings.XML + sources.XML + passwords.XML if you have passworded sources then setup the rest of each client manually.

 

With notifications, you just notify the the headless install then any database updates will show on the clients accordingly.

Anyone about to get Sonarr or Couchpotato to update this? I keep getting failed. Sorry if its been asked already. I tried to skim the thread.

Give us more details of how you've got things setup. Ports & folder mappings for the containers.

 

Kodi-Headless:

8080/tcp <-> 192.168.1.133:8084

/mnt  <-> /mnt

/config/.kodi <-> /mnt/cache/Apps/Kodi/

 

In Sonarr, notifications going to:

Host: 192.168.133

Post 8084

Username: kodi

Password: <blank>

 

Edit: And now its working... Wonder if it took a bit first kodi-headless to initialize? Got me, its working now though, Ill leave my configuration there in case anyone else finds them useful

 

Edit2: And now the requests are failing again...

 

Looking at the logs for kodi-headless it doesnt even seem to be starting. Its having trouble connecting to the db.

 

mysql (linuxserver.io docker):

3306/tcp  <-> 192.168.1.133:3306

/config <-> /mnt/cache/Apps/MySQL/

 

My htpc can connect to it using the same advancedsettings.xml configuration.

 

 

Edit3: For those of you following along with this cluster, I copied and pasted my advancedsettings.xml fill again (only the DB portion) and kodi-headless booted right up. No idea why or how it was working earlier

 

Not sure why you have /mnt going through to your kodi-headless. In terms of sonarr talking with kodi-headless, the login/pass for this is xbmc / xbmc unless you have changed this within the advancedsettings.xml (Note, this is not the user/pass you setup for the MySQL DB)

 

For each client, you will need to copy over your advancedsettings.XML + sources.XML + passwords.XML if you have passworded sources then setup the rest of each client manually.

 

With notifications, you just notify the the headless install then any database updates will show on the clients accordingly.

 

Great! If I have sickrage or couchpotato notify the headless kodi, will headless also update the library on its own from then on and grab the fanart and information? Or should I leave a client machine to this task?

 

 

 

For each client, you will need to copy over your advancedsettings.XML + sources.XML + passwords.XML if you have passworded sources then setup the rest of each client manually.

 

With notifications, you just notify the the headless install then any database updates will show on the clients accordingly.

 

Great! If I have sickrage or couchpotato notify the headless kodi, will headless also update the library on its own from then on and grab the fanart and information? Or should I leave a client machine to this task?

Correct, when headless gets notified, it updates the library and the clients will pull that info next time they check the central db

Mine updates fine but I can't get it to clean database on update.

Please read OP, you do not want kodi-headless to clean your db as it will empty them. Always best to use the client you used to scan for cleaning

 

Sonar is not cleaning the database either.

Mine updates fine but I can't get it to clean database on update.

Please read OP, you do not want kodi-headless to clean your db as it will empty them. Always best to use the client you used to scan for cleaning

 

Sonar is not cleaning the database either.

Yea it won't. All it does is tell a kodi client to clean it.

So I have unraid with 3 firetvs connected to it running kodi.  Do I just need to change the advancedsettings of the one that I used to add everything to the database to cleanonupdate?

Actually I already have it like that:

 

<advancedsettings>

 

<videolibrary>

<cleanonupdate>true</cleanonupdate>

<importresumepoint>true</importresumepoint>    <!-- import previously exported resume point from .nfo files -->

<importwatchedstate>true</importwatchedstate>  <!-- import previously exported playdate and playcount from .nfo files -->

<dateadded>1</dateadded> <!-- 0 results in using the current datetime when adding a video;

                              1 (default) results in prefering to use the files mtime (if it's valid) and only using the file's ctime if the mtime isn't valid;

                              2 results in using the newer datetime of the file's mtime and ctime -->

</videolibrary>

</advancedsettings>

 

 

The problem is the thing being updated is the headless kodi so the firetv never does a clean.

The problem is the thing being updated is the headless kodi so the firetv never does a clean.

 

why do you need to clean on startup ?

I don't, I need to clean on update.  What is happening is a show is there but then a better quality version is found so it is put in the database and the previous file is deleted, but they both are showing in kodi.  When you click on the one that was deleted it says it can't be found and lets you remove it.  I just want to have the database cleaned everytime an update happens.

I don't, I need to clean on update.  What is happening is a show is there but then a better quality version is found so it is put in the database and the previous file is deleted, but they both are showing in kodi.  When you click on the one that was deleted it says it can't be found and lets you remove it.  I just want to have the database cleaned everytime an update happens.

 

google tells me it's a sonarr issue.....

 

https://forums.sonarr.tv/t/xbmc-library-not-being-cleaned-on-update/729

So if I add the cleanonupdate to the advancedsettings for the headless-kodi and copy my sources.xml file over, that should fix it?

So if I add the cleanonupdate to the advancedsettings for the headless-kodi and copy my sources.xml file over, that should fix it?

 

i'd backup your database just to be on the safe side, i clean my database about once every 6 months tops... so i have little experience.

 

but it is the general consensus that sources.xml fixes it, hence the big red warning on the OP for this thread.

Hello

 

Where do I find the Version variable

 

Quote from: CHBMB on February 20, 2016, 10:31:41 AM

Quote from: ICDeadPpl on February 20, 2016, 10:30:09 AM

Is there an ETA for Kodi v16 Jarvis, it just became available on https://kodi.tv/download/ ?

 

Sparklyballs is normally very quick at these.  Give it 24 hours max I reckon.  ;)

 

it's uploaded.

 

change VERSION variable to 16 and away you go.

 

When I select the advance view it unRaid does not give me the below screen that is shown in this post

 

On Mr. Balls' behalf....  ;D

 

Click the advanced switch in the docker setup screen and add VERSION like below.

 

Update:

 

My bad I was selecting advanced on the general docker screen not on the specific kodi headless config screen.  Think i am good now

That seems to have fixed my issue.

 

Would it not make sense to make it possible to just load the database from the headless server from the start?

I've been noticing this on the kodi log from the Unraid Docker container page.

Mar 22 17:17:01 1b70d5ca1352 /USR/SBIN/CRON[12351]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)

It looks like that runs every hour and when it finds a movie or show then I get the following.

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

Then it repeats hourly until it finds a new movie or show.

 

Also I'm hoping you guys can add the dateutil module that trakt.tv needs per this post.  Thanks!

I've been noticing this on the kodi log from the Unraid Docker container page.

Mar 22 17:17:01 1b70d5ca1352 /USR/SBIN/CRON[12351]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)

It looks like that runs every hour and when it finds a movie or show then I get the following.

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

Then it repeats hourly until it finds a new movie or show.

 

Also I'm hoping you guys can add the dateutil module that trakt.tv needs per this post.  Thanks!

 

mariadb 10.1 branch with a lower version than 10.1.12 ?

I've been noticing this on the kodi log from the Unraid Docker container page.

Mar 22 17:17:01 1b70d5ca1352 /USR/SBIN/CRON[12351]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)

It looks like that runs every hour and when it finds a movie or show then I get the following.

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

tdb(__NULL__): tdb_open_ex: called with name == NULL

Then it repeats hourly until it finds a new movie or show.

 

Also I'm hoping you guys can add the dateutil module that trakt.tv needs per this post.  Thanks!

 

mariadb 10.1 branch with a lower version than 10.1.12 ?

It might be.......Mariadb is the only dockers that I use that is not linuxserver.  So the issue is with mariadb.  Will it be as simple as switching to linuxserver docker to get rid of that error?

 

 

Also I'm hoping you guys can add the dateutil module that trakt.tv needs per this post.  Thanks!

 

 

READ THE VERY NEXT POST IN THAT LINK

 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.