前言
不知道你有没有这种感觉,每天打开手机,信息就像洪水一样涌过来。各个 App 的推送、算法推荐的视频、自媒体搬运的内容......看了一整天,好像刷到了很多东西,但仔细一想,真正想看的、有价值的内容却没几个。
我也是这样过来的。后来又开始用 RSS,那种"我把信息源抓在手里"的感觉确实不错。但问题又来了:电脑上看的进度,手机上不同步;手机上收藏的文章,到电脑上又得重新找。用网上的在线服务吧,又担心哪天服务关了,或者哪天隐私泄露了。
所以干脆想,不如在自己服务器上搭一个。选来选去,看中了 FreshRSS。这玩意儿轻量、开源,界面清爽,还支持 API,手机电脑都能同步。最关键的是,数据在自己手里,踏实。
这篇文章就是记录我自己的搭建过程。我尽量写得细一点,哪怕你之前没怎么摸过 Linux 服务器,跟着一步一步来,应该也能搭起来。咱们用的方式是 Docker,这样最省心,以后想升级或者迁移也方便。
第一步:准备工作:
准备一台具备公网IP的云服务器(推荐使用雨云)
优惠注册地址:https://www.rainyun.com/sn_
使用优惠码:sn
注: 使用优惠码注册后绑定微信可领取5折优惠券
服务器选购步骤:
- 注册后,在"总览"页面找到"云服务器"入口,进入后点击"购买云服务器"

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 的安装向导了 :
- 选择语言:选"中文",然后点"Submit"。
- 环境检查:一般都会通过,直接点"下一步"。
- 数据库配置 :这里选 SQLite 就行。个人用完全够,还省事,不用单独配数据库 。点"下一步"。
- 数据库创建:确认一下信息,继续"下一步"。
- 用户配置:设置你的用户名和密码。这是管理员账号,记好了。
- 完成安装:点"完成",然后用刚才设的账号密码登录。
登录进去之后,看到那个清爽的界面,就算大功告成了。
第六步:基础配置和添加订阅
刚进去里面是空的,咱们可以先配几个地方。
开启 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 为例 :
- 下载安装 Readrops。
- 添加账户,选择"FreshRSS"或者"Google Reader API"(其实是一回事)。
- 地址填你刚才在 API 管理页面看到的那个地址,比如
http://你的服务器IP:8080/api/greader.php。 - 用户名填你登录 FreshRSS 的账号,密码填刚才单独设的 API 密码,不是登录密码。
- 登录成功之后,你在服务器上添加的订阅源、阅读进度就都同步过来了。
电脑上也有不少客户端支持,比如 RSSGuard 就挺好用,同样支持 Google Reader API。
最后说几句
到此为止,你自己的 RSS 服务就跑起来了。以后不管在哪儿,打开手机 App,刷到的都是你自己挑的内容,没有算法推荐,没有广告植入,就是单纯的阅读。
我用了这段时间,最大的感受是"安静"。不用再被那些"你可能感兴趣"的东西牵着走,想看什么,自己说了算。
另外提醒一下,如果你的服务器有公网 IP,建议抽空用 Certbot 配一下 HTTPS,毕竟现在上网没把小锁头,总觉得不太安全。这个网上教程很多,就不展开说了。
希望这篇记录能帮到你。如果在搭建过程中遇到啥问题,不妨先去搜索引擎里看看错误提示,大概率已经有人踩过同样的坑了。