Skip to content

Tube Archivist in Container Manager on a Synology NAS

Important or Recent Updates
UpdateDate
New guide released21/01/2024
Addition of UID/GID to the Redis container19/08/2024
Historic updates.


What is Tube Archivist?

To quote the GitHub page

Once your YouTube video collection grows, it becomes hard to search and find a specific video. That’s where Tube Archivist comes in: By indexing your video collection with metadata from YouTube, you can organize, search and enjoy your archived YouTube videos without hassle offline through a convenient web interface.

This includes:
– Subscribe to your favourite YouTube channels
– Download Videos using yt-dlp
– Index and make videos searchable
– Play videos
– Keep track of viewed and unviewed videos

Let’s Begin

In this guide I will take you through the steps to things up and running in Container Manager. We will be using the new Projects (Docker Compose) feature to get this running as it will save you time vs manual setup using the normal UI

If you have followed my other guides this one is a little different as there is not as much pre setup required just make sure you have followed these first.

Folder Setup

Let’s start by getting some folders set up for the containers to use. Open up File Station create the following.

Folders
/data/media/youtube
/docker/projects/archivist-compose
/docker/tubearchivist/cache
/docker/tubearchivist/redis
/docker/tubearchivist/es

Folder Permissions

Next we need to get under the covers with DSM and set some specific file permissions for a couple of the folders we just created. This is because the Redis and Elasticsearch containers only run as specific users and can’t be overridden, without this step Tube Archivist can’t start up.

Just like you did in the Docker User Setup guide you need to SSH into your NAS and then run the following commands in order to set the permissions. As we are doing this as the ‘root’ user you will be asked for your password the first time you run the command.

Bash
sudo chown 1000:0 /volume1/docker/tubearchivist/es

Bash
sudo chown 999:100 /volume1/docker/tubearchivist/redis

You will not see any output after each command and in File Station you should now see the permissions on the folders have changed.

Container Manager

Next we are going to set up a ‘Project’ in Container Manager. Open up Container Manager and click on Project then on the right-hand side click ‘Create’.

In the next screen we will set up our General Settings, enter the following:

SectionSetting
Project Name:tubearchivist
Path:/docker/projects/archivist-compose
Source:Create docker-compose.yml

Next we are going to drop in our docker compose configuration, copy all the code in the box below and paste it into line ‘1’ just like the screenshot.

YAML
services:
  tubearchivist:
    container_name: tubearchivist
    image: bbilly1/tubearchivist
    ports:
      - 8000:8000/tcp
    volumes:
      - /volume1/data/media/youtube:/youtube
      - /volume1/docker/tubearchivist/cache:/cache
    environment:
      - ES_URL=http://archivist-es:9200
      - REDIS_HOST=archivist-redis
      - HOST_UID=1234 #CHANGE_TO_YOUR_UID
      - HOST_GID=65432 #CHANGE_TO_YOUR_GID
      - TA_HOST=192.168.0.10 #Change to your NAS IP
      - TA_USERNAME=enter-a-username #Username for login
      - TA_PASSWORD=enter-a-password #password for login
      - ELASTIC_PASSWORD=enter-a-password # set password for Elasticsearch
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
    depends_on:
      - archivist-es
      - archivist-redis
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 2m
      timeout: 10s
      retries: 3
      start_period: 30s
    security_opt:
      - no-new-privileges:true
    restart: always
      
  archivist-redis:
    image: redis/redis-stack-server
    container_name: archivist-redis
    expose:
      - "6379"
    environment:
      - HOST_UID=999
      - HOST_GID=100
    volumes:
      - /volume1/docker/tubearchivist/redis:/data
    depends_on:
      - archivist-es
    security_opt:
      - no-new-privileges:true
    restart: always

  archivist-es:
    image: bbilly1/tubearchivist-es
    container_name: archivist-es
    environment:
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - xpack.security.enabled=true
      - discovery.type=single-node
      - path.repo=/usr/share/elasticsearch/data/snapshot
      - ELASTIC_PASSWORD=password-from-above #same password from above
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /volume1/docker/tubearchivist/es:/usr/share/elasticsearch/data
    expose:
      - "9200"
    security_opt:
      - no-new-privileges:true
    restart: always

Environment Variables

We are now going to amend some key variables to make sure the containers have access to our folders, and also knows where we are in the world and set up some passwords. Don’t change any other settings other than those I mention.

You will notice that the compose has three main sections as it is made up of 3 containers which rely on each other to make the overall app work.

image: bbilly1/tubearchivist
(Main Tube Archivist container)

image: redis/redis-stack-server
(Redis database server)

image: bbilly1/tubearchivist-es
(Elasticsearch search and analytics engine)

Let’s change the settings for them one at a time.

bbilly1/tubearchivist

VariableValue
HOST_UID(required) The UID you obtained in the user setup guide
HOST_GID(required) The GID you obtained in the user setup guide
TA_HOSTEnter your NAS IP Address here
TA_USERNAMECreate a username for your login
TA_PASSWORDCreate a password for your login
ELASTIC_PASSWORDCreate a different password for the Elastic Search container
TZ(required) Your timezone wikipedia.org/wiki/List_of_tz_database_time_zones
bbilly1/tubearchivist

redis/redis-stack-server

No amendments required

bbilly1/tubearchivist-es

VariableValue
ELASTIC_PASSWORDThe same elastic password from the section above
bbilly1/tubearchivist-es

Once you have made the edits you can click ‘Next’

You do not need to enable anything on the ‘Web portal settings’ screen click ‘Next’ again.

On the final screen click ‘Done’ which will begin the download of the container images and once downloaded they will be launched!

The image will now be downloaded and extracted. You should see ‘Code 0’ when it has finished.


The first ever start up can take a few minutes so be patient while everything sets up, so in the interim continue below.

Firewall Exceptions

(Skip if you don’t have the Firewall configured)

If you have the Synology Firewall enabled please see this additional guide for further info on exceptions and correct set up.

Some final steps

Tube Archivist will now be running and can be found on port 8000 on your NAS IP

e.g. 192.168.0.40:8000

You should be able to log in using the Username and Password you set up in the yaml earlier

There are no other changes we need to make to the default configuration, however you can go in and make changes to your preferences.

Some key things I have found from a UI perspective.

Channels, probably fairly obvious but add the URLs for full channels you want to subscribe to in this section, you can configure Archivist to then download all the back catalogue and future videos.

Downloads, I use this to grab individual videos using the + button on the right-hand side.

Make sure you have a look at the documentation over on the Tube Archivist site.

https://docs.tubearchivist.com/

Browser Extension

https://github.com/tubearchivist/browser-extension




Looking for some help, join our Discord community

If you are struggling with any steps in the guides or looking to branch out into other containers join our Discord community!

Buy me a beverage!

If you have found my site useful please consider pinging me a tip as it helps cover the cost of running things or just lets me stay hydrated. Plus 10% goes to the devs of the apps I do guides for every year.

Published inDockerMedia Management 7.2Synology

34 Comments

      • ggyy ggyy

        i go to Container Manager > Network > synobridge(setup form your “Step 3: Setting Up a Docker Bridge Network”)
        i don’t know why but i saw inside synobridge
        tubearchivist , archivist-redis , archivist-es
        haven’t select automatically
        i manual select them all and now Tube Archivist work fine finally

        • Dr_Frankenstein Dr_Frankenstein

          OK that is odd as this guide doesn’t use synobridge as the compose will create a specific bridge for the containers to use (we don’t need them to talk to other containers on the bridge). I will see if there is anything I can add to the compose to force the use of its own network as it should be doing this without further intervention.

  1. Super CoolPerson Super CoolPerson

    Hey,
    Your guides are amazing and unfortunately this is the first one I had issues with. But I did manage to fix it. Here’s what I did:

    In the “tubearchivist” section, you have to change your host UID and host GID to the IDs of the user currently logged into DSM. You can do this by getting the ID from one of the guides on here, or by typing this into SSH:

    id > [path of file to export ID of current user to]

    For example, id > /volume1/docker/tubearchivist/id.txt

    You still have to do the 2 SSH commands of changing the file/folder permissions for this to work, shown in this guide.

    So again, change the 2 values (HOST_UID, HOST_GID) in your docker project when setting it up, and it will work!

    • Dr_Frankenstein Dr_Frankenstein

      Hey Super CoolPerson 🙂

      It looks like you may have skipped the bit in the guide that mentions changing them to your dockerlimited user, but the key is you got it working 🙂

  2. Michel van den Hoek Michel van den Hoek

    I have set everything up as indicated and everything is being installed, but I cannot access TubeArchivist.
    Everything has started nicely, only when I look at the log of the Tubearchivivist container I see that this Redis cannot connect. redis connection failed, what am I doing wrong

    • Dr_Frankenstein Dr_Frankenstein

      If after a few minutes you are still getting the error also check the Redis container to see if it’s displaying any errors. It usually relates to the permissions from what I have generally seen and setting up the folders fresh again fixes it. Let me know!

      • Michel van den Hoek Michel van den Hoek

        I redid permissions as described.
        but still won’t work. I see an error message in Redis:
        failed loading RedisAI API.
        and Could not initialize redisAI_intError.

        Tubearchivist container keeps showing Redis connection failed

        • Dr_Frankenstein Dr_Frankenstein

          Can you try removing these two lines from the Redis container section and see if it then starts up. Redis always seems to be really finicky I had a similar issue on my personal instance which led to me adding these lines its like flipping a coin!

          environment:
          - HOST_UID=999
          - HOST_GID=100

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

drfrankenstein.co.uk – writing Synology Docker Guides since 2016 – Join My Discord!