部署

部署 RSSHub 需要基本的计算机编程常识, 如果您在部署过程中遇到无法解决的问题请到 issues 寻找类似的问题或 向我们提问, 我们会尽快给您答复.

部署涉及到以下基本编程常识:

  1. 命令行操作
  2. Git
  3. Node.js >= 8.0.0
  4. npmyarn

部署到可外网访问则可能涉及到:

  1. Nginx
  2. Dockerdocker-compose
  3. Redis
  4. Heroku
  5. Google App Engine

手动部署

部署 RSSHub 最直接的方式, 您可以按照以下步骤将 RSSHub 部署在您的电脑、服务器或者其他任何地方.

安装 RSSHub

首先是下载 RSSHub 的源码, 请执行下列命令.

$ git clone https://github.com/DIYgod/RSSHub.git
$ cd RSSHub

下载完成后, 需要安装依赖.

使用 npm

$ npm install

yarn

$ yarn

由于众所周知的原因, 在中国使用 npm 下载依赖十分缓慢, 建议挂一个代理或者考虑使用 NPM 镜像.

:::

启动

RSSHub 文件夹中运行下面的命令就可以启动.

$ npm start

$ yarn start

在浏览器中打开 http://127.0.0.1:1200/, enjoy it! ✅

tip

详细使用说明参照 指南. 替换所有路由例子中的 https://rsshub.app/http://localhost:1200 即可正常使用.

更新

RSSHub 文件夹中运行下面的命令就从 github 仓库拉取最新版本.

$ git pull

添加配置

可以通过修改 config.js 或者设置环境变量来配置 RSSHub.

如何设置环境变量

Windows 系统在 cmd.exe 中运行 $ set PORT=1000

macOS & Linux 运行 $ PORT=1000

再运行 $ npm start 启动 RSSHub 即可将监听端口设置为 1000.

此处设置的环境变量在关闭终端后就会被清除, 如果您想保存这些配置可以编写一个简单的 批处理文件shell.

更多配置项请看 应用配置

使用 Redis 数据库缓存

RSSHub 默认会有 5 分钟的缓存, 默认缓存是存放在内存中的. RSSHub 还支持 Redis 数据库缓存.

提示

除非流量特别大或者您需要建立分布式集群, 否则不需要 Redis 缓存.

修改配置项 CACHE_TYPEredis, RSSHub 将使用默认地址 redis://localhost:6379/ 连接 Redis, 如果需要修改地址请看 应用配置.

使用 Docker 部署

运行下面的命令下载 RSSHub 镜像.

$ docker pull diygod/rsshub

然后运行 RSSHub 即可

$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub

在浏览器中打开 http://127.0.0.1:1200/, enjoy it! ✅

您可以使用下面的命令来关闭 RSSHub.

$ docker stop rsshub

添加配置

配置运行在 docker 中的 RSSHub, 最便利的方法是使用 docker 环境变量.

以设置缓存时间为 1 小时举例, 只需要在运行时增加参数: -e CACHE_EXPIRE=3600

$ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS_TOKEN=example diygod/rsshub

更多配置项请看 应用配置

使用 docker-compose 部署

  1. 创建 volume 持久化 Redis 缓存
$ docker volume create redis-data
  1. 修改 docker-compose.yml 中的 environment 进行配置

    • PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 用以跳过 puppeteer Chromium 的安装. 默认为 1, 需要在 config.js 中的 puppeteerWSEndpoint中设置相应的远程 Chrome Websocket 地址, 以启用相应路由.
    • USE_CHINA_NPM_REGISTRY=1 防止 npm 受到来自 GFW 的干扰. 默认为 0.
  2. 部署

$ docker-compose up
  1. 更新
$ docker-compose build
$ docker-compose up

部署到 Heroku

Deploy

部署到 Google App Engine

部署之前

Before you begin

按照这里的引导完成 GCP 账号设置, 创建 GCP 项目, 创建 App Engine 项目, 开通付费功能(必须), 安装 git 与 gcloud 工具. 并完成 gcloud 工具的初始化, 初始化具体方式请查看这个链接. 如果你不打算在本地调试本项目, 可以不安装 Node.js 环境.

请注意, GAE 免费用量不支持 Flexible Environment, 部署至 Flexible Environment 前请确认收费标准.

Node.JS 的 standard environment 仍在测试中, 您可能会在部署或使用中遇到某些不可预期的问题.

拉取

运行 git clone https://github.com/DIYgod/RSSHub.git 拉取本项目的最新版本.

app.yaml 配置

部署至 Flexible Environment

在 RSSHub 项目根目录下建立一个 app.yaml 文件, 内容示例如下:

# [START app_yaml]
runtime: custom
env: flex

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml
manual_scaling:
    instances: 1
# 以下是 app engine 资源配置, 可以自行修改, 硬盘最低为 10G
resources:
    cpu: 1
    memory_gb: 0.5
    disk_size_gb: 10
network:
    forwarded_ports:
        - 80:1200
        - 443:1200
# 以下是环境配置示例, 具体可配置项见本文档配置章节
env_variables:
    CACHE_EXPIRE: '300'
# [END app_yaml]

部署至 standard environment

在 RSSHub 项目根目录下建立一个 app.yaml 文件, 内容示例如下:

# [START app_yaml]
runtime: nodejs8

network:
    forwarded_ports:
        - 80:1200
        - 443:1200
# 以下是环境配置示例, 具体可配置项见本文档配置章节
env_variables:
    CACHE_EXPIRE: '300'
# [END app_yaml]

开始部署

在 RSSHub 项目根目录下运行

gcloud app deploy

进行项目部署, 如果您需要变更 app.yaml 文件名称或者变更部署的项目 ID 或者指定版本号等, 请参考这个链接的"Deploying a service" 部分.

部署完成后可访问您的 Google App Engine URL 查看部署情况.

配置

应用配置

可以通过修改 config.js 或者设置环境变量来配置 RSSHub.

提示

建议通过设置环境变量来配置 RSSHub. 避免版本更新时的冲突.

PORT: 监听端口, 默认为 1200

SOCKET: 监听 Unix Socket, 默认为 null

CACHE_TYPE: 缓存类型, 可为 memoryredis, 设为空可以禁止缓存, 默认为 memory

CACHE_EXPIRE: 缓存过期时间, 单位为秒, 默认 300

LISTEN_INADDR_ANY: 是否允许公网连接, 默认 1

TITLE_LENGTH_LIMIT: 限制输出标题的字节长度, 一个英文字符的长度为 1 字节, 部分语言如中文, 日文, 韩文或阿拉伯文等, 统一算作 2 字节, 默认 100

REDIS_URL: Redis 连接地址(memory 缓存类型时无效), 默认为 redis://localhost:6379/

REDIS_PASSWORD: Redis 连接密码(memory 缓存类型时无效)

HTTP_BASIC_AUTH_NAME: Http basic authentication 用户名, 默认为 usernam3, 请务必修改

HTTP_BASIC_AUTH_PASS: Http basic authentication 密码, 默认为 passw0rd, 请务必修改

LOGGER_LEVEL: 指明输出到 console 和日志文件的日志的最大等级,默认 info

用户认证

protected_route.js 内的路由将启用 HTTP Basic Authentication 认证.

支持该认证协议的阅读器, 在添加源地址时, 需要在源地址前添加认证信息, 例如:http://usernam3:passw0rd@localhost:1200/protected/rsshub/rss.

部分 RSS 模块配置

  • pixiv: 注册地址

    • PIXIV_USERNAME: Pixiv 用户名

    • PIXIV_PASSWORD: Pixiv 密码

  • disqus: 申请地址

    • DISQUS_API_KEY: Disqus API
  • twitter: 申请地址

    • TWITTER_CONSUMER_KEY: Twitter Consumer Key

    • TWITTER_CONSUMER_SECRET: Twitter Consumer Secret

    • TWITTER_ACCESS_TOKEN: Twitter Access Token

    • TWITTER_ACCESS_TOKEN_SECRET: Twitter Access Token Secret

  • youtube: 申请地址

    • YOUTUBE_KEY: YouTube API Key
  • telegram: Telegram 机器人

    • TELEGRAM_TOKEN: Telegram 机器人 token
  • gitHhub: 申请地址

    • GITHUB_ACCESS_TOKEN: GitHub Access Token

访问控制

可以通过修改 middleware/access-control.js 或者设置环境变量来配置黑名单和白名单.

支持 IP 和路由, 设置多项时用英文逗号 , 隔开. 同时设置黑名单和白名单时仅白名单有效.

  • BLACKLIST: 黑名单

  • WHITELIST: 白名单, 设置白名单后黑名单无效

上次更新: 11/19/2018, 3:02:10 AM