Last updated on 21 December 2024
Important or Recent Updates
Update | Date |
---|---|
New guide released | 21/01/2024 |
Addition of UID/GID to the Redis container | 19/08/2024 |
General compatibility announcement (updates pending) | 20/12/2024 |
As of the update on 20/12/2024 (Tube Archist v0.4.12) (Tube Archivist Elastic Search 8.16.0) this container will no longer work on DSM with its current Kernel (4.4.xxx). This is due to the Elastic Search container now requiring specific kernel security features to function.
A temporary workaround is possible by downgrading the Elastic Search container, however I have no way of saying how long it will function and will mean you will be using a container version that will not be receiving further updates.
Just waiting on bbilly1 to come back to me on the linked thread on whether the below is OK long term until any breaking changes take place.
image: bbilly1/tubearchivist-es:8.14.3
I won’t archive this guide yet as the container itself could be run via a machine with a newer Kernel version (Lets see what 2025 Synology models bring…)
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.
/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.
sudo chown 1000:0 /volume1/docker/tubearchivist/es
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:
Section | Setting |
---|---|
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.
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
Variable | Value |
---|---|
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_HOST | Enter your NAS IP Address here |
TA_USERNAME | Create a username for your login |
TA_PASSWORD | Create a password for your login |
ELASTIC_PASSWORD | Create a different password for the Elastic Search container |
TZ | (required) Your timezone wikipedia.org/wiki/List_of_tz_database_time_zones |
redis/redis-stack-server
No amendments required
bbilly1/tubearchivist-es
Variable | Value |
---|---|
ELASTIC_PASSWORD | The same elastic password from the section above |
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.
Hello DrFrankenstein,
I’m experiencing an issue with the archivist-es container (Elasticsearch) as well. I followed your instructions step by step, but now I’m encountering the error: “ERROR: Elasticsearch died while starting up, with exit code 1”. Could you please help me? I’ve tried deleting, restarting an reinstalling. But that didn’t help.
Logs says the following:
2024/12/20 11:39:58 stderr ERROR: Elasticsearch died while starting up, with exit code 1
2024/12/20 11:39:58 stderr
2024/12/20 11:39:58 stderr ERROR: Elasticsearch did not exit normally – check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
2024/12/20 11:39:58 stdout {“@timestamp”:”2024-12-20T10:39:58.539Z”, “log.level”:”ERROR”, “message”:”fatal exception while booting Elasticsearch”, “ecs.version”: “1.2.0”,”service.name”:”ES_ECS”,”event.dataset”:”elasticsearch.server”,”process.thread.name”:”main”,”log.logger”:”org.elasticsearch.bootstrap.Elasticsearch”,”elasticsearch.node.name”:”d0c4b7d3fc87″,”elasticsearch.cluster.name”:”docker-cluster”,”error.type”:”java.lang.UnsupportedOperationException”,”error.message”:”seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed”,”error.stack_trace”:”java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed\n\tat org.elasticsearch.nativeaccess@8.16.0/org.elasticsearch.nativeaccess.LinuxNativeAccess.tryInstallExecSandbox(LinuxNativeAccess.java:255)\n\tat org.elasticsearch.server@8.16.0/org.elasticsearch.bootstrap.Elasticsearch.initializeNatives(Elasticsearch.java:296)\n\tat org.elasticsearch.server@8.16.0/org.elasticsearch.bootstrap.Elasticsearch.initPhase2(Elasticsearch.java:169)\n\tat org.elasticsearch.server@8.16.0/org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:74)\n”}
2024/12/20 11:39:58 stdout {“@timestamp”:”2024-12-20T10:39:58.536Z”, “log.level”: “INFO”, “message”:”Using [jdk] native provider and native methods for [Linux]”, “ecs.version”: “1.2.0”,”service.name”:”ES_ECS”,”event.dataset”:”elasticsearch.server”,”process.thread.name”:”main”,”log.logger”:”org.elasticsearch.nativeaccess.NativeAccess”,”elasticsearch.node.name”:”d0c4b7d3fc87″,”elasticsearch.cluster.name”:”docker-cluster”}
2024/12/20 11:39:58 stdout {“@timestamp”:”2024-12-20T10:39:58.290Z”, “log.level”: “INFO”, “message”:”Using native vector library; to disable start with -Dorg.elasticsearch.nativeaccess.enableVectorLibrary=false”, “ecs.version”: “1.2.0”,”service.name”:”ES_ECS”,”event.dataset”:”elasticsearch.server”,”process.thread.name”:”main”,”log.logger”:”org.elasticsearch.nativeaccess.NativeAccess”,”elasticsearch.node.name”:”d0c4b7d3fc87″,”elasticsearch.cluster.name”:”docker-cluster”}
2024/12/20 11:39:52 stdout CompileCommand: dontinline java/lang/invoke/MethodHandle.asTypeUncached bool dontinline = true
2024/12/20 11:39:52 stdout CompileCommand: dontinline java/lang/invoke/MethodHandle.setAsTypeCache bool dontinline = true
Thank you so much in advance!
The ES container seems to always be the one part that’s super picky, even I had issues for a while! I see you are getting the SECCOMP errors what NAS are you running and which DSM Version out of interest. Let me have a look at Github as I had another user that for some reason had this exact error and we never got it running on DSM – where others its working!!
I will reply further over this evening.
I have been running TubeArchivist for several months now and now I have this error as well. Looks like Watchtower grabbed an update on 12/19 and now its stuck here.
I will pull the latest update here as well – If it’s the case it will be the end of this guide as ES cannot run with these elements turned on at this point. – Will reply again a little later..
Yeah, I can confirm my own copy no longer works – See the guide update for a temporary workaround.
I use a Synology 723+ with DSM 7.2.2-72806 Update 2 running. I was able to use Tube Archivist until yesterday evening. This morning I’ve got the error. No DSM Update or anything I’ve changed or triggered. I have Watchtower working in the background, is there the possibility that Tube Archivist 0.4.12 (released this morning) is the problem?
See the other comments from today – same issue here as well – I will be updating the post header shortly as it’s likely the end of the line for DSM using this container.
Yeah, I can confirm my own copy no longer works – See the guide update for a temporary workaround.
Yeah, I can confirm my own copy no longer works – See the guide update for a temporary workaround.