diff --git a/docs/source/guides/install/docker.rst b/docs/source/guides/install/docker.rst index b9813e94..0a7c6282 100644 --- a/docs/source/guides/install/docker.rst +++ b/docs/source/guides/install/docker.rst @@ -2,141 +2,95 @@ Docker ====== -For automating ``subscriptions.yaml`` downloads to pull new media, see :ref:`this page ` on how to set up a cron job in any of the docker containers. - -The ``ytdl-sub`` Docker images use :lsio:`LSIO-based images <\ >` and install ytdl-sub on top. There are two flavors to choose from. - -.. margin:: - - .. tip:: - - The recommended docker image is the GUI image. - - :ref:`Docker Compose ` is the recommended way of setting up a ``ytdl-sub`` docker container. +The ``ytdl-sub`` Docker images use :lsio:`LSIO-based images <\ >` and install ytdl-sub +on top. There are two flavors or variants to choose from. For a more user-friendly +experience editing the `configuration`_, we recommend the `GUI image`_ +variant. :ref:`Docker Compose ` is +the recommended way of managing a ``ytdl-sub`` docker container. See :ref:`Automating +Downloads ` for how to +automate running ``ytdl-sub`` in a container running either variant. GUI Image --------- -The GUI image uses LSIO's :lsio-gh:`docker-code-server image <\ >` for its base image. More info on other code-server environment variables can be found within its documentation. +The GUI image is based on :lsio-gh:`LSIO's docker-code-server image <\ >` to provide you +full management of ``ytdl-sub``, such as file editing and terminal access, all within +your browser using the VS Code web UI. See its documentation regarding environment +variables and other details. Once running, open `the web UI`_ to edit the +`configuration`_ and run ``ytdl-sub``. -After starting, the code-server will be running at http://localhost:8443. Open this page in a browser to access and interact with ``ytdl-sub``. +.. _`the web UI`: http://localhost:8443 Headless Image -------------- -The headless image uses LSIO's :lsio-gh:`docker-baseimage-alpine image <\ >` for its base image. Execute the following command to access and interact with ``ytdl-sub``: +The headless image is based on :lsio-gh:`LSIO's docker-baseimage-alpine image <\ +>`. Once running, the default command just starts services including cron for +:ref:`Automating Downloads ` but otherwise doesn't run ``ytdl-sub``. You may run arbitrary ``ytdl-sub`` +commands using the ``--rm --user="${PUID}:${PGID}" --entrypoint="ytdl-sub"`` options to +either ``$ docker run`` or ``$ docker compose run``. Overriding the image's +``ENTRYPOINT`` is important so that cron doesn't run ``ytdl-sub`` while you're running +it manually. -.. code-block:: bash +For example:: - docker exec -u abc -it ytdl-sub /bin/bash + $ docker compose run --rm --user="${PUID}:${PGID}" --entrypoint="ytdl-sub" ytdl-sub sub Install with Docker Compose --------------------------- -Docker Compose is an easy "set it and forget it" install method. Follow the instructions below to create a ``compose.yaml`` file for your chosen ``ytdl-sub`` image. - -.. margin:: - - .. important:: - - Set the PUID and PGID to the UID and GID associated with the user you want to own the downloaded files. Setting these values to root UID and GID may create issues with your media managers. - -.. tab-set:: - - .. tab-item:: GUI Image - - .. code-block:: yaml - :caption: compose.yaml - - services: - ytdl-sub: - image: ghcr.io/jmbannon/ytdl-sub-gui:latest - container_name: ytdl-sub - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Los_Angeles - volumes: - - :/config - - :/tv_shows # optional - - :/movies # optional - - :/music_videos # optional - - :/music # optional - ports: - - 8443:8443 - restart: unless-stopped - - .. tab-item:: Headless Image - - .. code-block:: yaml - :caption: compose.yaml - - services: - ytdl-sub: - image: ghcr.io/jmbannon/ytdl-sub:latest - container_name: ytdl-sub - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Los_Angeles - volumes: - - :/config - - :/tv_shows # optional - - :/movies # optional - - :/music_videos # optional - - :/music # optional - restart: unless-stopped - -Device Passthrough -~~~~~~~~~~~~~~~~~~~ -For CPU or GPU passthrough, you must use either the GUI image or the headless Ubuntu image -``ghcr.io/jmbannon/ytdl-sub:ubuntu-latest``. - -The docker-compose examples use the GUI image. - -CPU Passthrough -^^^^^^^^^^^^^^^ +Docker Compose provides a declarative way to configure and orchestrate containers which +makes them easier to manage and re-use. Create a ``compose.yaml`` file in your project +directory such as: .. code-block:: yaml - :emphasize-lines: 5-6 - :caption: compose.yaml + :caption: compose.yaml - services: - ytdl-sub: - image: ghcr.io/jmbannon/ytdl-sub-gui:latest - container_name: ytdl-sub - devices: - - /dev/dri:/dev/dri # CPU passthrough - restart: unless-stopped - -GPU Passthrough -^^^^^^^^^^^^^^^ - -.. Awe - -.. code-block:: yaml - :caption: compose.yaml - :emphasize-lines: 5-13 - - services: - ytdl-sub: - image: ghcr.io/jmbannon/ytdl-sub-gui:latest - container_name: ytdl-sub - environment: - - .. - - NVIDIA_DRIVER_CAPABILITIES=all # Nvidia ENV args - - NVIDIA_VISIBLE_DEVICES=all - deploy: - resources: - reservations: - devices: - - capabilities: ["gpu"] # GPU passthrough - restart: unless-stopped + services: + ytdl-sub: + # The GUI image variant: + image: ghcr.io/jmbannon/ytdl-sub-gui:latest + # Or use the headless image variant: + # image: ghcr.io/jmbannon/ytdl-sub:latest + # For CPU/GPU passthrough, use the GUI image above or the headless Ubuntu image: + # image: ghcr.io/jmbannon/ytdl-sub:ubuntu-latest + container_name: ytdl-sub + restart: unless-stopped + environment: + - TZ=America/Los_Angeles + # Set these as appropriate so your users can access the downloaded files in + # your library: + - PUID=1000 + - PGID=1000 + # Optionally passthrough your NVidia GPU: + # - NVIDIA_DRIVER_CAPABILITIES=all + # - NVIDIA_VISIBLE_DEVICES=all + volumes: + - :/config + - :/tv_shows # optional + - :/movies # optional + - :/music_videos # optional + - :/music # optional + # Not necessary for the headless image variant: + ports: + - 8443:8443 + # Optionally passthrough the CPU for hardware acceleration: + # devices: + # - /dev/dri:/dev/dri + # Optionally passthrough the GPU: + # deploy: + # resources: + # reservations: + # devices: + # - capabilities: ["gpu"] Docker CLI ---------- -If you prefer to only run the container once, you can use the CLI command instead. The following command is for the gui image, and will not restart if it comes down for any reason. See `the Docker reference `_ for further information on the parameters and other options you can use. +You can run the container on an ad-hoc basis without Docker Compose using the Docker CLI +instead. It will not restart if stopped for any reason, including rebooting the +host. The following command is for the gui image: .. code-block:: bash @@ -153,6 +107,9 @@ If you prefer to only run the container once, you can use the CLI command instea -v :/music \ ghcr.io/jmbannon/ytdl-sub-gui:latest +See `the Docker reference `_ for further +details. + Configuration -------------