Project One-Click: All-in-One Installations of Docker Extensions and CDVR Custom Channels

Here's a one minute video I did stepping through Project: One-Click for MLB.tv. If this proves useful, I'll do a few more on subjects related to my projects and Channels Extensions in general.

4 Likes

Nice video. Short and straight to the point.

By the way, if this is you speaking in the video, you have a great voice! Very pleasant and soothing.

I would definitely watch more videos from you.

Your video is useful but if you're considering more, could you possibly start from the beginning to show the less technical folks, like myself, how to set everything up?

I've been hesitant to install Docker Desktop on my 16GB M2 Mac Mini because I remember it carved out a large chunk of memory on my PC, and my Mac idles between 40-65% memory usage.

I'm not sure if that's normal for a Mac or if I need to adjust a setting because my 16 GB PC, with more background processes running, idles at around 20% memory usage.

I was thinking along those lines too. A few more short videos covering Docker Desktop, Portainer, OliveTin and probably Organizr. With those, and Project One-Click, everything else one might want to install can be done with OliveTin Actions.

Regarding Docker Desktop on the Mac Mini M2, I just installed the above pieces recently on an 8GB model, and it looks like it's using around 2.75GB with 4 containers. Docker Desktop does allow you to limit resource usage if needed:

I would very much appreciate simple step by step posts or videos for setting up Portainer, Olivetin, Project One-Click, and others previously mentioned in this feed. I have unsuccessfully tried several times to set up Olivetin through Portainer. I think that I'm really struggling to correctly enter environment variables. In particular, properly identifying docker and Channels DVR folders on my Synology NAS.
Cheers to all of you who are doing amazing work on these projects.

1 Like

@bnhf I could not use portainer port 9000 it is in use by java.exe had to use 9001... Will this have an affect on using these Installations.

It will if port 9000 responds to a basic curl, as the scripts will assume http Portainer is there. If there's no response by java.exe, then the scripts will move to using the Portainer https port on 9443.

I could make this configurable if need be -- let me know.

EDIT: It's only these lines in one common script that would need tweaking, and you could actually have 9443 tested first and then switch the && and || assignments for an immediate fix (if needed):

portainerstack.sh:

curl -s -o /dev/null http://$portainerHost:9000 \
  && portainerURL="http://$portainerHost:9000/api/stacks?type=2&method=string&endpointId=2" \
  || portainerURL="https://$portainerHost:9443/api/stacks?type=2&method=string&endpointId=2"

This is what I get when i try to install using port 9000

Microsoft Windows [Version 10.0.19045.4170]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\system32>docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest
0520ba825fa991678b4bf5254d30fc88060ef050cb985c8c262c1c1f56cbead6
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:9000 -> 0.0.0.0:0: listen tcp 0.0.0.0:9000: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

C:\Windows\system32>docker run -d -p 8000:8000 -p 9001:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest
ef6d015c39f99b700a17e4d9042e4536b1f304f2b012da513e7772f2d0bd99a1

C:\Windows\system32>

using port 9001 trying to create Tubi ...

1 Like

@Edwin_Perez

I realize now that all of my tests have been with using a channel number override, and leaving the # in that field is failing. I'll fix that, but if you choose a starting channel number (in place of the "#"), like 12000 or whatever -- it should work.

use channels 3000 this is what happens appeared stuck ...

image

Did you make any changes to that curl test or did you leave it as is?

left it as is .....

level="info" msg="Before Parse Args" cmd="/config/tubi-for-channels.sh \"{{ dvr }}\" \"{{ TAG }}\" \"{{ HOST_PORT }}\" \"{{ TUBI_PORT }}\" \"{{ CDVR_STARTING_CHANNEL }}\""
level="info" msg="After Parse Args" cmd="/config/tubi-for-channels.sh \"192.168.50.68:8089\" \"latest\" \"7778\" \"7777\" \"3000\""
level="info" msg="Action starting" timeout="40" title="Create a Tubi-for-Channels Stack in Portainer + CDVR Custom Channels"
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""

And what happens if you try to curl port 9000 on your docker host? Is there a response?

EDIT: Your also going to need to restart OliveTin, as you're likely in a waiting loop. I need to add some additional tests and error handling to account for this scenario.

When I curled 9000 got nothing I could not get your curl command above to run on windows.

Restarted Olivetin like you set was in a loop.

Give me a bit to look at this and I'll get back to you...

@Edwin_Perez If you could pull :latest and do a One-Click install, it should either work -- or we should get a more meaningful error.

There's one container, Plex-for-Channels that takes quite awhile to initialize (about 5 minutes for a single region), and I'm trying to allow for that without looping indefinitely.

My suggestion would be to try anything but the Plex container, as everything else I've spun-up is reasonably quick.

No existing /config/comskipini.sh found or UPDATE_SCRIPTS set to true
No existing /config/deletelogs.sh found or UPDATE_SCRIPTS set to true
No existing /config/dockercompose.sh found or UPDATE_SCRIPTS set to true
No existing /config/edlstrip.sh found or UPDATE_SCRIPTS set to true
No existing /config/eplustv.sh found or UPDATE_SCRIPTS set to true
No existing /config/fifopipe_containerside.sh found or UPDATE_SCRIPTS set to true
No existing /config/fifopipe_hostside.sh found or UPDATE_SCRIPTS set to true
No existing /config/filebot.sh found or UPDATE_SCRIPTS set to true
No existing /config/fix_thumbnails.rb found or UPDATE_SCRIPTS set to true
No existing /config/fix_thumbnails.sh found or UPDATE_SCRIPTS set to true
No existing /config/foreground.sh found or UPDATE_SCRIPTS set to true
No existing /config/frndlytv-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/generatem3u.sh found or UPDATE_SCRIPTS set to true
No existing /config/healthcheck.sh found or UPDATE_SCRIPTS set to true
No existing /config/healthcheck_stack.sh found or UPDATE_SCRIPTS set to true
No existing /config/healthcheck_wsl.sh found or UPDATE_SCRIPTS set to true
No existing /config/ical_2_xmltv.py found or UPDATE_SCRIPTS set to true
No existing /config/ical_2_xmltv.sh found or UPDATE_SCRIPTS set to true
No existing /config/listcomskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/llc2metadata.sh found or UPDATE_SCRIPTS set to true
No existing /config/logfilter.sh found or UPDATE_SCRIPTS set to true
No existing /config/manualrecordings.sh found or UPDATE_SCRIPTS set to true
No existing /config/markforrerecord.sh found or UPDATE_SCRIPTS set to true
No existing /config/marknocommercials.sh found or UPDATE_SCRIPTS set to true
No existing /config/mediainfo.sh found or UPDATE_SCRIPTS set to true
No existing /config/mlb.tv-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/notifications.sh found or UPDATE_SCRIPTS set to true
No existing /config/organizr.sh found or UPDATE_SCRIPTS set to true
No existing /config/pingcdvr.sh found or UPDATE_SCRIPTS set to true
No existing /config/playonedl.sh found or UPDATE_SCRIPTS set to true
No existing /config/plex-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/plexiptv.sh found or UPDATE_SCRIPTS set to true
No existing /config/plextoken.sh found or UPDATE_SCRIPTS set to true
No existing /config/pluto-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/pluto.sh found or UPDATE_SCRIPTS set to true
No existing /config/portainerstack.sh found or UPDATE_SCRIPTS set to true
No existing /config/removecomskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/restartshutdown.sh found or UPDATE_SCRIPTS set to true
No existing /config/samsung-tvplus-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/scanlocalcontent.sh found or UPDATE_SCRIPTS set to true
No existing /config/setcomskipignore.sh found or UPDATE_SCRIPTS set to true
No existing /config/stationid.sh found or UPDATE_SCRIPTS set to true
No existing /config/stirr-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/tailscale.sh found or UPDATE_SCRIPTS set to true
No existing /config/tubi-for-channels.sh found or UPDATE_SCRIPTS set to true
No existing /config/vlc-bridge-fubo.sh found or UPDATE_SCRIPTS set to true
No existing /config/vlc-bridge-pbs.sh found or UPDATE_SCRIPTS set to true
No existing /config/vlc-bridge-uk.sh found or UPDATE_SCRIPTS set to true
No existing /config/watchtower.sh found or UPDATE_SCRIPTS set to true
----------------------------------------
Checking for .running files that don't match with currently defined DVRs...
ls: cannot access '*.running': No such file or directory
level="info" msg="OliveTin initializing" commit="86e5dfe" date="2023-03-24T23:32:48Z" version="2023.03.25"
level="debug" msg="Value of -configdir flag" value="."
level="info" msg="Setting log level to info"
level="info" msg="Init complete"
level="info" msg="OliveTin started" configDir="/config"
level="info" msg="Starting REST API" address="localhost:1339"
level="info" msg="Starting WebUI server" address="localhost:1340"
level="info" msg="Found the webui directory" dir="/var/www/olivetin/"
level="info" msg="Starting single HTTP frontend" address="0.0.0.0:1337"
level="info" msg="Installation ID" content="74223a0b-464f-4d84-8c15-03a15920fe3f" from="/config/installation-id.txt"
level="info" msg="Update check complete" NewVersion="none"
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="Before Parse Args" cmd="/config/tubi-for-channels.sh \"{{ dvr }}\" \"{{ TAG }}\" \"{{ HOST_PORT }}\" \"{{ TUBI_PORT }}\" \"{{ CDVR_STARTING_CHANNEL }}\""
level="info" msg="After Parse Args" cmd="/config/tubi-for-channels.sh \"192.168.50.68:8089\" \"latest\" \"7778\" \"7777\" \"3000\""
level="info" msg="Action starting" timeout="40" title="Create a Tubi-for-Channels Stack in Portainer + CDVR Custom Channels"
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""
level="info" msg="UserFromContext" usergroup="" username=""

Did the OliveTin Action terminate properly? And if so, can you post stdout from the OliveTin Logs?

Stuck on waiting .... no logs or stdout created yet.

1 Like

OK thanks. Restart the container, and I'll get back to you after a bit.