给自己搭一个私人阅读空间: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 : 把刚才建的 dataextensions 文件夹挂载到容器里,这样数据就持久化到服务器硬盘上了,以后删掉容器重装,订阅源和配置都还在 。
  • TZ: 设置时区,改成 Asia/Shanghai 咱们用着舒服 。
  • CRON_MIN : 这个是定时刷新 RSS 源的时间间隔。*/30 表示每 30 分钟跑一次。你也可以根据自己的需求改,比如 */15 就是 15 分钟 。
  • logging: 限制日志文件大小,免得时间长了把硬盘撑爆。

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

bash 复制代码
docker compose up -d

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

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

bash 复制代码
docker ps

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

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

打开浏览器,地址栏输入 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,毕竟现在上网没把小锁头,总觉得不太安全。这个网上教程很多,就不展开说了。

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

相关推荐
wanhengidc2 小时前
云手机 数据信息资源共享
大数据·运维·服务器·游戏·智能手机
航Hang*2 小时前
第2章:进阶Linux系统——第1节:配置与管理Samba服务器
linux·运维·服务器·笔记·学习
摇滚侠2 小时前
从 Tomcat 服务最大连接数角度讲一讲高峰期高考查分网站打不开,服务器的资源是有限的,同一时间大量用户连接服务器,会耗尽服务器的资源,服务器会拒绝新的连接
java·服务器·tomcat
娇娇yyyyyy2 小时前
C++ 网络编程(22) beast网络库实现websocket服务器
网络·c++·websocket
谢娘蓝桥2 小时前
Mac mini 4 docker 安装openclaw
运维·docker·容器
心前阳光2 小时前
Mirror网络库插件使用4
java·linux·网络·unity·c#·游戏引擎
XHW___0012 小时前
linux 解决挖矿病毒的方法
linux·运维·服务器
悲伤小伞2 小时前
0-MySQL 在 Centos 7环境详细安装过程
linux·服务器·数据库·mysql·centos
jimy12 小时前
字节流(XML、JSON、文件、网络、图像、加密…)必须用无符号语义unsigned char
xml·c语言·网络·json