给自己搭一个私人阅读空间:FreshRSS 部署手记

前言

不知道你有没有这种感觉,每天打开手机,信息就像洪水一样涌过来。各个 App 的推送、算法推荐的视频、自媒体搬运的内容......看了一整天,好像刷到了很多东西,但仔细一想,真正想看的、有价值的内容却没几个。

我也是这样过来的。后来又开始用 RSS,那种"我把信息源抓在手里"的感觉确实不错。但问题又来了:电脑上看的进度,手机上不同步;手机上收藏的文章,到电脑上又得重新找。用网上的在线服务吧,又担心哪天服务关了,或者哪天隐私泄露了。

所以干脆想,不如在自己服务器上搭一个。选来选去,看中了 FreshRSS。这玩意儿轻量、开源,界面清爽,还支持 API,手机电脑都能同步。最关键的是,数据在自己手里,踏实。

这篇文章就是记录我自己的搭建过程。我尽量写得细一点,哪怕你之前没怎么摸过 Linux 服务器,跟着一步一步来,应该也能搭起来。咱们用的方式是 Docker,这样最省心,以后想升级或者迁移也方便。

第一步:准备工作:

准备一台具备公网IP的云服务器(推荐使用雨云)

优惠注册地址:https://www.rainyun.com/sn_

使用优惠码:sn

注: 使用优惠码注册后绑定微信可领取5折优惠券

服务器选购步骤:

  1. 注册后,在"总览"页面找到"云服务器"入口,进入后点击"购买云服务器"

    2.根据需求选择合适的配置,建议选择国内的服务器,访问更快,选好后点击立即购买即可

    3.选好后进入控制台,使用SSH客户端远程连接服务器即可,SSH客户端建议选择FinalShell

第二步:装 Docker 和 Docker Compose

FreshRSS 官方提供了 Docker 镜像,用 Docker 装的话,很多环境依赖的问题就不用自己折腾了。如果你服务器上还没装 Docker,咱们现装一下。

先更新一下软件源:

bash 复制代码
sudo apt update && sudo apt upgrade -y

然后装一些必要的工具:

bash 复制代码
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

添加 Docker 官方的 GPG 密钥和仓库:

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再更新一下,然后装 Docker:

bash 复制代码
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

装完了可以验证一下:

bash 复制代码
sudo docker run hello-world

如果看到一堆欢迎信息,说明 Docker 装好了。

Docker Compose 咱们也需要,刚才装 docker-compose-plugin 的时候其实已经带了,可以用这个命令确认一下:

bash 复制代码
docker compose version

有版本号出来就行。

为了方便,可以把当前用户加到 docker 组里,以后就不用每次输 sudo 了:

bash 复制代码
sudo usermod -aG docker $USER

注意: 这个命令执行完后,需要退出 SSH 重新登录 才能生效。或者你也可以先继续用 sudo,等下次登录再享受"免 sudo"的待遇。

第三步:创建 FreshRSS 的安装目录

我喜欢把东西放得整齐一点,所以在 /opt 下面建个文件夹:

bash 复制代码
sudo mkdir -p /opt/freshrss/data
sudo mkdir -p /opt/freshrss/extensions
cd /opt/freshrss

data 文件夹用来存数据库和配置,extensions 文件夹留给以后装插件用 。

第四步:写 docker-compose.yml 文件

在当前目录(/opt/freshrss)下创建一个 docker-compose.yml 文件:

bash 复制代码
vim docker-compose.yml

如果你不会用 vim,也可以用 nano,都行。把下面的内容贴进去:

yaml 复制代码
services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    hostname: freshrss
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./data:/var/www/FreshRSS/data
      - ./extensions:/var/www/FreshRSS/extensions
    environment:
      TZ: Asia/Shanghai
      CRON_MIN: '*/30'
    logging:
      options:
        max-size: "10m"
        max-file: "3"

简单解释一下这几个参数是干啥的:

  • ports : 把容器里的 80 端口映射到服务器的 8080 端口。也就是说,到时候你访问 http://你的服务器IP:8080 就能打开 FreshRSS 。
  • volumes : 把刚才建的 data 和 extensions 文件夹挂载到容器里,这样数据就持久化到服务器硬盘上了,以后删掉容器重装,订阅源和配置都还在 。
  • TZ: 设置时区,改成 Asia/Shanghai 咱们用着舒服 。
  • CRON_MIN : 这个是定时刷新 RSS 源的时间间隔。*/30 表示每 30 分钟跑一次。你也可以根据自己的需求改,比如 */15 就是 15 分钟 。
  • logging: 限制日志文件大小,免得时间长了把硬盘撑爆。

文件写好后保存退出。然后启动容器:

bash 复制代码
docker compose up -d

第一次运行会拉取镜像,等一会儿。看到 "done" 的字样就 OK 了。

可以用这个命令看看容器是不是在正常运行:

bash 复制代码
docker ps

如果 freshrss 出现在列表里,STATUS 是 Up 开头,就说明成了。

第五步:通过浏览器完成初始化

打开浏览器,地址栏输入 http://你的服务器IP:8080。

如果打不开,检查一下服务器的防火墙有没有放开 8080 端口。像阿里云、腾讯云这些,都得去控制台的"安全组"里配一下"入方向"规则,允许 TCP 8080 端口访问。

进去之后就是 FreshRSS 的安装向导了 :

  1. 选择语言:选"中文",然后点"Submit"。
  2. 环境检查:一般都会通过,直接点"下一步"。
  3. 数据库配置 :这里选 SQLite 就行。个人用完全够,还省事,不用单独配数据库 。点"下一步"。
  4. 数据库创建:确认一下信息,继续"下一步"。
  5. 用户配置:设置你的用户名和密码。这是管理员账号,记好了。
  6. 完成安装:点"完成",然后用刚才设的账号密码登录。

登录进去之后,看到那个清爽的界面,就算大功告成了。

第六步:基础配置和添加订阅

刚进去里面是空的,咱们可以先配几个地方。

开启 API 访问(如果你打算在手机 App 上用)

点右上角的齿轮图标(设置),在"管理"下面找到"认证",勾选"允许 API 访问",然后提交 。

接着在左边菜单的"账户"下面,找到"API 管理",给你的 API 设一个密码。注意: 这个密码和你登录密码是分开的,可以不一样。设好之后,页面上会显示一个地址,比如 http://你的服务器IP:8080/api/greader.php,这个地址就是待会儿在手机 App 里要填的 。

添加订阅源

点左上角那个蓝色的"订阅管理"按钮,然后在导航栏里找到"添加订阅"。把你想订阅的网站 RSS 地址贴进去,选个分类,保存就行 。

RSS 地址怎么找?很多网站会在页面底部放一个 RSS 图标,或者直接在网址后面加 /feed、/rss 试试。如果找不到,可以去 GitHub 上搜"RSSHub",那是个好东西。

配置归档策略

订阅多了,文章攒得就快,会占硬盘。可以在设置里配置一下清理策略,比如保留 200 篇最新的,或者保留 30 天内的。这样数据库不会无限膨胀。

第七步:让信息流动起来(客户端配置)

FreshRSS 的一大好处就是支持多种 API,可以在手机、电脑上用专门的阅读器 App 看。

以我用的 Android 版 Readrops 为例 :

  1. 下载安装 Readrops。
  2. 添加账户,选择"FreshRSS"或者"Google Reader API"(其实是一回事)。
  3. 地址填你刚才在 API 管理页面看到的那个地址,比如 http://你的服务器IP:8080/api/greader.php。
  4. 用户名填你登录 FreshRSS 的账号,密码填刚才单独设的 API 密码,不是登录密码。
  5. 登录成功之后,你在服务器上添加的订阅源、阅读进度就都同步过来了。

电脑上也有不少客户端支持,比如 RSSGuard 就挺好用,同样支持 Google Reader API。

最后说几句

到此为止,你自己的 RSS 服务就跑起来了。以后不管在哪儿,打开手机 App,刷到的都是你自己挑的内容,没有算法推荐,没有广告植入,就是单纯的阅读。

我用了这段时间,最大的感受是"安静"。不用再被那些"你可能感兴趣"的东西牵着走,想看什么,自己说了算。

另外提醒一下,如果你的服务器有公网 IP,建议抽空用 Certbot 配一下 HTTPS,毕竟现在上网没把小锁头,总觉得不太安全。这个网上教程很多,就不展开说了。

希望这篇记录能帮到你。如果在搭建过程中遇到啥问题,不妨先去搜索引擎里看看错误提示,大概率已经有人踩过同样的坑了。

相关推荐
西索斯coding3 分钟前
Grok 4.7 调用一直 401 怎么办?不是 Key 过期,是 Authorization 头格式问题——排查全流程 + 修复示例
服务器·开发语言·ai·php
yunlaodacom31 分钟前
华为云国际站服务代理商:BMS数据库延迟突然升高?磁盘I/O、网络与CPU排查方法
网络·数据库·华为云
const_qiu31 分钟前
第四章 07:4.7 本章小结
java·运维·服务器·人工智能
张宇Joaquin36 分钟前
自研SP600系列网卡驱动跟麒麟V10 SP3 2403配套关系
linux·运维·网络
睡一觉就好了。44 分钟前
Cookie与Session
网络
步行cgn1 小时前
HTTP 常用请求方法详解
网络·网络协议·http
mengge.cloud1 小时前
1019Namespace ,Contexts ,Kubernetes Pod
运维·服务器·网络·云原生·容器·kubernetes·云计算
艾iYYY1 小时前
【无标题】
linux·开发语言·网络·操作系统
QZ166560951591 小时前
可视化易用·低误报率·跨区域部署:知源-AI数据分类分级系统在金融行业的落地实践
大数据·网络·安全·网络安全
aixingkong9212 小时前
UALink 技术白皮书解读
服务器·网络·硬件架构