TubeArchivist is YouTube downloader and metadata collector. You can use it to download your favourite YouTube channels and playlists (to dowload single videos, create a playlist and add it to that). With an additional plugin it can feed Jellyfin with all the metadata for smooth navigation.
TubeArchivist is available using docker compose, i will show you how to install with rootless podman of course.
Add the usual dedicated user:
useradd -d /data/daemons/tubearchivist -m tubearchivist -g media
Create the needed folders:
mkdir /data/Media/YouTube chown tubearchivist:media /data/Media/YouTube su - tubearchivist mkdir cache es redis
Download the composer file from here, and edit like the following:
version: '3.5' services: tubearchivist: container_name: tubearchivist image: bbilly1/tubearchivist ports: - 8124:8000 volumes: - /data/Media/YouTube:/youtube - /data/daemons/tubearchivist/cache:/cache environment: - ES_URL=http://archivist-es:9200 - REDIS_CON=redis://archivist-redis:6379 - TA_HOST=https://tube.mydomain.com http://127.0.0.1:8124 # Uncommen tthe next two to NOT use SSO: #- TA_USERNAME=not_needed #- TA_PASSWORD=not_needed # Comment the next three to use SSO: - TA_ENABLE_AUTH_PROXY=true - TA_AUTH_PROXY_USERNAME_HEADER=HTTP_REMOTE_USER - TA_AUTH_PROXY_LOGOUT_URL=https://login.mydomain.com/logout - ELASTIC_PASSWORD=<< create a random password >> - TZ=Europe/London # Uncomment to enable extra debug: #- DJANGO_DEBUG=True depends_on: - archivist-es - archivist-redis networks: - tubearchivist-net archivist-redis: image: redis container_name: archivist-redis restart: unless-stopped expose: - "6379" volumes: - /data/daemons/tubearchivist/redis:/data depends_on: - archivist-es networks: - tubearchivist-net archivist-es: image: bbilly1/tubearchivist-es container_name: archivist-es environment: - "ELASTIC_PASSWORD=<< copy same password above >>" - "ES_JAVA_OPTS=-Xms1g -Xmx1g" - "xpack.security.enabled=true" - "discovery.type=single-node" - "path.repo=/usr/share/elasticsearch/data/snapshot" ulimits: memlock: soft: -1 hard: -1 volumes: - /data/daemons/tubearchivist/es:/usr/share/elasticsearch/data expose: - "9200" networks: - tubearchivist-net networks: tubearchivist-net: dns_enabled: true
This example shows how to use Authelia SSO authentication (for more info see here), you will not need to setup an initial password and username.
Adding http://127.0.0.1:8124 to TA_HOST is required to ensure that the Jellyfin plugin works.
Pull the images:
su - tubearchivist
podman compose pull
Follow the The Reverse Proxy concept and the Authentication pages.
TubeArchivist requires a subdomain, so i assume you will host as https://tube.yourdomain.com:
server { server_name tube.mydomain.com; listen 443 ssl; listen 8443 ssl; http2 on; access_log /var/log/nginx/tube.mydomain.com_access_log main; error_log /var/log/nginx/tube.mydomain.com_error_log info; include "org.mydomain/authelia_location.conf"; location ^~ / { include "com.mydomain/authelia_proxy.conf"; include "com.mydomain/authelia_authrequest.conf"; proxy_pass http://127.0.0.1:8124; } include com.mydomain/certbot.conf; }
To start it, and set it up on boot, as usual follow my indications Using Containers on Gentoo, so link the user-containers init script:
ln -s /etc/init.d/user-containers /etc/init.d/user-containers.tubearchivist
and create the following config file:
USER=tubearchivist DESCRIPTION="Download YouTube stuff"
Add the service to the default runlevel and start it now:
rc-update add user-containers.tubearchivist default rc-service user-containers.tubearchivist start
Use this plugin in JellyFin.
In short, open JellyFin go to administration / plugins and add a new repository with the following details:
Now navigate to the plugins and install TubeArchivistMetadata, now restart Jellyfin server.
After Jellyfin is running again, go to the plugins page and configure the TubeArchivistMetadata plugin with the following settings:
Now, to use the plugin, in Jellyfin go to settings → libraries and add a new library of type “TV shows” and unselect all sources fo all kinds except TubeArchivist.