This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Tube Archivist ====== [[https://www.tubearchivist.com/|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. ==== Installation ==== TubeArchivist is available using docker compose, i will show you how to install with rootless podman of course. Add the usual dedicated user: <code bash> useradd -d /data/daemons/tubearchivist -m tubearchivist -g media </code> Create the needed folders: <code bash> mkdir /data/Media/YouTube chown tubearchivist:media /data/Media/YouTube su - tubearchivist mkdir cache es redis </code> Download the composer file from [[https://github.com/tubearchivist/tubearchivist/blob/master/docker-compose.yml|here]], and edit like the following: <file - docker-compose.yml> 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 </file> This example shows how to use Authelia SSO authentication (for more info see [[services:authelia|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: <code bash> su - tubearchivist podman compose pull </code> ==== Reverse Proxy ==== Follow the [[selfhost:nginx|The Reverse Proxy concept]] and the [[selfhost:sso|Authentication]] pages. TubeArchivist requires a subdomain, so i assume you will host as **https://tube.yourdomain.com**: <file - tube.conf> 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; } </file> ===== Autostart ===== To start it, and set it up on boot, as usual follow my indications [[gentoo:containers|Using Containers on Gentoo]], so link the **user-containers** init script: <code> ln -s /etc/init.d/user-containers /etc/init.d/user-containers.tubearchivist </code> and create the following config file: <file - /etc/conf.d/user-containers.tubearchivist> USER=tubearchivist DESCRIPTION="Download YouTube stuff" </file> Add the service to the default runlevel and start it now: <code bash> rc-update add user-containers.tubearchivist default rc-service user-containers.tubearchivist start </code> ===== Jellyfin Integration ===== Use [[https://github.com/tubearchivist/tubearchivist-jf-plugin|this plugin]] in JellyFin. In short, open JellyFin go to administration / plugins and add a new repository with the following details: * Repository name: TubeArchivistMetadata * Repository URL: https://github.com/tubearchivist/tubearchivist-jf-plugin/raw/master/manifest.json 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: * Collection name: whatever you like, maybe YouTube * TubeArchivist URL: http://127.0.0.1:8124 (you need to use the local URL to avoid the Authelia SSO filtering the plugin requests) * TubeArchivist API key: can be found inside TubeArchivist, under Settings / Application / Integration 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.