====== 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:
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 [[https://github.com/tubearchivist/tubearchivist/blob/master/docker-compose.yml|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 [[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:
su - tubearchivist
podman compose pull
==== 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**:
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;
}
===== 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:
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
===== 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.