1. 项目概述一个现代、自托管的RSS阅读器如果你和我一样是个信息获取的重度依赖者同时又对数据隐私和阅读体验有近乎偏执的要求那么“自建RSS阅读器”这个念头大概率已经在你脑海里盘旋过无数次了。我们怀念那个通过RSS订阅博客、新闻信息主动“流”向自己的时代而不是被算法推荐的信息茧房所困。然而市面上的RSS服务要么像Feedly、Inoreader这样功能强大但需要付费订阅高级功能要么像Tiny Tiny RSS这样开源但界面略显陈旧部署和维护对新手来说又是个不小的挑战。直到我发现了YourRSS。这个由开发者 XimilalaXiang 在 GitHub 上开源的项目一下子就抓住了我的眼球。它不是一个简单的RSS聚合器而是一个定位为“现代、自托管、多用户”的RSS阅读解决方案。这意味着什么意味着你可以把它部署在自己的服务器、NAS甚至树莓派上完全掌控自己的订阅数据和阅读习惯无需担心服务商倒闭、隐私泄露或者突如其来的付费墙。它的界面设计遵循现代审美操作逻辑清晰支持多用户意味着你可以为家人或小团队搭建一个共享的阅读中心。在深度使用和部署了几个月后我决定把从技术选型、部署实践、深度配置到日常维护的完整经验分享出来。这篇文章不仅仅是一个安装教程更是一个从零开始构建个人信息中枢的实战指南。无论你是想找回对信息流的主动权还是希望为团队搭建一个高效的信息同步平台YourRSS 都值得你投入时间。2. 核心架构与技术栈解析2.1 为什么选择 YourRSS对比主流方案在决定投入 YourRSS 之前我系统地对比了几种主流方案。Feedly/Inoreader这类云服务无疑是开箱即用体验最好的但它们本质上是“租用”服务你的订阅列表、阅读历史、甚至稍后阅读的文章都存放在别人的服务器上。一旦停止付费高级功能如全文抓取、规则过滤就会消失数据导出也并非实时无缝。更关键的是你无法定制任何不符合其商业逻辑的功能。另一类是Tiny Tiny RSS (TTRSS)它是自托管领域的常青树功能极其强大插件生态丰富。但它的“强大”也带来了复杂性。其原生界面对于现代用户来说不够友好虽然可以通过第三方主题或配合 Fever API 使用其他客户端如 Reeder来改善但这又增加了维护链条。此外TTRSS 的默认安装和后续的插件、主题管理对不熟悉 Linux 和 PHP 环境的新手来说门槛不低。YourRSS 的定位非常巧妙它用 Go 语言编写这意味着高性能和极低的资源占用它提供了 Docker 镜像使得部署变得异常简单它的前端采用现代框架提供了响应式、直观的 Web 界面最重要的是它原生支持多用户并且将“自托管”和“良好体验”这两个在过去常常矛盾的点结合了起来。对于追求简洁、高效、可控的个人用户或小团队来说它是一个“刚刚好”的解决方案。2.2 技术栈深度剖析Go、SQLite 与 Docker 的黄金组合拆解 YourRSS 的技术栈能让我们更好地理解其设计哲学和运维要点。后端Go (Golang)Go 语言以高并发、编译部署简单、内存占用低著称。对于 YourRSS 这样一个需要频繁进行网络请求抓取 Feed、处理并发用户操作的 I/O 密集型应用来说Go 是绝佳的选择。这直接带来了两个好处一是性能即使在小内存的 VPS 或树莓派上它也能流畅运行响应迅速二是部署简便最终编译产物是一个独立的二进制文件依赖极少降低了环境配置的复杂度。数据库SQLite这是 YourRSS 设计上的一大亮点也是其“轻量”特性的核心。与传统 RSS 阅读器使用 MySQL 或 PostgreSQL 不同SQLite 是一个进程内的、无服务器的数据库。整个数据库就是一个.db文件。这意味着零配置无需安装和配置独立的数据库服务。备份极其简单直接复制.db文件就完成了全量备份。便携性极佳你可以轻松地将整个 YourRSS 实例程序数据迁移到任何支持其运行环境的机器上。 当然SQLite 在极高并发写的场景下可能存在瓶颈但对于个人或小团队使用的 RSS 阅读器其读写模式定时抓取为写用户浏览为读完全在 SQLite 的能力范围内。部署与分发DockerYourRSS 官方提供了 Docker 镜像。这是降低使用门槛的关键。Docker 将应用及其所有依赖Go 运行时、库文件等打包在一个容器中保证了环境的一致性。无论你的宿主机是 Ubuntu、CentOS 还是群晖 DSM都能通过完全相同的docker run命令一键启动服务彻底避免了“在我机器上好好的”这类问题。前端现代 Web 技术项目前端采用了 React、Vue 这类现代框架具体技术栈需查看项目最新源码提供了单页面应用SPA的流畅体验。页面无需刷新即可完成订阅、标记已读、分类管理等操作。响应式设计确保了在手机、平板、电脑上都有良好的浏览体验。这个技术栈组合Go SQLite Docker清晰地表明了项目的目标为追求简洁、可控和隐私的用户提供一个高性能、低维护成本、易于部署的现代化 RSS 阅读器。3. 从零开始的部署实战理论说得再多不如动手部署一遍。下面我将以最常用的 Linux VPS 为例详细演示通过 Docker 部署 YourRSS 的全过程。如果你使用群晖 NASDSM 7.0或通过 Portainer 管理 Docker步骤原理相通只是操作界面不同。3.1 基础环境准备首先你需要一台拥有公网 IP或至少在内网可访问的服务器。1核 CPU、1GB 内存、10GB 硬盘的入门级 VPS 就完全足够。系统推荐 Ubuntu 22.04 LTS 或 Debian 11。第一步是安装 Docker 和 Docker Compose。通过 Docker Compose 来管理服务是更规范、更易于维护的方式。# 更新系统包索引 sudo apt update sudo apt upgrade -y # 安装 Docker 官方 GPG 密钥和仓库 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装 Docker Engine 和 Compose 插件 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y # 验证安装 docker --version docker compose version注意上述命令适用于 Ubuntu/Debian。对于其他发行版请参考 Docker 官方文档。安装完成后建议将当前用户加入docker组以便无需sudo执行 docker 命令sudo usermod -aG docker $USER。执行后需要退出当前 SSH 会话并重新登录才能生效。3.2 使用 Docker Compose 部署 YourRSS我们不使用简单的docker run命令而是创建一个docker-compose.yml文件。这样做的好处是所有的配置端口、卷挂载、环境变量都声明在一个文件里一目了然并且可以通过docker compose up -d统一启停。在你的服务器上创建一个专属目录例如~/yourrss然后进入该目录。mkdir -p ~/yourrss cd ~/yourrss接下来创建docker-compose.yml文件version: 3.8 services: yourrss: image: ghcr.io/ximilalaxiang/yourrss:latest container_name: yourrss restart: unless-stopped ports: - 8080:8080 # 将容器内的8080端口映射到宿主机的8080端口 volumes: - ./data:/app/data # 持久化存储数据目录 - ./config:/app/config # 持久化存储配置文件可选 environment: - YOURRSS_DB_PATH/app/data/yourrss.db - YOURRSS_LOG_LEVELinfo # 首次启动时设置管理员账号密码启动后可在Web界面修改 - YOURRSS_ADMIN_USERNAMEadmin - YOURRSS_ADMIN_PASSWORDyour_strong_password_here # 如果需要通过代理抓取某些源可以配置网络或额外环境变量 # networks: # - proxy关键配置解析image: 指定从 GitHub Container Registry 拉取 YourRSS 的最新镜像。ports:8080:8080意味着外部通过访问服务器的8080端口来使用服务。如果你的8080端口已被占用可以改为- 8090:8080这样外部就访问8090端口。volumes: 这是最重要的配置用于数据持久化。./data:/app/data: 将容器内的/app/data目录存放 SQLite 数据库文件挂载到宿主机的./data目录。这样即使容器被删除你的订阅数据也完好无损。./config:/app/config: 预留用于挂载自定义配置文件目录。environment:YOURRSS_DB_PATH: 明确指定数据库文件路径与卷挂载路径对应。YOURRSS_ADMIN_USERNAME/PASSWORD:务必修改your_strong_password_here为一个强密码这是你首次登录 Web 管理后台的凭证。保存这个文件后在~/yourrss目录下执行启动命令docker compose up -d-d参数代表“后台运行”。命令执行后Docker 会拉取镜像并启动容器。你可以用以下命令查看状态和日志# 查看容器状态 docker compose ps # 查看实时日志 docker compose logs -f如果看到日志显示服务已在:8080启动没有报错就说明部署成功了。3.3 初次访问与基础配置打开浏览器访问http://你的服务器IP:8080。你应该能看到 YourRSS 的登录界面。使用在docker-compose.yml中设置的管理员账号密码登录。首次登录后我建议你立即完成以下几件事修改管理员密码在用户设置里把初始密码改掉。配置站点信息在系统设置中可以修改站点名称、Logo等让它更个性化。设置抓取周期YourRSS 默认会定时抓取订阅源。你可以在设置里调整抓取频率如每30分钟一次。对于新闻类源可以设置短一些对于更新不频繁的博客可以设置长一些以减轻服务器负担。探索界面熟悉一下分类管理、订阅源管理、文章列表视图列表、卡片、杂志等基本功能。至此一个完全属于你、由你掌控的 RSS 阅读器就已经搭建完成了。但要让它真正好用、融入你的工作流还需要一些深度配置和技巧。4. 深度配置与高级使用技巧一个能用的 RSS 阅读器和一个好用的 RSS 阅读器之间差的就是这些细节配置和技巧。4.1 订阅源的管理与优化盲目添加订阅源是信息过载的开始。我的建议是“精挑细选定期修剪”。导入已有订阅列表如果你从 Feedly 或 Inoreader 迁移它们都支持导出 OPML 文件。在 YourRSS 的“订阅源”页面找到“导入 OPML”功能上传文件即可批量导入。导入后不要就此不管花点时间整理分类。分类的艺术建立有意义的分类如“技术核心”、“行业动态”、“生活兴趣”、“稍后细读”。分类不宜过多5-8个为宜。YourRSS 支持多级分类吗目前版本通常支持一级分类这已经足够。你可以用“技术/前端”、“技术/后端”这样的命名来实现伪二级分类。处理抓取失败的源有些网站对 RSS 抓取不友好。在 YourRSS 的订阅源列表里可以查看每个源的最后抓取状态。对于失败的源可以检查 RSS 地址是否正确。有时网站改版RSS 路径会变。尝试寻找全文 RSS 源。很多网站提供的是摘要 RSSYourRSS 支持通过“阅读器视图”或“全文抓取”来补全内容但这需要源网站结构规则清晰。对于复杂网站可以尝试用 RSSHub 这类工具生成更友好的 RSS 源。如果某个源长期失败且非必需果断删除。4.2 全文抓取与阅读器视图配置这是提升阅读体验的关键。很多网站尤其是新闻网站的 RSS 只输出摘要点击后需要跳转到原站不仅慢还可能遇到广告或付费墙。YourRSS 内置了“阅读器视图”功能其原理是抓取原文链接的页面并尝试提取正文内容过滤掉广告、导航等无关元素。如何启用在文章列表或阅读界面寻找一个类似“报纸”或“阅读器”的图标点击即可尝试转换。但请注意这个功能并非百分百成功其效果取决于目标网站的结构是否规则。自定义提取规则对于你常看但阅读器视图效果不好的网站可以尝试寻找或编写自定义提取规则。这通常需要一些前端知识了解 CSS 选择器。在 YourRSS 的高级设置或相关插件中可能会提供自定义规则配置的地方。你可以通过浏览器开发者工具找到文章正文所在 HTML 元素的 ID 或 Class将其配置为规则。例如规则可能是article .post-content。这是一个高阶玩法但一旦配置成功阅读体验会有质的飞跃。备用方案RSSHub对于特别顽固的网站或者你想订阅一些本身没有 RSS 的站点如微博话题、B站UP主、Twitter 列表RSSHub是一个神器。它是一个开源、万物皆可 RSS 的工具。你可以自建一个 RSSHub 服务然后用它生成的 RSS 地址如https://你的rsshub地址/weibo/user/123456订阅到 YourRSS 中。这样YourRSS 负责聚合和阅读RSSHub 负责“制造”订阅源两者结合几乎无所不能。4.3 多用户管理与团队使用YourRSS 的多用户功能是其一大特色。作为管理员你可以在后台创建新用户。用户角色通常有管理员和普通用户之分。管理员可以管理所有订阅源、分类和用户普通用户只能管理自己的。团队使用场景小型团队信息同步创建一个公共分类如“团队技术分享”管理员或指定成员负责维护这个分类下的订阅源如 Hacker News, 某些技术博客。所有团队成员都能看到这个分类下的文章并可以各自标记已读/未读互不干扰。家庭信息中心为家人创建账号订阅不同的兴趣源如妈妈的菜谱博客、孩子的科普网站、爸爸的财经新闻。大家在一个统一的、无广告的界面里阅读数据完全私有。注意事项多用户模式下数据库文件会增大。定期备份data目录下的.db文件尤为重要。另外要教育用户不要添加过多低质量源以免影响服务器性能和抓取效率。4.4 数据备份与迁移你的订阅数据是无价的。备份方案必须简单可靠。自动备份推荐由于数据卷挂载在宿主机的./data目录你可以写一个简单的 Shell 脚本用cron定时任务来备份。# 示例备份脚本 /home/youruser/backup_yourrss.sh #!/bin/bash BACKUP_DIR/path/to/your/backup/folder SOURCE_DIR/home/youruser/yourrss/data DATE$(date %Y%m%d_%H%M%S) tar -czf $BACKUP_DIR/yourrss_backup_$DATE.tar.gz -C $SOURCE_DIR . # 保留最近7天的备份 find $BACKUP_DIR -name yourrss_backup_*.tar.gz -mtime 7 -delete给脚本执行权限chmod x backup_yourrss.sh然后在 crontab 中添加0 2 * * * /home/youruser/backup_yourrss.sh表示每天凌晨2点执行备份。手动备份直接复制~/yourrss/data整个目录即可。迁移迁移到新服务器非常简单。在新服务器上按照同样的docker-compose.yml配置部署好 YourRSS但先不要启动。将旧服务器上data目录下的所有文件主要是yourrss.db复制到新服务器的对应目录。然后启动新服务器的容器所有数据、用户、订阅源都会完美恢复。5. 常见问题与故障排查实录在实际使用和帮助他人部署的过程中我积累了一些典型问题的解决方法。5.1 部署与启动问题问题现象可能原因解决方案访问http://IP:8080连接被拒绝1. 防火墙未放行端口2. Docker 服务未运行3. 容器启动失败1. 检查服务器防火墙如ufw和云服务商安全组确保8080端口开放。2. 运行systemctl status docker和docker compose ps查看服务状态。3. 运行docker compose logs yourrss查看具体错误日志。容器不断重启 (Restarting)1. 端口冲突2. 卷挂载目录权限问题3. 环境变量配置错误1. 检查宿主机8080端口是否被其他程序占用修改docker-compose.yml中的端口映射。2. 确保宿主机上的./data和./config目录存在且 Docker 进程有读写权限。可尝试sudo chown -R 1000:1000 ./data1000是容器内常用非root用户ID。3. 检查docker-compose.yml中环境变量格式是否正确特别是密码是否有特殊字符需转义。拉取镜像速度慢或失败网络连接 GitHub Container Registry 不畅1. 尝试使用 Docker Hub 镜像如果项目有同步。2. 为 Docker Daemon 配置国内镜像加速器。5.2 使用与功能问题问题现象可能原因解决方案订阅源抓取失败状态为“错误”1. RSS 地址无效或变更2. 源网站反爬虫3. 服务器网络问题1. 用浏览器打开 RSS 地址确认其有效。2. 尝试在 YourRSS 中为该源设置一个 User-Agent模仿浏览器。有些网站会屏蔽默认的抓取请求头。3. 在服务器上curl -I RSS_URL测试网络连通性。文章列表不更新或更新延迟1. 抓取任务未正常执行2. 源网站更新频率低1. 检查系统设置中的“抓取间隔”是否合理。可以手动触发一次“立即抓取所有订阅源”测试。2. 有些博客更新不频繁属于正常现象。阅读器视图无法提取正文或格式错乱目标网站 HTML 结构复杂内置提取规则不匹配1. 放弃使用阅读器视图直接点击“原文链接”阅读。2. 高级尝试为这个特定的网站配置自定义的正文 CSS 选择器规则。界面操作卡顿1. 服务器资源内存/CPU不足2. 数据库文件过大3. 前端浏览器缓存问题1. 通过docker stats查看容器资源占用。考虑升级服务器配置。2. 清理长期未读或已读的文章。YourRSS 可能有相关清理设置。3. 尝试清除浏览器缓存或使用无痕模式访问。5.3 性能与维护问题数据库文件越来越大怎么办YourRSS 会存储所有抓取到的文章。长期积累后SQLite 文件可能达到几百MB甚至GB级别。虽然 SQLite 能处理但可能会影响查询速度。建议在设置中启用“自动清理旧文章”功能例如只保留30天或60天的文章。定期手动清理不活跃的订阅源。对于非常重要的长文可以使用“收藏”或“加星标”功能这些文章通常不会被自动清理。如何更新 YourRSS 到新版本由于使用 Docker更新非常简单cd ~/yourrss docker compose pull # 拉取最新的镜像 docker compose down # 停止并删除旧容器 docker compose up -d # 用新镜像启动新容器数据都在挂载的data卷里所以更新过程是安全的。但更新前务必做好备份想通过域名访问并启用 HTTPS直接暴露8080端口不太安全。最佳实践是使用Nginx Proxy Manager (NPM)或Caddy这样的反向代理工具。先为你的域名配置好 DNS A 记录指向服务器 IP。安装 NPM也有 Docker 镜像在 NPM 管理界面添加一个反向代理主机。将你的域名如rss.yourdomain.com代理到http://localhost:8080如果 YourRSS 和 NPM 在同一台机器。在 NPM 中一键申请 Let‘s Encrypt 的 SSL 证书启用 HTTPS。 这样你就可以通过https://rss.yourdomain.com安全地访问 YourRSS 了。经过几个月的深度使用YourRSS 已经成为了我每日获取信息的核心入口。它带给我的不仅仅是无广告、不追踪的阅读环境更重要的是一种“信息主权”的回归感。我知道我的数据在哪里我知道服务不会突然消失或变卦我可以按照自己的意愿去定制和扩展它。从部署时的一行命令到日常使用中的每一次订阅和阅读这种完全掌控的体验是任何云服务都无法提供的。如果你也厌倦了被算法投喂渴望一个简洁、高效、属于自己的信息港湾那么花上一个下午的时间部署属于你自己的 YourRSS。这个过程本身就是一次对数字生活主权的宣示。