Giter Club home page Giter Club logo

Comments (17)

thelamer avatar thelamer commented on May 31, 2024

output of docker exec tvheadend ls -l /dev/dri /dev/dvb please

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024
bberger@dexter:~/dexter$ docker exec tvheadend ls -l /dev/dri /dev/dvb
/dev/dri:
total 0
crw-rw---- 1 root video 226,   0 Oct 19 17:33 card0
crw-rw---- 1 root video 226, 128 Oct 19 17:33 renderD128

/dev/dvb:
total 0
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter0
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter1
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter2
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter3
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter4
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter5
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter6
drwxr-xr-x 2 root root 120 Oct 19 17:33 adapter7

from docker-tvheadend.

thelamer avatar thelamer commented on May 31, 2024

Yeah we specifically ignore root and only add to it's group if everything is owned by root as there are security implications with that.

What distro are you running ? I believe Udev default should be setting the DVB device to video group.

from docker-tvheadend.

aptalca avatar aptalca commented on May 31, 2024

Do you have a startup script that modifies the dvb permissions?

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

Vanilla Ubuntu 18.04 server with docker from the docker-ce repos.

Also running the default kernel drivers for the DD card.

linuxserver.io is the only image that /dev/dvb is mounted to.

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

Just changed the permissions to root:video on /dev/dvb and tried upgrading to the :latest tag again, now TVH startup fails with the following error (unrelated, I know, but maybe I didn't actually have the :latest tag pulled to begin with):

2019-10-19 17:59:15.353 [  ERROR] config: command '/bin/tar cjf /config/backup/4.3-1804~gebb096804.tar.bz2 --exclude backup --exclude epggrab/*.sock --exclude timeshift/buffer --exclude imagecache/meta --exclude imagecache/data .' returned error code 2
2019-10-19 17:59:15.353 [  ERROR] config: executed in directory '/config'
2019-10-19 17:59:15.353 [  ERROR] config: please DON'T report this as an error, you may use --nobackup to skip
2019-10-19 17:59:15.353 [  ERROR] config: ... or run the above command in the printed directory
2019-10-19 17:59:15.353 [  ERROR] config: ... using the same user/group as for the Tvheadend executable
2019-10-19 17:59:15.353 [  ERROR] config: ... to check the reason for the unfinished backup
2019-10-19 17:59:15.353 [  ERROR] config: backup: fatal error

from docker-tvheadend.

thelamer avatar thelamer commented on May 31, 2024

Default Udev rules in Ubuntu 18.04 are for DVB devices to be group owned by video:
https://bazaar.launchpad.net/~ubuntu-core-dev/udev/ubuntu/view/head:/rules/rules.d/50-udev-default.rules#L48

Is this a USB device by chance? That might change things as far as perms go.

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

No, it's an 8 Tuner PCIe card from Digital Devices (Max S8)

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

PS: changing the permissions to root:video doesn't solve the issue. Still present in -ls36 and :latest

from docker-tvheadend.

aptalca avatar aptalca commented on May 31, 2024

@bernhardberger please do
docker exec tvheadend ls -l /dev/dvb/adapter0

and also post the command you used to create your container

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024
bberger@dexter:~/dexter$ docker exec tvheadend ls -l /dev/dvb/adapter0
total 0
crw-rw---- 1 root video 212, 0 Oct 19 18:08 demux0
crw-rw---- 1 root video 212, 1 Oct 19 18:08 dvr0
crw-rw---- 1 root video 212, 3 Oct 19 18:08 frontend0
crw-rw---- 1 root video 212, 2 Oct 19 18:08 net0

docker-compose (v2):

  tvheadend:
    image: linuxserver/tvheadend:ebb09680-ls35
#    image: linuxserver/tvheadend:84c989e1-ls39
#    image: linuxserver/tvheadend:latest
    container_name: tvheadend
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Vienna
    volumes:
      - /srv/tvheadend/config:/config
      - /mnt/storage/recordings:/recordings
    ports:
      - 9981:9981
      - 9982:9982
    labels:
      - traefik.enable=true
      - traefik.port=9981
      - traefik.frontend.rule=Host:****REDACTED****
    devices:
      - /dev/dri:/dev/dri
      - /dev/dvb:/dev/dvb
    restart: unless-stopped

from docker-tvheadend.

thelamer avatar thelamer commented on May 31, 2024

Ok so it would seem the ownership script is doing everything it is supposed to in the container.

If you run :

docker exec tvheadend id abc

You should see that it is a member of the 44(video) group. (abc is the in docker user tvheadend is running as)

So this logic should not be why you are not functional as abc has access to all the devices.
Now I am not saying your container is functional right now, but we need to determine exactly why it would not be.

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

Yep, just to confirm:

bberger@dexter:~/dexter$ docker exec tvheadend id abc
uid=1000(abc) gid=1000(users) groups=1000(users),44(video),1000(users)

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

Hmm... this is my startup log from the container (:latest):

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 10-adduser: executing... 

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \ 
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
We gratefully accept donations at:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    1000
User gid:    1000
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 30-config: executing... 
Setting permissions
[cont-init.d] 30-config: exited 0.
[cont-init.d] 50-gid-video: executing... 
groupadd: 'videoCwz8JONo' is not a valid group name
groupmod: group 'videoCwz8JONo' does not exist
usermod: group 'videoCwz8JONo' does not exist
groupadd: 'video5dkjdGuW' is not a valid group name
groupmod: group 'video5dkjdGuW' does not exist
usermod: group 'video5dkjdGuW' does not exist
groupadd: 'videoEbGuJNXY' is not a valid group name
groupmod: group 'videoEbGuJNXY' does not exist
usermod: group 'videoEbGuJNXY' does not exist
groupadd: 'videomlgGcjzK' is not a valid group name
groupmod: group 'videomlgGcjzK' does not exist
usermod: group 'videomlgGcjzK' does not exist
groupadd: 'videoOJXkVCAb' is not a valid group name
groupmod: group 'videoOJXkVCAb' does not exist
usermod: group 'videoOJXkVCAb' does not exist
groupadd: 'video2JHvj28j' is not a valid group name
groupmod: group 'video2JHvj28j' does not exist
usermod: group 'video2JHvj28j' does not exist
groupadd: 'videonsIw0IiT' is not a valid group name
groupmod: group 'videonsIw0IiT' does not exist
usermod: group 'videonsIw0IiT' does not exist
groupadd: 'videoi9sGjvw1' is not a valid group name
groupmod: group 'videoi9sGjvw1' does not exist
usermod: group 'videoi9sGjvw1' does not exist
groupadd: 'videoD98yZi2l' is not a valid group name
groupmod: group 'videoD98yZi2l' does not exist
usermod: group 'videoD98yZi2l' does not exist
groupadd: 'videofYMGYYRM' is not a valid group name
groupmod: group 'videofYMGYYRM' does not exist
usermod: group 'videofYMGYYRM' does not exist
groupadd: 'videoYRJqiXNQ' is not a valid group name
groupmod: group 'videoYRJqiXNQ' does not exist
usermod: group 'videoYRJqiXNQ' does not exist
groupadd: 'videonYqKAQeY' is not a valid group name
groupmod: group 'videonYqKAQeY' does not exist
usermod: group 'videonYqKAQeY' does not exist
groupadd: 'videoioD13oVK' is not a valid group name
groupmod: group 'videoioD13oVK' does not exist
usermod: group 'videoioD13oVK' does not exist
groupadd: 'videoWbEsypfs' is not a valid group name
groupmod: group 'videoWbEsypfs' does not exist
usermod: group 'videoWbEsypfs' does not exist
groupadd: 'videoIvHm0TYX' is not a valid group name
groupmod: group 'videoIvHm0TYX' does not exist
usermod: group 'videoIvHm0TYX' does not exist
groupadd: 'videoJ9kdsbIx' is not a valid group name
groupmod: group 'videoJ9kdsbIx' does not exist
usermod: group 'videoJ9kdsbIx' does not exist
groupadd: 'videoXUp20yTn' is not a valid group name
groupmod: group 'videoXUp20yTn' does not exist
usermod: group 'videoXUp20yTn' does not exist
groupadd: 'videoZY7OA6RN' is not a valid group name
groupmod: group 'videoZY7OA6RN' does not exist
usermod: group 'videoZY7OA6RN' does not exist
groupadd: 'videot0CWhGtp' is not a valid group name
groupmod: group 'videot0CWhGtp' does not exist
usermod: group 'videot0CWhGtp' does not exist
groupadd: 'videowNdvwMBT' is not a valid group name
groupmod: group 'videowNdvwMBT' does not exist
usermod: group 'videowNdvwMBT' does not exist
groupadd: 'videola2FBrSX' is not a valid group name
groupmod: group 'videola2FBrSX' does not exist
usermod: group 'videola2FBrSX' does not exist
groupadd: 'videoWMDukMTp' is not a valid group name
groupmod: group 'videoWMDukMTp' does not exist
usermod: group 'videoWMDukMTp' does not exist
groupadd: 'videoVVmoPbOR' is not a valid group name
groupmod: group 'videoVVmoPbOR' does not exist
usermod: group 'videoVVmoPbOR' does not exist
groupadd: 'videobZlxebqf' is not a valid group name
groupmod: group 'videobZlxebqf' does not exist
usermod: group 'videobZlxebqf' does not exist
groupadd: 'video74WdVaU9' is not a valid group name
groupmod: group 'video74WdVaU9' does not exist
usermod: group 'video74WdVaU9' does not exist
groupadd: 'videovXCyFAPr' is not a valid group name
groupmod: group 'videovXCyFAPr' does not exist
usermod: group 'videovXCyFAPr' does not exist
groupadd: 'videoW9E07CfD' is not a valid group name
groupmod: group 'videoW9E07CfD' does not exist
usermod: group 'videoW9E07CfD' does not exist
groupadd: 'videozvApdoP0' is not a valid group name
groupmod: group 'videozvApdoP0' does not exist
usermod: group 'videozvApdoP0' does not exist
groupadd: 'videoxWmBm1Zj' is not a valid group name
groupmod: group 'videoxWmBm1Zj' does not exist
usermod: group 'videoxWmBm1Zj' does not exist
groupadd: 'video6Lzb6sCB' is not a valid group name
groupmod: group 'video6Lzb6sCB' does not exist
usermod: group 'video6Lzb6sCB' does not exist
groupadd: 'videoaSXVD3E4' is not a valid group name
groupmod: group 'videoaSXVD3E4' does not exist
usermod: group 'videoaSXVD3E4' does not exist
groupadd: 'videoA9DdUefo' is not a valid group name
groupmod: group 'videoA9DdUefo' does not exist
usermod: group 'videoA9DdUefo' does not exist
groupadd: 'videoFws1O7CW' is not a valid group name
groupmod: group 'videoFws1O7CW' does not exist
usermod: group 'videoFws1O7CW' does not exist
groupadd: 'videoCnYzdRv5' is not a valid group name
groupmod: group 'videoCnYzdRv5' does not exist
usermod: group 'videoCnYzdRv5' does not exist
[cont-init.d] 50-gid-video: exited 0.
[cont-init.d] 99-custom-files: executing... 
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-files: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
2019-10-19 21:12:01.091 [   INFO] main: Log started
2019-10-19 21:12:01.093 [   INFO] http: Starting HTTP server 0.0.0.0:9981
2019-10-19 21:12:01.094 [   INFO] htsp: Starting HTSP server 0.0.0.0:9982
2019-10-19 21:12:01.193 [   INFO] config: backup: migrating config from 4.3-1804~gebb096804 (running 4.3-1832~g84c989e15)
2019-10-19 21:12:01.193 [   INFO] config: backup: running, output file /config/backup/4.3-1804~gebb096804.tar.bz2
2019-10-19 21:12:01.194 [   INFO] spawn: Executing "/bin/tar"
2019-10-19 21:12:02.475 [  ERROR] spawn: /bin/tar: ./.bash_history: Cannot open: Permission denied
2019-10-19 21:12:02.576 [  ERROR] spawn: /bin/tar: Exiting with failure status due to previous errors
2019-10-19 21:12:02.579 [   INFO] config: backup: completed
2019-10-19 21:12:02.579 [  ERROR] config: command '/bin/tar cjf /config/backup/4.3-1804~gebb096804.tar.bz2 --exclude backup --exclude epggrab/*.sock --exclude timeshift/buffer --exclude imagecache/meta --exclude imagecache/data .' returned error code 2
2019-10-19 21:12:02.579 [  ERROR] config: executed in directory '/config'
2019-10-19 21:12:02.579 [  ERROR] config: please DON'T report this as an error, you may use --nobackup to skip
2019-10-19 21:12:02.579 [  ERROR] config: ... or run the above command in the printed directory
2019-10-19 21:12:02.579 [  ERROR] config: ... using the same user/group as for the Tvheadend executable
2019-10-19 21:12:02.579 [  ERROR] config: ... to check the reason for the unfinished backup
2019-10-19 21:12:02.579 [  ERROR] config: backup: fatal error
2019-10-19 21:12:02.671 [   INFO] main: Log started

Those dozens of group fails at the beginning look kind of strange..

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

Okay, I think I see the problem.. I'm pretty sure that group names are only allowed to be lowercase + numbers ([_a-z][-0-9_a-z])..

from docker-tvheadend.

bernhardberger avatar bernhardberger commented on May 31, 2024

Seems to fix it..

cont-init.d] 50-gid-video: executing... 
[cont-init.d] 50-gid-video: exited 0.

Confirming it works after the adjustment. Pull request incoming..

from docker-tvheadend.

thelamer avatar thelamer commented on May 31, 2024

PR building now. this logic was carried over from ubuntu container which does allow uppercase in UID/GID if you were interested.

from docker-tvheadend.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.