GitRead 中文社区
首页趋势排行榜原创文章严选周刊
更多资源
新手训练营
精选专题热门话题GitHub 文档资源精选实战指南

MyTube

Self-hosted downloader and player for YouTube, Bilibili, Twitch, MissAV, and yt-dlp sites. Features channel subscriptions, auto-downloads, and local storage for media. Organize your library into collections with a sleek UI. Includes built-in Cloudflare Tunnel support for secure remote access without port forwarding. Docker-ready deployment.

  • 语言TypeScript
  • 默认分支master
  • 大小26.0 MB
  • 更新3 天前
  • Issues7
在 GitHub 打开
avatarfranklioxygen

项目介绍

franklioxygen/MyTube 是一个托管在 GitHub 上的开源项目,主要使用 TypeScript 编写,采用 MIT License 许可证,目前获得 1.3k 个 Star、117 次 Fork。

仓库全名
franklioxygen/MyTube

README 摘要

MyTube Self-hosted downloader and player for YouTube, Bilibili, Twitch, MissAV, and yt-dlp sites. Features channel subscriptions, auto-downloads, local media storage, and private RSS feed links for external readers. Organize your library into collections with a sleek UI. Includes built-in Cloudflare Tunnel support for secure remote access without port forwarding. Docker-ready deployment. 🚀 100% Prompt-Engineered. 0…

完整内容见 GitHub 原始 README 或本页 。

常见问题

MyTube 用什么语言开发?

主要使用 TypeScript 编写,采用 MIT License 许可证,目前有 1.3k 个 Star。

MyTube 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 MyTube 的源码?

可以直接克隆仓库:git clone https://github.com/franklioxygen/MyTube.git,默认分支为 master;安装与运行步骤见仓库 README。

MyTube 最近还在维护吗?

仓库最近一次更新为 3 天前,当前有 7 个未关闭 Issue;Star 数为 1.3k,可作为社区活跃度的参考。

本页面展示项目元数据与原始 README,GitRead 中文社区 编辑团队负责选题收录。

相关仓库

freeCodeCamp/freeCodeCamp avatar
freeCodeCampfreeCodeCamp
54 分钟前
458.8k
46.7k
91

freeCodeCamp.org 的开源代码库和课程体系。免费学习数学、编程和计算机科学。

learn-to-codenonprofitsprogramming+7
TypeScript
571.2 MB
9
详情
morluto/rea avatar
reamorluto
54 分钟前
447.9k
110.2k
915

借助智能体逆向分析任何内容,从应用行为直至原生二进制文件。

agent-skillsaiandroid+17
TypeScript
146.8 MB
0
详情
openclaw/openclaw avatar
openclawopenclaw
8 分钟前
394.3k
82.9k
8.1k

真正做实事的 AI。任何 OS。任何平台。龙虾之道。🦞

aiassistantcrustacean+4
TypeScript
13.1 GB
18
详情
nilbuild/developer-roadmap avatar
developer-roadmapnilbuild
1 天前
371.7k
42.9k
7

交互式路线图、指南及其他教育内容,帮助开发者在职业生涯中成长。

computer-scienceroadmapdeveloper-roadmap+7
TypeScript
356.1 MB
2
详情
deepseek-ai/deepseek-harness avatar
deepseek-harnessdeepseek-ai
5 天前
277.7k
34.1k
0

DeepSeek Harness:一切皆插件。

ai-agentscordisdsh+1
TypeScript
351.8 MB
3
详情
anomalyco/opencode avatar
opencodeanomalyco
17 分钟前
225.7k
30.0k
2.7k

开源编码代理。

TypeScript
674.8 MB
0
详情
vuejs/vue avatar
vuevuejs
2024年10月10日
212.6k
34.1k
645

这是 Vue 2 的仓库。如需 Vue 3,请前往 https://github.com/vuejs/core

frameworkfrontendjavascript+1
TypeScript
31.4 MB
0
详情
n8n-io/n8n avatar
n8nn8n-io
7 分钟前
210.0k
61.4k
1.3k

具备原生 AI 能力的公平代码工作流自动化平台。将可视化构建与自定义代码相结合,支持自托管或云端部署,提供 400+ 种集成。

automationipaasn8n+7
TypeScript
780.4 MB
3
详情

关于

bilibilibilibili-downloadcloudflare-tunneldockerdownloaderexpressjslive-translationmissavmuinassqlitetanstack-querytwitchtypescriptvideo-hostingvideo-playeryoutubeyoutube-downloaderyt-dlp
  • MIT License
  • 1.3k Stars
  • 117 Forks
  • 5 Watching

简要分析

热度分
1525
价值分
806
活跃状态
活跃
GitHub

语言占比

CSS
Dockerfile
HTML
JavaScript
Python
Shell
TypeScript

贡献者

franklioxygenfranklioxygendependabot[bot]dependabot[bot]snyk-botsnyk-botgithub-actions[bot]github-actions[bot]claudeclaudeRedonkatonkkRedonkatonkk

logo

MyTube

Self-hosted downloader and player for YouTube, Bilibili, Twitch, MissAV, and yt-dlp sites. Features channel subscriptions, auto-downloads, local media storage, and private RSS feed links for external readers. Organize your library into collections with a sleek UI. Includes built-in Cloudflare Tunnel support for secure remote access without port forwarding. Docker-ready deployment.

🚀 100% Prompt-Engineered. 0 Lines of Manual Code. Built using the franklioxygen/agent-workflows workflow.

GitHub License Docker Pulls Discord GitHub Actions Workflow Status GHCR Image Workflow Status Lighthouse Performance Codacy Badge Codacy Badge GitHub Repo stars GitHub Roast score badge Lines of Code

中文 | Changelog

Demo

🌐 Try the live demo (read only): https://mytube-demo.vercel.app
app-screenshot

Features

  • Video Downloading: Download YouTube, Bilibili, Twitch, MissAV and other yt-dlp-supported videos with a simple URL input.
  • Video Upload: Upload local video files directly to your library with automatic thumbnail generation.
  • D Mode (In-Car Playback): Uses Canvas and WebCodecs instead of a standard media element, enabling video playback on compatible in-car entertainment screens that otherwise block ordinary players while the vehicle is moving. Intended for passengers—always follow local laws, and never watch or operate the screen while driving.
  • TMDB Metadata Scraping: Automatically scrape movie and TV show metadata (title, description, poster, director, year, rating) from TMDB based on filename. Supports localized content matching your site language.
  • Parallel Downloads: Queue multiple downloads and track their progress simultaneously.
  • Batch Download: Add multiple video URLs at once to the download queue.
  • Cloud Storage Integration: Automatically upload videos and thumbnails to cloud storage (OpenList/Alist) after download.
  • Media Integrity Check (admin): Find videos already in your library whose files are missing, truncated or unreadable, under Settings → Library & Storage. It only reports; each finding links to the video and, where a re-download is recommended, offers Download Again.
  • Auto Subtitles: Automatically download YouTube / Bilibili default language subtitles.
  • Live Audio Translation (admin, optional): Stream the playing video’s audio to Google Gemini Live Translation and play translated speech with live subtitles in the player’s subtitle menu. Configure it under Settings → Basic → Video Playback (enable, Gemini API key, model, source/target language). The key is stored server-side and never sent to the browser. Privacy: while live translation is active, the video’s audio is streamed to Google’s Gemini API; transcripts are not persisted or logged. Requires an admin account when login is enabled and a same-origin (non-cross-origin) audio source.
  • Subscriptions: Manage YouTube, Bilibili and Twitch channel subscriptions to automatically download new content.
  • Keyboard Shortcuts: YouTube-style player shortcuts — play/pause, seeking, volume, speed, captions, fullscreen, cinema mode, frame stepping, and Up Next navigation. See Keyboard Shortcuts.
  • RSS Feeds: Create private RSS links for external feed readers with per-link filters for channels, authors, tags, sources, recent videos, and item limits.
  • Login Protection & Visitor Access: Secure your application with password login, optional passkeys (WebAuthn), and an admin-only 3×3 Gesture Login, while named read-only visitor accounts allow safe sharing. Gesture failures are shared across devices; one or two expire 12 hours after the latest failure, while three lock gesture access until one successful admin password login.
  • Internationalization: Support for multiple languages including English, Chinese, Spanish, French, German, Japanese, Korean, Arabic, Portuguese, and Russian.
  • Cookie Management: Support for uploading cookies.txt to enable downloading of age-restricted or premium content.
  • yt-dlp Configuration: Customize global yt-dlp arguments, network proxy, and other advanced settings via settings page.
  • TMDB Integration: Configure your TMDB API key in settings to enable automatic metadata scraping for local video files. The scraper intelligently parses filenames to extract titles and matches them with TMDB database.
  • Cloudflare Tunnel Integration: Built-in Cloudflare Tunnel support to easily expose your local MyTube instance to the internet without port forwarding.
  • Task Hooks: Execute custom shell scripts at various stages of a download task (start, success, fail, cancel) for integration and automation. See Task Hooks Guide.
  • Telegram Notifications: Receive instant notifications via Telegram bot when a download task succeeds or fails.
  • Browser Extension: A Chrome extension to download videos directly from your browser. Supports all yt-dlp supported sites.

Browser Extension

For installation and usage instructions, please refer to Browser Extension.

MikMok

MikMok is a short-form video web client for MyTube. It connects to MyTube through the API and offers a feed-style viewing experience tailored for short videos.

Android Client

mytube-android is a native Android client for MyTube. It connects to your MyTube server through the API for browsing and playback on mobile devices.

MCP Server

mytube-mcp is a Model Context Protocol (MCP) server for MyTube. It exposes your MyTube instance to AI assistants and agents through the API, so they can search, manage, and play your video library on your behalf.

Directory Structure

For a detailed breakdown of the project structure, please refer to Directory Structure.

Runtime Storage Layout

By default, media and caches live under backend/uploads/:

Folder Purpose
videos/ Downloaded video files and, when enabled, full-size thumbnails/subtitles/TV companion files stored next to videos.
images/ Full-size thumbnails when thumbnail storage is set to the isolated images folder.
images-small/ Internal downscaled preview cache for the UI. It mirrors the full-size thumbnail folder layout and can be ignored or excluded from media-server libraries.
subtitles/ Subtitle files when subtitle storage is set to the isolated subtitles folder.
avatars/ Channel/avatar artwork used by the app and media-server export.
cloud-thumbnail-cache/ Internal cache for thumbnails fetched from cloud-backed media.

For how storage locations and filenames are decided — stable media identity, legacy vs. template naming, author-folder organization, collision-safe path allocation, and the no-overwrite publication model — please refer to Media Storage & Filename Naming.

Getting Started

Requirements: Node.js 22.22+, 23.x, 24.x, 25.x, or 26.x and npm v9+. The backend depends on better-sqlite3; unsupported Node versions fail during npm install (often with misleading node-gyp / Visual Studio errors on Windows). Docker images ship with Node 22.

For installation and setup instructions, please refer to Getting Started.

Visitor Accounts

When login protection is enabled, admins can create named visitor accounts under Settings -> Security. Visitor accounts are read-only, and account changes such as create, disable, delete, and password reset apply immediately without saving the broader settings form.

Existing installations with a shared visitor password are migrated automatically to a visitor account. Users who had the shared password can sign in with username visitor and the same password. The legacy shared-password login endpoint remains for compatibility and is deprecated.

Deployment Security Model

For the three-tier admin trust and deployment security model, please refer to Deployment Security Model.

API Endpoints

For a list of available API endpoints, please refer to API Endpoints.

Technology Stack

Backend

  • Runtime: Node.js 22.22+ or 23.x–26.x with TypeScript
  • Framework: Express.js
  • Database: SQLite with Drizzle ORM
  • Testing: Vitest
  • Architecture: Layered architecture (Routes → Controllers → Services → Database)

Frontend

  • Framework: React 19 with TypeScript
  • Build Tool: Vite
  • UI Library: Material-UI (MUI)
  • State Management: React Context API
  • Routing: React Router v7
  • HTTP Client: Axios with React Query

Key Architectural Features

  • Modular Storage Service: Split into focused modules for maintainability
  • Downloader Pattern: Abstract base class for platform-specific implementations
  • Database Migrations: Automatic schema updates using Drizzle Kit
  • Download Queue Management: Concurrent downloads with queue support
  • Video Download Tracking: Prevents duplicate downloads across sessions

Environment Variables

The application uses environment variables for configuration.

Frontend (frontend/.env)

VITE_API_URL=/api
VITE_BACKEND_URL=

Backend (backend/.env)

PORT=5551
# Optional stable secret for Gesture Login (minimum 32 bytes).
# When omitted, MyTube creates backend/data/gesture-login.pepper on first setup.
# GESTURE_LOGIN_PEPPER=replace-with-at-least-32-random-bytes
# Optional: declare the admin trust boundary for this deployment.
# Valid values: application | container | host
# Default: container
# MYTUBE_ADMIN_TRUST_LEVEL=container

Data and uploads are stored under backend/data and backend/uploads by default (relative to the backend working directory).

Copy backend/.env.example to backend/.env and adjust as needed. The frontend ships with frontend/.env; use frontend/.env.local to override defaults.

Database

MyTube uses SQLite with Drizzle ORM for data persistence. The database is automatically created and migrated on first startup:

  • Location: backend/data/mytube.db
  • Migrations: Automatically run on server startup
  • Schema: Managed through Drizzle Kit migrations
  • Legacy Support: Migration tools available to convert from JSON-based storage

Key database tables:

  • videos: Video metadata and file paths
  • collections: Video collections/playlists
  • subscriptions: Channel/creator subscriptions
  • rss_tokens: Private RSS feed links, filters, access status, and access counters
  • downloads: Active download queue
  • download_history: Completed download history
  • video_downloads: Tracks downloaded videos to prevent duplicates
  • settings: Application configuration

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details on how to get started, our development workflow, and code quality guidelines.

Deployment

For detailed Docker deployment instructions, including the official GitHub Container image (ghcr.io/franklioxygen/mytube:latest) and the single-container compose file (stacks/docker-compose.single-container.yml), please refer to Docker Deployment Guide. For the application / container / host admin trust boundary, please refer to Deployment Security Model.

Star History

Star History Chart

Disclaimer

  • Purpose and Restrictions This software (including code and documentation) is intended solely for personal learning, research, and technical exchange. It is strictly prohibited to use this software for any commercial purposes or for any illegal activities that violate local laws and regulations.

  • Liability The developer is unaware of and has no control over how users utilize this software. Any legal liabilities, disputes, or damages arising from the illegal or improper use of this software (including but not limited to copyright infringement) shall be borne solely by the user. The developer assumes no direct, indirect, or joint liability.

  • Modifications and Distribution This project is open-source. Any individual or organization modifying or forking this code must comply with the open-source license. Important: If a third party modifies the code to bypass or remove the original user authentication/security mechanisms and distributes such versions, the modifier/distributor bears full responsibility for any consequences. We strongly discourage bypassing or tampering with any security verification mechanisms.

  • Non-Profit Statement This is a completely free open-source project. The developer does not accept donations and has never published any donation pages. The software itself allows no charges and offers no paid services. Please be vigilant and beware of any scams or misleading information claiming to collect fees on behalf of this project.

License

MIT

评论

登录 后发表评论
暂无评论
GitRead 中文社区
深度解读 · 趋势洞察 · 价值精选

关于

关于我们联系我们编辑准则收录标准赞赏人员

发现

技术趋势新手训练营资源精选实战指南精选专题热门话题GitHub 文档

条款

隐私政策服务条款网站地图
26.9万收录项目
5.6万中文话题
155精选专题
发现技术价值,连接开源智慧
© 2026 GitRead · GitHub 中文社区 本站与 GitHub, Inc. 无隶属关系;GitHub 是 GitHub, Inc. 的商标。