使用 Docker 部署 FreshRSS:搭建私有 RSS 阅读服务

本文介绍如何使用 Docker 部署 FreshRSS,搭建自己的 RSS 阅读服务。相比商业服务(如 Inoreader),自托管 FreshRSS 无需付费且无功能限制。

服务器要求
为确保 RSS 源的可靠访问,建议使用境外服务器部署。
  • Docker 和 Docker Compose
  • 稳定的网络连接
  • 建议 1GB 以上内存

bash

# 创建并进入 FreshRSS 工作目录
mkdir ~/freshrss && cd ~/freshrss

创建 docker-compose.yml 文件:

yaml

version: "3"

services:
  # PostgreSQL 数据库服务
  freshrss-db:
    image: postgres:latest
    container_name: freshrss-db
    hostname: freshrss-db
    restart: always
    volumes:
      - freshrss-db:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: freshrss         # 设置数据库用户名
      POSTGRES_PASSWORD: freshrss     # 设置数据库密码
      POSTGRES_DB: freshrss          # 设置数据库名

  # FreshRSS 应用服务
  freshrss-app:
    image: freshrss/freshrss:latest
    container_name: freshrss-app
    hostname: freshrss-app
    restart: always
    ports:
      - "39954:80"                   # 端口映射,可根据需要修改
    depends_on:
      - freshrss-db
    volumes:
      - ./data:/var/www/FreshRSS/data
      - ./extensions:/var/www/FreshRSS/extensions
    environment:
      CRON_MIN: '*/45'               # RSS 更新间隔(分钟)
      TZ: Asia/Shanghai              # 时区设置

volumes:
  freshrss-db:

bash

docker-compose up -d

访问 http://your-domain:39954 进行初始化配置:

  1. 数据库配置

    • 主机名:freshrss-db(与 Docker 容器名对应)
    • 用户名:与 POSTGRES_USER 值相同
    • 密码:与 POSTGRES_PASSWORD 值相同
    • 数据库名:与 POSTGRES_DB 值相同
    • 表前缀:可自定义
  2. 管理员账户

    • 设置管理员用户名和密码
    • 配置网站基本信息
  1. 阅读设置

    • 建议关闭:阅读 => 合适将文章标记为已读 => 在滚动浏览后
    • 原因:避免意外将未读文章标记为已读
  2. 扩展功能

    • 推荐安装 Auto Refresh 扩展实现自动刷新
    • 安装步骤:
      1. 下载扩展文件
      2. 解压到 ~/freshrss/extensions/ 目录
      3. 在 FreshRSS 后台启用扩展
      4. 修改刷新间隔:编辑 xExtension-AutoRefresh/static/script.js

如需配置 Nginx 反向代理,请参考:使用 Nginx 实现多服务复用端口

  1. 进入 FreshRSS 设置
  2. 开启:认证 => 允许 API 访问
  3. 设置:用户账户 => API 管理 => API 密码

text

API 地址:https://your-domain/api/fever.php
用户名:您的用户名
密码:API 密码

text

API 地址:https://your-domain/api/greader.php
用户名:您的用户名
密码:API 密码
服务类型:选择 FreshRSS
注意
FeedMe 请使用 Google Reader API(greader.php),Fever API 可能导致认证失败。