Tube Archivist là máy chủ YouTube tự lưu trữ mã nguồn mở, đóng gói Docker, dùng yt-dlp để tải video và Elasticsearch để lập chỉ mục toàn văn. Khác với việc tải video rải rác, nó biến một thư viện video hỗn độn thành cơ sở dữ liệu tìm kiếm được theo kênh, playlist, phụ đề và bình luận. Nhờ đó, bạn có thể xem ngoại tuyến ngay trên hạ tầng riêng của mình.
Thank you for reading this post, don't forget to subscribe!Bài viết này hướng dẫn cách cài đặt Docker Compose, tối ưu RAM/CPU và dung lượng ổ cứng, đồng thời so sánh với vài lựa chọn thay thế. Nếu bạn muốn kiểm soát dữ liệu lâu dài, đầu tư một máy chủ nhỏ là bước đầu tiên. Hãy đọc kỹ phần cấu hình và lỗi thường gặp để tránh mất dữ liệu không đáng có.
Tube Archivist hoạt động với Elasticsearch và Redis như thế nào?
Tube Archivist dùng Redis để quản lý hàng chờ và lưu dữ liệu tạm, còn Elasticsearch giữ toàn bộ chỉ mục tìm kiếm. Khi bạn thêm video, một tác vụ được gửi qua Redis, yt-dlp tải file, sau đó Elasticsearch index tiêu đề, mô tả, phụ đề và bình luận. Vì vậy, kết quả tìm kiếm trả về gần như tức thì, biến thư viện file thành một thư viện media có tổ chức.
Ở mức cài đặt cơ bản, container Elasticsearch thường dùng khoảng 512MB heap nếu bạn không đặt ES_JAVA_OPTS. Khi bộ sưu tập lên tới vài trăm kênh, nên nâng lên 1,5–2GB heap. Theo tài liệu Docker Elasticsearch, bạn có thể kiểm soát heap bằng biến này. Nếu RAM hạn chế, hãy giảm bớt đánh chỉ mục bình luận để tiết kiệm bộ nhớ.

Cài đặt Tube Archivist trong Docker cần chuẩn bị gì trước khi tải video?
Bạn cần một máy chủ nhỏ chạy Docker, tối thiểu 2GB RAM, CPU 4 luồng và ổ cứng còn nhiều chỗ. Trước tiên, cài Docker Compose, đặt vm.max_map_count bằng 262144, sau đó tạo file docker-compose.yml dựa trên mẫu trong repository GitHub chính thức và wiki chính thức.
Khai báo các biến môi trường bắt buộc: TA_HOST, TA_USERNAME, TA_PASSWORD, ELASTIC_PASSWORD, REDIS_CON, TZ. Chạy docker-compose up -d và mở giao diện web qua cổng 8000. Trong Settings, chọn định dạng tải bestvideo[vcodec*=avc1]+bestaudio[acodec*=mp4a]/mp4 để video phát được trên nhiều thiết bị. Sau đó, đăng ký kênh yêu thích, bấm “Rescan subscriptions” rồi “Start download”.

Chi phí điện năng và ổ cứng cho máy chủ Tube Archivist là bao nhiêu?
Điện năng phụ thuộc phần cứng. Một máy chủ mini 4 nhân chạy 24/7 có thể tiêu thụ 15–30W, tương đương 11–22 kWh/tháng. Ổ cứng tiêu tốn do video: mỗi video 1080p dài 10 phút khoảng 150MB, nếu mỗi ngày tải 10 video thì một tháng cần khoảng 45GB. Với kho dữ liệu ban đầu, một ổ HDD 4TB là lựa chọn hợp lý.
Ngoài chi phí phần cứng, bạn cần dành dung lượng cho Elasticsearch. Khi ổ đầy 95%, hệ thống chuyển sang chế độ chỉ đọc, dẫn tới ngừng tải. Cách đơn giản nhất là thiết lập cảnh báo khi disk usage vượt 80%.

Có nên dùng Tube Archivist thay cho cách tải YouTube thủ công không?
Nếu bạn đang dùng yt-dlp chạy theo cron rồi thả file vào Jellyfin, Tube Archivist vẫn đáng thay thế vì nó giải quyết đúng vấn đề tìm lại video. Nhưng nếu bạn chỉ cần xem một vài video hiếm khi bị xóa, script đơn giản sẽ nhẹ hơn. Quyết định nằm ở số lượng kênh và nhu cầu tìm kiếm.
| Tiêu chí | Tube Archivist | yt-dlp + Jellyfin | Plex |
|---|---|---|---|
| Lấy video tự động | Quét kênh định kỳ, hàng chờ nội bộ | Có, viết script cron kết hợp yt-dlp | Không có sẵn, cần nhập thủ công |
| Tìm kiếm nội dung | Toàn văn trong Elasticsearch, cả bình luận | Chỉ tìm theo tên file và metadata | Tìm theo metadata do người dùng gán |
| Tích hợp Jellyfin/Plex | Dùng plugin Jellyfin, có agent cho Plex | Jellyfin là máy chủ media mặc định | Plex tự chạy media server |
| Backup/restore | Có nút backup/restore trên giao diện | Tự sao chép volume hoặc file | Cần Plex Pass, tùy cấu hình |
Điểm yếu cần biết: Tube Archivist không cho phép tùy biến cách đặt tên file media. Nếu bạn đã tạo cây thư mục riêng cho Jellyfin, việc chuyển sang Tube Archivist sẽ phải chấp nhận quy tắc lưu trữ của nó. Nếu bạn đã chạy một homelab, Tube Archivist có thể đóng vai trò “đầu thu” và lưu trữ. Bạn cũng có thể coi nó là công cụ để xây dựng thư viện riêng cho các kênh quan tâm.

Xử lý lỗi thường gặp: Redis, Elasticsearch, yt-dlp
Hầu hết lỗi khi tự host Tube Archivist đến từ ba nguồn: Redis bị tràn bộ nhớ, Elasticsearch không khởi động và yt-dlp hết phiên đăng nhập. Dưới đây là cách xử lý nhanh từng trường hợp.
- Redis: Nếu log báo
OOM command not allowed, hãy tăng memory limit và đặtmaxmemory-policy allkeys-lru. Khởi động lại Redis trước, rồi mới khởi động Tube Archivist. - Elasticsearch: Kiểm tra
vm.max_map_countđã đủ 262144 chưa. Nếu container vẫn báo lỗi permission, chạychown 1000:0 -R /path/to/data. - yt-dlp: Dùng cookie riêng có thể tải video giới hạn độ tuổi, nhưng cookie hết hạn sau một thời gian. Cần cập nhật yt-dlp thường xuyên để theo kịp thay đổi của YouTube.
Câu hỏi thường gặp
Những câu hỏi dưới đây xoay quanh cấu hình, sao lưu và cách dùng chung với máy chủ media. Đây là các vấn đề thường gặp nhất khi tự host Tube Archivist, được cộng đồng thảo luận nhiều trong các nhóm homelab và trên GitHub.
Tube Archivist cần bao nhiêu RAM và CPU?
Thiết lập nhỏ có thể chạy với 2GB RAM, nhưng CPU 4 nhân và 4GB RAM sẽ giúp thao tác mượt hơn khi đã lưu vài trăm kênh. Container Elasticsearch thường chiếm phần lớn bộ nhớ, vì vậy đừng chạy máy chủ chỉ có 1GB.
Làm sao sao lưu và phục hồi dữ liệu Tube Archivist?
Bạn có thể dùng nút Backup/Restore trong giao diện. Tuy nhiên, hãy sao lưu cả volume Elasticsearch lẫn thư mục media. Cộng đồng cũng có script di trú giữa các phiên bản lớn, giúp tránh mất chỉ mục khi nâng cấp.
Có thể dùng Jellyfin hoặc Plex thay cho giao diện Tube Archivist không?
Được, nhưng sẽ mất tìm kiếm toàn văn và hàng chờ tải tự động. Tube Archivist vẫn nên chạy như “back-end” thu thập và đánh chỉ mục, còn Jellyfin/Plex đóng vai trò máy chủ phát media trên TV. Sự kết hợp này cho trải nghiệm đầy đủ nhất.
Nếu bạn muốn xây dựng thư viện YouTube bền vững, Tube Archivist là giải pháp tự lưu trữ đáng cân nhắc. Hãy bắt đầu từ một thiết lập Docker nhỏ rồi mở rộng khi bộ sưu tập của bạn tăng lên.

