Comments (17)
output of docker exec tvheadend ls -l /dev/dri /dev/dvb
please
from docker-tvheadend.
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.
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.
Do you have a startup script that modifies the dvb permissions?
from docker-tvheadend.
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.
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.
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.
No, it's an 8 Tuner PCIe card from Digital Devices (Max S8)
from docker-tvheadend.
PS: changing the permissions to root:video
doesn't solve the issue. Still present in -ls36 and :latest
from docker-tvheadend.
@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.
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.
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.
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.
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.
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.
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.
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)
- [FEAT] enable libxml2 HOT 10
- [BUG] PERL Module missing - DateTime::Format::Strptime module HOT 8
- New build has lost XMLTV internal grabber for Schedules Direct HOT 10
- [BUG] Crash when deleting multiple recordings HOT 3
- [BUG] Unresponsive and can't stop container HOT 4
- [BUG] d1366a06-ls152 broke vaapi amd transcoding on FC38 host HOT 7
- [BUG] XMLTV - tv_grab_zz_sdjson can't determine local timezone HOT 4
- [BUG] Memory increase while recording HOT 4
- JSON XS perl module missing HOT 1
- [BUG] Permissions issue on /recordings folder HOT 2
- [BUG] TV_grab_url permission HOT 7
- [BUG] Cannot use DVB-C HOT 3
- [FEAT] Allow for setting up username and password from docker-config HOT 2
- [BUG] Picons are out of date HOT 10
- [FEAT] IPv6 Support HOT 4
- How to support IPv6 network video sources? HOT 6
- tvheadend docker recording problem files over 2GB[BUG] <title> HOT 3
- [FEAT] Compile libdvbcsa with icam support HOT 4
- [FEAT] Execute command after upgrading docker image HOT 2
- [BUG] Crash on Raspberry PI 5 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from docker-tvheadend.