Building Your Own CDVR Docker Image with Chrome (not Chromium) for YTTV TVE Support (amd64 processors only)

I uploaded our current Dockerfiles here. You can send us pull requests.

2 Likes

@chDVRuser If you're willing, here are a couple of updates to the image building process in post #1, that will yield a result even closer to "stock" (based on the recently posted fancybits Dockerfiles). This also works with YTTV, and it'd be interesting to know if it makes a difference with Xfinity.

A second bash script is needed, in addition to run.sh listed above. As always, when creating Linux scripts be sure your editor is using Linux-style linefeed line endings:

extract-version.sh:

#!/bin/sh
dpkg -s google-chrome-stable | awk -F': ' '/^Version/ {print $2}' | cut -d- -f1 > /chrome-version

echo "Chrome version: $(cat /chrome-version)"

And here's the Dockerfile, as closely matching the fancybits version as possible, while using Debian 12 and Chrome:

FROM debian:bookworm-slim

# Install dependencies
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        curl \
        gnupg \
        ca-certificates \
        tzdata \
        xvfb \
        tini && \
    rm -rf /var/lib/apt/lists/*

# Add Google Chrome APT repo and install Chrome Stable
RUN curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg && \
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list && \
    apt-get update && \
    apt-get install -y --no-install-recommends google-chrome-stable && \
    rm -rf /var/lib/apt/lists/*

# Create necessary directories
RUN mkdir -p /channels-dvr/data /data

# Copy and execute version extraction script
ADD extract-version.sh /usr/local/bin
RUN chmod +x /usr/local/bin/extract-version.sh && \
    /usr/local/bin/extract-version.sh && \
    rm /usr/local/bin/extract-version.sh

# Copy run script
ADD run.sh .
RUN chmod +x run.sh

# Set volume
VOLUME ["/channels-dvr"]

# Set tini as the init system
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["./run.sh"]

Before clicking build, be sure you attach both run.sh and extract-version.sh. Use the typical <Ctrl>-Left Click method for selecting additional files after clicking on the first. It should look like this:

Probably a bit of a longshot that it'll make a difference -- but, who knows?

1 Like

Thanks for the try, but same result. Fails.
Tries to authenticate Discovery (not in my package) then CSPAN (in my package) and fails on both.

Are you still considering supporting this image?

I've been using it (your latest post here, based on the recently posted fancybits Dockerfiles) in addition to the Channels DVR TVE image for YTTV and it's been working great so far.

I assume that to update Chrome in yours, one just needs to rebuild the image and then redeploy the CDVR TVE stack in Portainer.

Happy to do it.

Yes, to update Chrome in a way that will survive reboots, means rebuilding the image.

I may add this to Project One-Click at some point -- to automate the build, but for now I'll maintain the Dockerfile and it'll be a DIY local build.

Sound reasonable?

1 Like

Thanks, Sounds good.
I'll just build a new image if I need to update Chrome (currently v138).

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.