跳转至内容
  • 0 赞同
    1 帖子
    4 浏览
    L
    一、项目简介 MeTube 是一款自托管的 Web UI 工具,基于强大的 yt-dlp 引擎,支持从 YouTube 及数十个其他网站下载视频、音频、字幕和缩略图。 核心能力: 通过浏览器界面下载视频、音频、字幕和缩略图 下载播放列表和频道,支持自定义输出和下载选项 订阅频道和播放列表,定期检查新内容并自动排队下载 GitHub 地址:https://github.com/alexta69/metube 开源协议:AGPL-3.0 Docker 镜像:ghcr.io/alexta69/metube 二、快速部署 2.1 使用 Docker 运行 docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube 2.2 使用 Docker Compose 运行 services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads 部署完成后,访问 http://your-server-ip:8081 即可打开 MeTube 的 Web 界面。 三、环境变量配置 所有配置项均可通过 Docker 命令行的 -e 参数或 docker-compose 的 environment: 字段设置。 3.1 下载行为 环境变量 说明 默认值 MAX_CONCURRENT_DOWNLOADS 最大同时下载数 3 DELETE_FILE_ON_TRASHCAN 在 UI 中删除时同时删除服务器文件 false DEFAULT_OPTION_PLAYLIST_ITEM_LIMIT 播放列表最大下载项数 0(无限制) SUBSCRIPTION_DEFAULT_CHECK_INTERVAL 订阅自动检查间隔(分钟) 60 SUBSCRIPTION_SCAN_PLAYLIST_END 每次订阅检查最大获取条目数 50 SUBSCRIPTION_MAX_SEEN_IDS 每个订阅存储的视频 ID 上限 50000 CLEAR_COMPLETED_AFTER 完成后自动清除的秒数 0(禁用) 3.2 存储与目录 环境变量 说明 默认值 DOWNLOAD_DIR 视频下载目录 /downloads AUDIO_DOWNLOAD_DIR 音频专用下载目录 同 DOWNLOAD_DIR CUSTOM_DIRS 启用自定义下载子目录 true CREATE_CUSTOM_DIRS 自动创建不存在的目录 true STATE_DIR 状态文件存储目录 /downloads/.metube TEMP_DIR 临时下载文件目录 /downloads 提示:将 TEMP_DIR 设置为 SSD 或 RAM 文件系统(如 tmpfs)可提升性能,但使用 RAM 文件系统可能导致下载无法恢复。 3.3 文件命名与 yt-dlp 环境变量 说明 默认值 OUTPUT_TEMPLATE 视频文件命名模板 %(title)s.%(ext)s OUTPUT_TEMPLATE_PLAYLIST 播放列表命名模板 %(playlist_title)s/%(title)s.%(ext)s OUTPUT_TEMPLATE_CHANNEL 频道命名模板 %(channel)s/%(title)s.%(ext)s YTDL_OPTIONS 额外的 yt-dlp 选项(JSON 格式) - YTDL_OPTIONS_FILE yt-dlp 选项 JSON 文件路径 - YTDL_OPTIONS_PRESETS 命名的 yt-dlp 选项预设 - YTDL_OPTIONS_PRESETS_FILE 预设 JSON 文件路径 - ALLOW_YTDL_OPTIONS_OVERRIDES 允许 UI 中自定义 yt-dlp 选项 false 3.4 Web 服务器与 URL 环境变量 说明 默认值 HOST 服务器绑定地址 0.0.0.0 PORT 服务器监听端口 8081 URL_PREFIX 反向代理基础路径 / PUBLIC_HOST_URL 下载链接的基础 URL - HTTPS 启用 HTTPS false CORS_ALLOWED_ORIGINS 允许跨域请求的来源列表 空(拒绝所有) 3.5 基础设置 环境变量 说明 默认值 PUID / PGID 运行用户/组 ID 1000 DEFAULT_THEME UI 主题(light/dark/auto) auto LOGLEVEL 日志级别 INFO 四、yt-dlp 选项配置详解 MeTube 支持三个层级的 yt-dlp 选项配置,从全局到具体依次为: 全局选项 — 适用于所有下载 预设(Presets) — 命名的选项包,用户可在 UI 中按下载选择 单次下载覆盖 — 在 UI 中为单个下载输入的自由格式选项 当下载启动时,这些层级按顺序合并。如果同一选项出现在多个层级中,更具体的层级优先:单次覆盖 > 预设 > 全局选项。 4.1 全局选项 方式一:通过环境变量内联 environment: - 'YTDL_OPTIONS={"writesubtitles": true, "subtitleslangs": ["en", "de"], "updatetime": false, "writethumbnail": true}' 方式二:通过 JSON 文件 volumes: - /path/to/ytdl-options.json:/config/ytdl-options.json environment: - YTDL_OPTIONS_FILE=/config/ytdl-options.json JSON 文件内容示例: { "writesubtitles": true, "subtitleslangs": ["en", "de"], "updatetime": false, "writethumbnail": true } 文件会被自动监控,修改后无需重启容器。如果两种方式同时使用且定义了相同的键,文件优先。 4.2 预设(Presets) 预设文件示例: { "sponsorblock": { "postprocessors": [ { "key": "SponsorBlock", "categories": ["sponsor", "selfpromo", "interaction"] }, { "key": "ModifyChapters", "remove_sponsor_segments": ["sponsor", "selfpromo", "interaction"] } ] }, "embed-subs": { "writesubtitles": true, "writeautomaticsub": true, "subtitleslangs": ["en", "de"], "postprocessors": [{ "key": "FFmpegEmbedSubtitle" }] }, "limit-rate": { "ratelimit": 5000000 } } 以上预设含义: sponsorblock — 去除视频中的赞助商、自我推广和互动片段 embed-subs — 下载英德字幕并嵌入视频文件 limit-rate — 限制下载速度约 5 MB/s 4.3 单次下载覆盖 启用方式: environment: - ALLOW_YTDL_OPTIONS_OVERRIDES=true ️ 安全提示:启用此功能允许任何有 UI 访问权限的人提供任意 yt-dlp API 选项,根据使用的选项,可能允许在容器内执行任意命令。仅在受信任的环境中启用。 五、浏览器 Cookie 使用 如需使用浏览器 Cookie 下载受限或私密视频: 安装浏览器 Cookie 导出扩展: Firefox 扩展 Chrome 扩展 导出 Cookie 为 cookies.txt 文件 在 MeTube 中打开 Advanced Options,点击 Upload Cookies 上传文件 上传后 Cookie 指示器将显示为激活状态 六、浏览器扩展 浏览器扩展支持右键点击视频直接发送到 MeTube。使用扩展时需设置 CORS_ALLOWED_ORIGINS=*。 Chrome:由 Rpsl 贡献,可从 Chrome Web Store 安装 Firefox:由 nanocortex 贡献 七、相关链接 GitHub 仓库:https://github.com/alexta69/metube Docker 镜像:ghcr.io/alexta69/metube yt-dlp 项目:https://github.com/yt-dlp/yt-dlp 配置 Cookbook:MeTube Wiki
  • 0 赞同
    1 帖子
    9 浏览
    L
    Artalk 开源评论系统搭建教程:Go + Vue 轻量级自托管评论系统完整部署指南 一、Artalk 是什么? Artalk 是一款直观且功能丰富的自托管评论系统,可立即部署到任何博客、网站或 Web 应用中。前端使用纯 Vanilla JS 构建(约 40KB),不依赖任何框架;后端使用 Golang 开发,高效轻量且跨平台。支持 Docker 一键部署,开源免费,隐私优先。 项目地址: https://github.com/ArtalkJS/Artalk 官方网站: https://artalk.js.org/ 在线文档: https://artalk.js.org/en/guide/deploy.html 最新版本: v2.9.1 开源协议: MIT License 技术栈: Go 44.7% / TypeScript 38.9% / Vue 7.9% / SCSS 4.7% 二、核心功能特性 2.1 用户与社交 社会登录:支持通过社交账号快速登录 侧边栏管理:快速管理评论,直观浏览 站内通知:红点标记、@提及列表 评论投票:支持对评论点赞或踩 评论排序:多种排序方式,自由选择 评论搜索:快速搜索评论内容 评论置顶:置顶重要消息 仅看作者:只显示作者评论 评论跳转:快速跳转到被引用的评论 自动保存:防止内容丢失 IP 归属地:显示用户 IP 所属地区 多语言:支持多语言切换 夜间模式:一键切换暗色主题 2.2 管理与安全 邮件通知:多种发送方式,支持邮件模板 多样化推送:多种推送方式,通知模板 验证码:多种验证类型,频率限制 评论审核:内容检测,垃圾评论拦截 图片上传:自定义上传,支持图床 管理员:密码验证,徽章标识 多站点:站点隔离,集中管理 页面管理:快速查看,一键标题导航 页面浏览统计:轻松追踪页面浏览量 2.3 内容与展示 Markdown:支持 Markdown 语法渲染 表情包:兼容 OwO 表情,快速集成 层级嵌套:嵌套分页列表,无限滚动 图片灯箱:快速集成图片灯箱效果 图片懒加载:懒加载图片,优化体验 LaTeX:集成 LaTeX 公式解析 扩展插件:支持创建更多可能性 2.4 运维与开发 命令行管理:CLI 命令行操作管理 API 文档:提供 OpenAPI 格式接口文档 程序升级:版本检查,一键升级 数据迁移:免费迁移工具,快速备份 三、快速部署 3.1 Docker 一键部署(推荐) 使用 Docker 一键部署 Artalk 服务端: docker run -d \ --name artalk \ -p 8080:23366 \ -v $(pwd)/data:/data \ -e "TZ=America/New_York" \ -e "ATK_LOCALE=en" \ -e "ATK_SITE_DEFAULT=Artalk Blog" \ -e "ATK_SITE_URL=https://example.com" \ artalk/artalk-go 参数说明: 参数 说明 -p 8080:23366 将容器 23366 端口映射到主机 8080 端口 -v $(pwd)/data:/data 数据持久化存储 TZ 时区设置 ATK_LOCALE 界面语言(en/zh-CN 等) ATK_SITE_DEFAULT 默认站点名称 ATK_SITE_URL 站点 URL 3.2 前端集成 在网页中集成 Artalk 客户端: Artalk.init({ el: '#Comments', site: 'Artalk Blog', server: 'https://artalk.example.com', pageKey: '/2018/10/02/hello-world.html' }) 参数说明: 参数 说明 el 挂载评论组件的 DOM 元素选择器 site 站点名称(需与服务端一致) server Artalk 服务端地址 pageKey 页面唯一标识 3.3 其他安装方式 除 Docker 外,还支持以下安装方式: 二进制文件:从 GitHub Releases 下载预编译版本 go install:通过 Go 包管理器安装 Linux 包管理器:支持各 Linux 发行版的包管理器 四、配置说明 Artalk 启动后会自动生成配置文件 artalk-go.yml,支持丰富的自定义选项: 4.1 基础配置 # 服务端口 port: 23366 # 时区 timezone: Asia/Shanghai # 站点默认名称 site_default: Artalk Blog # 站点 URL site_url: https://example.com 4.2 数据库配置 Artalk 默认使用 SQLite,也可配置 MySQL: db: type: sqlite file: ./data/artalk.db 4.3 邮件通知配置 email: enabled: true send_type: smtp smtp_host: smtp.example.com smtp_port: 465 smtp_user: [email protected] smtp_pass: your_password from: "Artalk <[email protected]>" 4.4 图片上传配置 img_upload: enabled: true path: ./data/uploads/ max_size: 5242880 五、技术架构 5.1 后端(Go) 语言:Go 1.21+ 框架:Gin Web Framework 数据库:SQLite / MySQL 模板引擎:内置模板引擎 命令行:Cobra CLI 5.2 前端(Vue + TypeScript) UI 框架:Vue 3 语言:TypeScript 样式:SCSS 构建工具:Vite 客户端:纯 Vanilla JS(约 40KB),无框架依赖 5.3 项目结构 Artalk/ ├── cmd/ # 命令行入口 ├── conf/ # 配置文件 ├── docs/ # 文档 ├── internal/ # 后端核心逻辑 ├── server/ # 服务端 ├── ui/ # 前端 UI(Vue) ├── public/ # 静态资源 ├── i18n/ # 国际化 ├── scripts/ # 构建脚本 ├── test/ # 测试 ├── main.go # 程序入口 ├── docker-compose.yml ├── Dockerfile └── Makefile 六、数据迁移 Artalk 提供免费的数据迁移工具,支持从其他评论系统导入数据: 支持从 Artalk 旧版本迁移 支持从其他评论系统导入(如 Typecho、WordPress 等) 提供快速备份和恢复功能 七、升级与维护 7.1 一键升级 docker pull artalk/artalk-go docker stop artalk docker rm artalk # 重新运行 docker run 命令 7.2 版本检查 Artalk 支持版本检查和一键升级功能,确保始终运行最新版本。 八、适用场景 个人博客:轻量级评论系统,替代 Disqus、Valine 等 静态网站:完美适配 Hugo、Hexo、Jekyll 等静态站点生成器 技术文档:为文档站点添加评论功能 企业官网:产品页面用户反馈收集 社区论坛:轻量级讨论区域 多站点管理:集中管理多个站点的评论 九、同类产品对比 特性 Artalk Disqus Valine Waline 开源 MIT 自托管 后端语言 Go — Node.js Node.js 前端大小 ~40KB 较大 较大 较大 社会登录 邮件通知 多站点 评论审核 Markdown 图片上传 LaTeX 十、相关资源 资源 链接 官方文档 https://artalk.js.org/ GitHub 仓库 https://github.com/ArtalkJS/Artalk 最新发布 https://github.com/ArtalkJS/Artalk/releases API 文档 https://artalk.js.org/http-api.html 开发指南 https://artalk.js.org/en/develop/ 赞助支持 https://buymeacoffee.com/artalk 十一、贡献指南 欢迎提交 Pull Request! Fork 本项目 创建特性分支 提交更改 推送到分支 创建 Pull Request