[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71048":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},71048,"tubearchivist","tubearchivist\u002Ftubearchivist","Your self hosted YouTube media server","https:\u002F\u002Fwww.tubearchivist.com",null,"Python",8085,403,40,22,0,112,128,215,336,38.82,"GNU General Public License v3.0",false,"develop",[25,26,27,28,29,30,31],"archive","download-manager","download-videos","elasticsearch","media-server","youtube","youtube-dl","2026-06-12 02:02:47","![Tube Archivist](assets\u002Ftube-archivist-front.jpg?raw=true \"Tube Archivist Banner\")\n[*more screenshots and video*](SHOWCASE.MD)\n\n\u003Cdiv align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002Fr\u002Fbbilly1\u002Ftubearchivist\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftiles.tilefy.me\u002Ft\u002Ftubearchivist-docker.png\" alt=\"tubearchivist-docker\" title=\"Tube Archivist Docker Pulls\" height=\"50\" width=\"190\"\u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fstargazers\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftiles.tilefy.me\u002Ft\u002Ftubearchivist-github-star.png\" alt=\"tubearchivist-github-star\" title=\"Tube Archivist GitHub Stars\" height=\"50\" width=\"190\"\u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fforks\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftiles.tilefy.me\u002Ft\u002Ftubearchivist-github-forks.png\" alt=\"tubearchivist-github-forks\" title=\"Tube Archivist GitHub Forks\" height=\"50\" width=\"190\"\u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.tubearchivist.com\u002Fdiscord\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftiles.tilefy.me\u002Ft\u002Ftubearchivist-discord.png\" alt=\"tubearchivist-discord\" title=\"TA Discord Server Members\" height=\"50\" width=\"190\"\u002F>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## Table of contents\n\n* [Docs](https:\u002F\u002Fdocs.tubearchivist.com\u002F) with [FAQ](https:\u002F\u002Fdocs.tubearchivist.com\u002Ffaq\u002F), and API documentation\n* [Core functionality](#core-functionality)\n* [Resources](#resources)\n* [Installing](#installing)\n* [Getting Started](#getting-started)\n* [Known limitations](#known-limitations)\n* [Port Collisions](#port-collisions)\n* [Common Errors](#common-errors)\n* [Roadmap](#roadmap)\n* [Donate](#donate)\n\n------------------------\n\n## Core functionality\n\nOnce 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:\n\n* Subscribe to your favorite YouTube channels\n* Download Videos using **[yt-dlp](https:\u002F\u002Fgithub.com\u002Fyt-dlp\u002Fyt-dlp)**\n* Index and make videos searchable\n* Play videos\n* Keep track of viewed and unviewed videos\n\n## Resources\n\n* [Discord](https:\u002F\u002Fwww.tubearchivist.com\u002Fdiscord): Connect with us on our Discord server.\n* [r\u002FTubeArchivist](https:\u002F\u002Fwww.reddit.com\u002Fr\u002FTubeArchivist\u002F): Join our Subreddit.\n* [Browser Extension](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Fbrowser-extension) Tube Archivist Companion, for [Firefox](https:\u002F\u002Faddons.mozilla.org\u002Faddon\u002Ftubearchivist-companion\u002F) and [Chrome](https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Ftubearchivist-companion\u002Fjjnkmicfnfojkkgobdfeieblocadmcie)\n* [Jellyfin Plugin](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist-jf-plugin): Add your videos to Jellyfin\n* [Plex Plugin](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist-plex): Add your videos to Plex\n\n## Installing\n\nFor minimal system requirements, the Tube Archivist stack needs around 2GB of available memory for a small testing setup and around 4GB of available memory for a mid to large sized installation. Minimal with dual core with 4 threads, better quad core plus.\nThis project requires docker. Ensure it is installed and running on your system.\n\nThe documentation has additional user provided instructions for [Unraid](https:\u002F\u002Fdocs.tubearchivist.com\u002Finstallation\u002Funraid\u002F), [Synology](https:\u002F\u002Fdocs.tubearchivist.com\u002Finstallation\u002Fsynology\u002F) and [Podman](https:\u002F\u002Fdocs.tubearchivist.com\u002Finstallation\u002Fpodman\u002F).\n\nThe instructions here should get you up and running quickly, for Docker beginners and full explanation about each environment variable, see the [docs](https:\u002F\u002Fdocs.tubearchivist.com\u002Finstallation\u002Fdocker-compose\u002F).\n\nTake a look at the example [docker-compose.yml](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fblob\u002Fmaster\u002Fdocker-compose.yml) and configure the required environment variables.\n\nAll environment variables are explained in detail in the docs [here](https:\u002F\u002Fdocs.tubearchivist.com\u002Finstallation\u002Fenv-vars\u002F).\n\nBoth `TA_PASSWORD` and `ELASTIC_PASSWORD` can be suffixed with `_FILE` to allow passing in passwords as secrets. `_FILE` is a convention used by some images including [ElasticSearch](https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fdeploy-manage\u002Fdeploy\u002Fself-managed\u002Finstall-elasticsearch-docker-configure)\n\n### TubeArchivist\n\n| Environment Var               | Value | Required |\n| ----------------------------- | ----- | -------- |\n| TA_HOST                       | Server IP or hostname `http:\u002F\u002Ftubearchivist.local:8000` | Required |\n| TA_USERNAME                   | Initial username when logging into TA | Required |\n| TA_PASSWORD                   | Initial password when logging into TA | Required |\n| ELASTIC_PASSWORD              | Password for ElasticSearch | Required |\n| REDIS_CON                     | Connection string to Redis | Required |\n| TZ                            | Set your timezone for the scheduler | Required |\n| TA_PORT                       | Overwrite Nginx port | Optional |\n| TA_BACKEND_PORT               | Overwrite container internal backend server port | Optional |\n| TA_ENABLE_AUTH_PROXY          | Enables support for forwarding auth in reverse proxies | [Read more](https:\u002F\u002Fdocs.tubearchivist.com\u002Fconfiguration\u002Fforward-auth\u002F) |\n| TA_AUTH_PROXY_USERNAME_HEADER | Header containing username to log in | Optional |\n| TA_AUTH_PROXY_LOGOUT_URL      | Logout URL for forwarded auth | Optional |\n| ES_URL                        | URL That ElasticSearch runs on | Optional |\n| ES_DISABLE_VERIFY_SSL         | Disable ElasticSearch SSL certificate verification | Optional |\n| ES_SNAPSHOT_DIR               | Custom path where elastic search stores snapshots for master\u002Fdata nodes | Optional |\n| HOST_GID                      | Allow TA to own the video files instead of container user | Optional |\n| HOST_UID                      | Allow TA to own the video files instead of container user | Optional |\n| ELASTIC_USER                  | Change the default ElasticSearch user | Optional |\n| TA_LDAP                       | Configure TA to use LDAP Authentication | [Read more](https:\u002F\u002Fdocs.tubearchivist.com\u002Fconfiguration\u002Fldap\u002F) |\n| DISABLE_STATIC_AUTH           | Remove authentication from media files, (Google Cast...) | [Read more](https:\u002F\u002Fdocs.tubearchivist.com\u002Finstallation\u002Fenv-vars\u002F#disable_static_auth) |\n| TA_AUTO_UPDATE_YTDLP          | Configure TA to automatically install the latest yt-dlp on container start | Optional |\n| DJANGO_DEBUG                  | Return additional error messages, for debug only | Optional |\n| TA_LOGIN_AUTH_MODE            | Configure the order of login authentication backends (Default: single) | Optional |\n\n| TA_LOGIN_AUTH_MODE value | Description |\n| ------------------------ | ----------- |\n| single                   | Only use a single backend (default, or LDAP, or Forward auth, selected by TA_LDAP or TA_ENABLE_AUTH_PROXY) |\n| local                    | Use local password database only |\n| ldap                     | Use LDAP backend only |\n| forwardauth              | Use reverse proxy headers only |\n| ldap_local               | Use LDAP backend in addition to the local password database |\n\n### ElasticSearch\n\n| Environment Var  | Value | Required |\n| ---------------- | ----- | -------- |\n| ELASTIC_PASSWORD | Matching password `ELASTIC_PASSWORD` from TubeArchivist | Required |\n| http.port        | Change the port ElasticSearch runs on | Optional |\n\n## Update\n\nAlways use the *latest* (the default) or a named semantic version tag for the docker images. The *unstable* tags see [CONTRIBUTING.md#beta-testing](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md#beta-testing).\n\nYou will see the current version number of **Tube Archivist** in the footer of the interface. There is a daily version check task querying tubearchivist.com, notifying you of any new releases in the footer. After updating, check the footer to verify you are running the expected version.\n\n* This project is tested for updates between one or two releases maximum. Further updates back may or may not be supported. Ideally apply new updates at least once per month.\n* There can be breaking changes between updates, particularly as the application grows, new environment variables or settings might be required for you to set in the your docker-compose file. *Always* check the **release notes**: Any breaking changes will be marked there.\n* All testing and development is done with the Elasticsearch version number as mentioned in the provided *docker-compose.yml* file. This will be updated from time to time. Running an older version of Elasticsearch is most likely not going to result in any issues, but it's still recommended to run the same version as mentioned. Use `bbilly1\u002Ftubearchivist-es` to automatically get the recommended version.\n\n## Getting Started\n\n1. Go through the **settings** page and look at the available options. Particularly set *Download Format* to your desired video quality before downloading. **Tube Archivist** downloads the best available quality by default. To support iOS or MacOS and some other browsers a compatible format must be specified. For example:\n\n    ```\n    bestvideo[vcodec*=avc1]+bestaudio[acodec*=mp4a]\u002Fmp4\n    ```\n\n2. Subscribe to some of your favorite YouTube channels on the **channels** page.\n3. On the **downloads** page, click on *Rescan subscriptions* to add videos from the subscribed channels to your Download queue or click on *Add to download queue* to manually add Video IDs, links, channels or playlists.\n4. Click on *Start download* and let **Tube Archivist** to it's thing.\n5. Enjoy your archived collection!\n\n### Port Collisions\n\nIf you have a collision on port `8000`, best solution is to use dockers *HOST_PORT* and *CONTAINER_PORT* distinction: To for example change the interface to port 9000 use `9000:8000` in your docker-compose file.\n\nFor more information on port collisions, check the docs.\n\n## Common Errors\n\nHere is a list of common errors and their solutions.\n\n### `vm.max_map_count`\n\n**Elastic Search** in Docker requires the kernel setting of the host machine `vm.max_map_count` to be set to at least 262144.\n\nTo temporary set the value run:\n\n```shell\nsudo sysctl -w vm.max_map_count=262144\n```\n\nTo apply the change permanently depends on your host operating system:\n\n* For example on Ubuntu Server add `vm.max_map_count = 262144` to the file `\u002Fetc\u002Fsysctl.conf`.\n* On Arch based systems create a file `\u002Fetc\u002Fsysctl.d\u002Fmax_map_count.conf` with the content `vm.max_map_count = 262144`.\n* On any other platform look up in the documentation on how to pass kernel parameters.\n\n### Permissions for elasticsearch\n\nIf you see a message similar to `Unable to access 'path.repo' (\u002Fusr\u002Fshare\u002Felasticsearch\u002Fdata\u002Fsnapshot)` or `failed to obtain node locks, tried [\u002Fusr\u002Fshare\u002Felasticsearch\u002Fdata]` and `maybe these locations are not writable` when initially starting elasticsearch, that probably means the container is not allowed to write files to the volume.\nTo fix that issue, shutdown the container and on your host machine run:\n\n```shell\nchown 1000:0 -R \u002Fpath\u002Fto\u002Fmount\u002Fpoint\n```\n\nThis will match the permissions with the **UID** and **GID** of elasticsearch process within the container and should fix the issue.\n\n### Disk usage\n\nThe Elasticsearch index will turn to ***read only*** if the disk usage of the container goes above 95% until the usage drops below 90% again, you will see error messages like `disk usage exceeded flood-stage watermark`.\n\nSimilar to that, TubeArchivist will become all sorts of messed up when running out of disk space. There are some error messages in the logs when that happens, but it's best to make sure to have enough disk space before starting to download.\n\n## `error setting rlimit`\n\nIf you are seeing errors like `failed to create shim: OCI runtime create failed` and `error during container init: error setting rlimits`, this means docker can't set these limits, usually because they are set at another place or are incompatible because of other reasons. Solution is to remove the `ulimits` key from the ES container in your docker compose and start again.\n\nThis can happen if you have nested virtualizations, e.g. LXC running Docker in Proxmox.\n\n## Known limitations\n\n* Video files created by Tube Archivist need to be playable in your browser of choice. Not every codec is compatible with every browser and might require some testing with format selection.\n* Every limitation of **yt-dlp** will also be present in Tube Archivist. If **yt-dlp** can't download or extract a video for any reason, Tube Archivist won't be able to either.\n* There is no flexibility in naming of the media files.\n\n\u003C!-- The Roadmap section is parsed by frontend\u002Fsrc\u002Fpages\u002FAbout.tsx -->\n## Roadmap\n\nWe have come far, nonetheless we are not short of ideas on how to improve and extend this project. Issues waiting for you to be tackled in no particular order:\n\n- [ ] Audio download\n- [ ] Podcast mode to serve channel as mp3\n- [ ] Random and repeat controls ([#108](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fissues\u002F108), [#220](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fissues\u002F220))\n- [ ] Auto play or play next link ([#226](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fissues\u002F226))\n- [ ] Multi language support\n- [ ] Show total video downloaded vs total videos available in channel\n- [ ] Download or Ignore videos by keyword ([#163](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fissues\u002F163))\n- [ ] Custom searchable notes to videos, channels, playlists ([#144](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fissues\u002F144))\n- [ ] Search comments\n- [ ] Per user videos\u002Fchannel\u002Fplaylists\n\nImplemented:\n- [X] Search download queue [2025-07-31]\n- [X] Configure shorts, streams and video sizes per channel [2024-07-15]\n- [X] User created playlists [2024-04-10]\n- [X] User roles, aka read only user [2023-11-10]\n- [X] Add statistics of index [2023-09-03]\n- [X] Implement [Apprise](https:\u002F\u002Fgithub.com\u002Fcaronc\u002Fapprise) for notifications [2023-08-05]\n- [X] Download video comments [2022-11-30]\n- [X] Show similar videos on video page [2022-11-30]\n- [X] Implement complete offline media file import from json file [2022-08-20]\n- [X] Filter and query in search form, search by url query [2022-07-23]\n- [X] Make items in grid row configurable to use more of the screen [2022-06-04]\n- [X] Add passing browser cookies to yt-dlp [2022-05-08]\n- [X] Add [SponsorBlock](https:\u002F\u002Fsponsor.ajay.app\u002F) integration [2022-04-16]\n- [X] Implement per channel settings [2022-03-26]\n- [X] Subtitle download & indexing [2022-02-13]\n- [X] Fancy advanced unified search interface [2022-01-08]\n- [X] Auto rescan and auto download on a schedule [2021-12-17]\n- [X] Optional automatic deletion of watched items after a specified time [2021-12-17]\n- [X] Create playlists [2021-11-27]\n- [X] Access control [2021-11-01]\n- [X] Delete videos and channel [2021-10-16]\n- [X] Add thumbnail embed option [2021-10-16]\n- [X] Create a github wiki for user documentation [2021-10-03]\n- [X] Grid and list view for both channel and video list pages [2021-10-03]\n- [X] Un-ignore videos [2021-10-03]\n- [X] Dynamic download queue [2021-09-26]\n- [X] Backup and restore [2021-09-22]\n- [X] Scan your file system to index already downloaded videos [2021-09-14]\n\n## User Scripts\n\nThis is a list of useful user scripts, generously created from folks like you to extend this project and its functionality. Make sure to check the respective repository links for detailed license information.\n\nThis is your time to shine, [read this](https:\u002F\u002Fgithub.com\u002Ftubearchivist\u002Ftubearchivist\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md#user-scripts) then open a PR to add your script here.\n\n* [danieljue\u002Fta_dl_page_script](https:\u002F\u002Fgithub.com\u002Fdanieljue\u002Fta_dl_page_script): Helper browser script to prioritize a channels' videos in download queue.\n* [dot-mike\u002Fta-scripts](https:\u002F\u002Fgithub.com\u002Fdot-mike\u002Fta-scripts): A collection of personal scripts for managing TubeArchivist.\n* [DarkFighterLuke\u002Fta_base_url_nginx](https:\u002F\u002Fgist.github.com\u002FDarkFighterLuke\u002F4561b6bfbf83720493dc59171c58ac36): Set base URL with Nginx when you can't use subdomains.\n* [lamusmaser\u002Fta_migration_helper](https:\u002F\u002Fgithub.com\u002Flamusmaser\u002Fta_migration_helper): Advanced helper script for migration issues to TubeArchivist v0.4.4 or later.\n* [lamusmaser\u002Fcreate_info_json](https:\u002F\u002Fgist.github.com\u002Flamusmaser\u002F837fb58f73ea0cad784a33497932e0dd): Script to generate `.info.json` files using `ffmpeg` collecting information from downloaded videos.\n* [lamusmaser\u002Fta_fix_for_video_redirection](https:\u002F\u002Fgithub.com\u002Flamusmaser\u002Fta_fix_for_video_redirection): Script to fix videos that were incorrectly indexed by YouTube's \"Video is Unavailable\" response.\n* [RoninTech\u002Fta-helper](https:\u002F\u002Fgithub.com\u002FRoninTech\u002Fta-helper): Helper script to provide a symlink association to reference TubeArchivist videos with their original titles.\n* [tangyjoust\u002FTautulli-Notify-TubeArchivist-of-Plex-Watched-State](https:\u002F\u002Fgithub.com\u002Ftangyjoust\u002FTautulli-Notify-TubeArchivist-of-Plex-Watched-State) Mark videos watched in Plex (through streaming not manually) through Tautulli back to TubeArchivist\n* [Dhs92\u002Fdelete_shorts](https:\u002F\u002Fgithub.com\u002FDhs92\u002Fdelete_shorts): A script to delete ALL YouTube Shorts from TubeArchivist\n* [arisenfromtheashes\u002FTA_DVR](https:\u002F\u002Fgithub.com\u002Farisenfromtheashes\u002FTA_DVR): Scripts to assist in using Tube Archivist like a DVR\n* [WreckingBANG\u002FSelf.Tube](https:\u002F\u002Fcodeberg.org\u002FWreckingBANG\u002FSelf.Tube): Client app for Android and Linux phones written in Flutter.\n\n\u003C!-- The Donate section is parsed by frontend\u002Fsrc\u002Fpages\u002FAbout.tsx -->\n## Donate\n\nThe best donation to **Tube Archivist** is your time, take a look at the [contribution page](CONTRIBUTING.md) to get started.\nSecond best way to support the development is to provide for caffeinated beverages:\n\n* [GitHub Sponsor](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fbbilly1) become a sponsor here on GitHub\n* [Paypal.me](https:\u002F\u002Fpaypal.me\u002Fbbilly1) for a one time coffee\n* [Paypal Subscription](https:\u002F\u002Fwww.paypal.com\u002Fwebapps\u002Fbilling\u002Fplans\u002Fsubscribe?plan_id=P-03770005GR991451KMFGVPMQ) for a monthly coffee\n* [ko-fi.com](https:\u002F\u002Fko-fi.com\u002Fbbilly1) for an alternative platform\n\n## Notable mentions\n\nThis is a selection of places where this project has been featured on reddit, in the news, blogs or any other online media, newest on top.\n\n* **xda-developers.com**: 5 obscure self-hosted services worth checking out - Tube Archivist - To save your essential YouTube videos, [2024-10-13][[link](https:\u002F\u002Fwww.xda-developers.com\u002Fobscure-self-hosted-services\u002F)]\n* **selfhosted.show**: why we're trying Tube Archivist, [2024-06-14][[link](https:\u002F\u002Fselfhosted.show\u002F125)]\n* **ycombinator**: Tube Archivist on Hackernews front page, [2023-07-16][[link](https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=36744395)]\n* **linux-community.de**: Tube Archivist bringt Ordnung in die Youtube-Sammlung, [German][2023-05-01][[link](https:\u002F\u002Fwww.linux-community.de\u002Fausgaben\u002Flinuxuser\u002F2023\u002F05\u002Ftube-archivist-bringt-ordnung-in-die-youtube-sammlung\u002F)]\n* **noted.lol**: Dev Debrief, An Interview With the Developer of Tube Archivist, [2023-03-30] [[link](https:\u002F\u002Fnoted.lol\u002Fdev-debrief-tube-archivist\u002F)]\n* **console.substack.com**: Interview With Simon of Tube Archivist, [2023-01-29] [[link](https:\u002F\u002Fconsole.substack.com\u002Fp\u002Fconsole-142#%C2%A7interview-with-simon-of-tube-archivist)]\n* **reddit.com**: Tube Archivist v0.3.0 - Now Archiving Comments, [2022-12-02] [[link](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fselfhosted\u002Fcomments\u002Fzaonzp\u002Ftube_archivist_v030_now_archiving_comments\u002F)]\n* **reddit.com**: Tube Archivist v0.2 - Now with Full Text Search, [2022-07-24] [[link](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fselfhosted\u002Fcomments\u002Fw6jfa1\u002Ftube_archivist_v02_now_with_full_text_search\u002F)]\n* **noted.lol**: How I Control What Media My Kids Watch Using Tube Archivist, [2022-03-27] [[link](https:\u002F\u002Fnoted.lol\u002Fhow-i-control-what-media-my-kids-watch-using-tube-archivist\u002F)]\n* **thehomelab.wiki**: Tube Archivist - A Youtube-DL Alternative on Steroids, [2022-01-27] [[link](https:\u002F\u002Fthehomelab.wiki\u002Fbooks\u002Fnews\u002Fpage\u002Ftube-archivist-a-youtube-dl-alternative-on-steroids)]\n* **reddit.com**: Celebrating TubeArchivist v0.1, [2022-01-09] [[link](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fselfhosted\u002Fcomments\u002Frzh084\u002Fcelebrating_tubearchivist_v01\u002F)]\n* **linuxunplugged.com**: Pick: tubearchivist — Your self-hosted YouTube media server, [2021-09-11] [[link](https:\u002F\u002Flinuxunplugged.com\u002F425)] and [2021-10-05] [[link](https:\u002F\u002Flinuxunplugged.com\u002F426)]\n* **reddit.com**: Introducing Tube Archivist, your self hosted Youtube media server, [2021-09-12] [[link](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fselfhosted\u002Fcomments\u002Fpmj07b\u002Fintroducing_tube_archivist_your_self_hosted\u002F)]\n","Tube Archivist 是一个自托管的YouTube媒体服务器，帮助用户下载、管理和离线观看YouTube视频。其核心功能包括订阅YouTube频道、使用yt-dlp下载视频、通过元数据索引视频以实现高效搜索，并提供了一个友好的Web界面来播放和管理已下载的内容。此外，它还支持标记已看和未看的视频，方便追踪观看进度。该项目基于Python开发，利用Elasticsearch增强搜索能力，适合那些希望备份喜爱的YouTube内容或在网络连接不稳定时也能访问视频的用户。",2,"2026-06-11 03:35:37","high_star"]