diff --git a/docs/en/install/README.md b/docs/en/install/README.md index 3facf24b85..efc6eb5b44 100644 --- a/docs/en/install/README.md +++ b/docs/en/install/README.md @@ -4,13 +4,13 @@ sidebar: auto # Deployment -RSSHub provides a painless deployment process if you are equipped with basic programming knowledge, you may open an [issue](https://github.com/DIYgod/RSSHub/issues/new) if you believe you have encountered a problem not listed [here](https://github.com/DIYgod/RSSHub/issues), the community will try to sort it out asap. +RSSHub provides a painless deployment process if you are equipped with basic programming knowledge, you may open an [issue](https://github.com/DIYgod/RSSHub/issues/new/choose) if you believe you have encountered a problem not listed [here](https://github.com/DIYgod/RSSHub/issues), the community will try to sort it out asap. The deployment may involve the followings: 1. Command line interface 1. [Git](https://git-scm.com/) -1. [Node.js >= 8.0.0](https://nodejs.org/) +1. [Node.js](https://nodejs.org/) 1. [npm](https://www.npmjs.com/get-npm) or [yarn](https://yarnpkg.com/zh-Hans/docs/install) Deploy for public access may require: diff --git a/docs/install/README.md b/docs/install/README.md index 61cd87e816..f3d87d48de 100644 --- a/docs/install/README.md +++ b/docs/install/README.md @@ -4,13 +4,13 @@ sidebar: auto # 部署 -部署 RSSHub 需要基本的计算机编程常识, 如果您在部署过程中遇到无法解决的问题请到 [issues](https://github.com/DIYgod/RSSHub/issues) 寻找类似的问题或 [向我们提问](https://github.com/DIYgod/RSSHub/issues/new), 我们会尽快给您答复. +部署 RSSHub 需要基本的计算机编程常识, 如果您在部署过程中遇到无法解决的问题请到 [issues](https://github.com/DIYgod/RSSHub/issues) 寻找类似的问题或 [向我们提问](https://github.com/DIYgod/RSSHub/issues/new/choose), 我们会尽快给您答复 部署涉及到以下基本编程常识: 1. 命令行操作 1. [Git](https://git-scm.com/) -1. [Node.js >= 8.0.0](https://nodejs.org/) +1. [Node.js](https://nodejs.org/) 1. [npm](https://www.npmjs.com/get-npm) 或 [yarn](https://yarnpkg.com/zh-Hans/docs/install) 部署到可外网访问则可能涉及到: @@ -21,97 +21,47 @@ sidebar: auto 1. [Heroku](https://devcenter.heroku.com/articles/getting-started-with-nodejs) 1. [Google App Engine](https://cloud.google.com/appengine/) -## 手动部署 +## Docker Compose 部署 -部署 `RSSHub` 最直接的方式, 您可以按照以下步骤将 `RSSHub` 部署在您的电脑、服务器或者其他任何地方. +### 安装 -### 安装 RSSHub - -首先是下载 `RSSHub` 的源码, 请执行下列命令. +下载 [docker-compose.yml](https://github.com/DIYgod/RSSHub/blob/master/docker-compose.yml) ```bash -$ git clone https://github.com/DIYgod/RSSHub.git -$ cd RSSHub +wget https://github.com/DIYgod/RSSHub/blob/master/docker-compose.yml ``` -下载完成后, 需要安装依赖. - -使用 `npm` +创建 volume 持久化 Redis 缓存 ```bash -$ npm install +$ docker volume create redis-data ``` -或 `yarn` +启动 ```bash -$ yarn +$ docker-compose up -d ``` -由于众所周知的原因, 在中国使用 `npm` 下载依赖十分缓慢, 建议挂一个代理或者考虑使用 [NPM 镜像](https://npm.taobao.org/). - -::: - -### 启动 - -在 `RSSHub` 文件夹中运行下面的命令就可以启动. - -```bash -$ npm start -``` - -或 - -```bash -$ yarn start -``` - -在浏览器中打开 [http://127.0.0.1:1200/](http://127.0.0.1:1200/), enjoy it! ✅ - -::: tip tip - -详细使用说明参照 [指南](https://docs.rsshub.app/). 替换所有路由例子中的 `https://rsshub.app/` 为 `http://localhost:1200` 即可正常使用. - -::: - ### 更新 -在 `RSSHub` 文件夹中运行下面的命令就从 github 仓库拉取最新版本. +删除旧容器 ```bash -$ git pull +$ docker-compose down ``` +然后重复安装步骤 + ### 添加配置 -可以通过设置环境变量来配置 RSSHub. +修改 [docker-compose.yml](https://github.com/DIYgod/RSSHub/blob/master/docker-compose.yml) 中的 `environment` 进行配置 -在项目根目录新建一个 `.env` 文件,每行以 `NAME=VALUE` 格式添加环境变量,例如 +## Docker 部署 -``` -CACHE_TYPE=redis -CACHE_EXPIRE=600 -``` +### 安装 -注意它不会覆盖已有的环境变量,更多规则请参考 [dotenv](https://github.com/motdotla/dotenv) - -更多配置项请看 [应用配置](#应用配置) - -### 使用 Redis 数据库缓存 - -RSSHub 默认会有 5 分钟的缓存, 默认缓存是存放在内存中的. RSSHub 还支持 Redis 数据库缓存. - -::: tip 提示 - -除非流量特别大或者您需要建立分布式集群, 否则不需要 Redis 缓存. - -::: - -修改配置项 `CACHE_TYPE` 为 `redis`, RSSHub 将使用默认地址 `redis://localhost:6379/` 连接 Redis, 如果需要修改地址请看 [应用配置](#应用配置). - -## 使用 Docker 部署 - -运行下面的命令下载 RSSHub 镜像. +运行下面的命令下载 RSSHub 镜像 ```bash $ docker pull diygod/rsshub @@ -125,15 +75,26 @@ $ docker run -d --name rsshub -p 1200:1200 diygod/rsshub 在浏览器中打开 [http://127.0.0.1:1200/](http://127.0.0.1:1200/), enjoy it! ✅ -您可以使用下面的命令来关闭 RSSHub. +您可以使用下面的命令来关闭 RSSHub ```bash $ docker stop rsshub ``` +### 更新 + +删除旧容器 + +```bash +$ docker stop rsshub +$ docker rm rsshub +``` + +然后重复安装步骤 + ### 添加配置 -配置运行在 docker 中的 RSSHub, 最便利的方法是使用 docker 环境变量. +配置运行在 docker 中的 RSSHub, 最便利的方法是使用 docker 环境变量 以设置缓存时间为 1 小时举例, 只需要在运行时增加参数: `-e CACHE_EXPIRE=3600` @@ -141,51 +102,105 @@ $ docker stop rsshub $ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS_TOKEN=example diygod/rsshub ``` -更多配置项请看 [应用配置](#应用配置) +该部署方式不包括 puppeteer 和 redis 依赖,如有需要请改用 Docker Compose 部署方式或自行部署外部依赖 -### 使用 docker-compose 部署 +更多配置项请看 [#配置](#配置) -1. 创建 volume 持久化 Redis 缓存 +## 手动部署 + +部署 `RSSHub` 最直接的方式, 您可以按照以下步骤将 `RSSHub` 部署在您的电脑、服务器或者其他任何地方 + +### 安装 + +首先是下载 `RSSHub` 的源码 ```bash -$ docker volume create redis-data +$ git clone https://github.com/DIYgod/RSSHub.git +$ cd RSSHub ``` -1. 修改 [docker-compose.yml](https://github.com/DIYgod/RSSHub/blob/master/docker-compose.yml) 中的 `environment` 进行配置(可选) +下载完成后, 需要安装依赖 -1. 部署 +使用 `npm` ```bash -$ docker-compose up -d +$ npm install ``` -1. 更新 +或 `yarn` + +```bash +$ yarn +``` + +由于众所周知的原因, 在中国使用 `npm` 下载依赖十分缓慢, 建议挂一个代理或者考虑使用 [NPM 镜像](https://npm.taobao.org/) + +然后在 `RSSHub` 文件夹中运行下面的命令就可以启动 + +```bash +$ npm start +``` + +或 + +```bash +$ yarn start +``` + +或使用 [PM2](https://pm2.io/doc/zh/runtime/quick-start/) + +```bash +$ pm2 start lib/index.js --name rsshub +``` + +在浏览器中打开 [http://127.0.0.1:1200/](http://127.0.0.1:1200/), enjoy it! ✅ + +详细使用说明参照 [指南](https://docs.rsshub.app/),替换所有路由例子中的 `https://rsshub.app/` 为 `http://localhost:1200` 即可正常使用 + +### 添加配置 + +可以通过设置环境变量来配置 RSSHub + +在项目根目录新建一个 `.env` 文件,每行以 `NAME=VALUE` 格式添加环境变量,例如 + +``` +CACHE_TYPE=redis +CACHE_EXPIRE=600 +``` + +注意它不会覆盖已有的环境变量,更多规则请参考 [dotenv](https://github.com/motdotla/dotenv) + +该部署方式不包括 puppeteer 和 redis 依赖,如有需要请改用 Docker Compose 部署方式或自行部署外部依赖 + +更多配置项请看 [#配置](#配置) + +### 更新 + +在 `RSSHub` 文件夹中运行下面的命令就从 github 仓库拉取最新版本 ```bash $ git pull -$ docker-compose build -$ docker-compose up -d ``` +然后重复安装步骤 + ## 部署到 Heroku [![Deploy](https://i.imgur.com/e6ZcmUY.png)](https://heroku.com/deploy?template=https%3A%2F%2Fgithub.com%2FDIYgod%2FRSSHub) ## 部署到 Google App Engine -### 部署之前 +### 准备 [Before you begin](https://cloud.google.com/appengine/docs/flexible/nodejs/quickstart) -按照这里的引导完成 GCP 账号设置, 创建 GCP 项目, 创建 App Engine 项目, 开通付费功能(必须), 安装 git 与 gcloud 工具. 并完成 gcloud 工具的初始化, 初始化具体方式[请查看这个链接](https://cloud.google.com/sdk/gcloud/?hl=zh-CN). 如果你不打算在本地调试本项目, 可以不安装 Node.js 环境. +按照这里的引导完成 GCP 账号设置, 创建 GCP 项目, 创建 App Engine 项目, 开通付费功能(必须), 安装 git 与 gcloud 工具. 并完成 gcloud 工具的初始化, 初始化具体方式[请查看这个链接](https://cloud.google.com/sdk/gcloud/?hl=zh-CN). 如果你不打算在本地调试本项目, 可以不安装 Node.js 环境 -请注意, GAE 免费用量不支持 Flexible Environment, 部署至 Flexible Environment 前请确认收费标准. +请注意, GAE 免费用量不支持 Flexible Environment, 部署至 Flexible Environment 前请确认收费标准 -Node.JS 的 standard environment 仍在测试中, 您可能会在部署或使用中遇到某些不可预期的问题. +Node.JS 的 standard environment 仍在测试中, 您可能会在部署或使用中遇到某些不可预期的问题 -### 拉取 - -运行 `git clone https://github.com/DIYgod/RSSHub.git` 拉取本项目的最新版本. +运行 `git clone https://github.com/DIYgod/RSSHub.git` 拉取本项目的最新版本 ### app.yaml 配置 @@ -237,7 +252,7 @@ env_variables: # [END app_yaml] ``` -### 开始部署 +### 安装 在 RSSHub 项目根目录下运行 @@ -245,21 +260,21 @@ env_variables: gcloud app deploy ``` -进行项目部署, 如果您需要变更 app.yaml 文件名称或者变更部署的项目 ID 或者指定版本号等, 请参考[这个链接](https://cloud.google.com/appengine/docs/flexible/nodejs/testing-and-deploying-your-app)的"Deploying a service" 部分. +进行项目部署, 如果您需要变更 app.yaml 文件名称或者变更部署的项目 ID 或者指定版本号等, 请参考[这个链接](https://cloud.google.com/appengine/docs/flexible/nodejs/testing-and-deploying-your-app)的"Deploying a service" 部分 -部署完成后可访问您的 Google App Engine URL 查看部署情况. +部署完成后可访问您的 Google App Engine URL 查看部署情况 -### 部署至 arm32v7 设备(树莓派) +## 部署到 arm32v7 设备(树莓派) -#### 直接拉取镜像 +### 使用现成镜像 -运行下面的命令下载 rsshub:arm32v7 镜像. (暂时还没有自动构建,更新缓慢) +运行下面的命令下载 rsshub:arm32v7 镜像(镜像更新可能会有较长延迟) ``` docker pull pjf1996/rsshub:arm32v7 ``` -#### 自己构建 +### 自行构建镜像 首先下载 `RSSHub` 源码 @@ -274,20 +289,16 @@ $ cd RSSHub $ docker build -f ./Dockerfile.arm32v7 -t rsshub:arm32v7 . ``` -::: tip 提示 - -puppeteer 本身不会下载 chrome-arm,需要在 `lib/config.js` 中的 `puppeteerWSEndpoint`中设置相应的远程 Chrome Websocket 地址, 以启用相应路由. +puppeteer 本身不会下载 chrome-arm,需要在 `lib/config.js` 中的 `puppeteerWSEndpoint`中设置相应的远程 Chrome Websocket 地址, 以启用相应路由 TO DO: 暂时还没有找到合适的 `chrome websocket` arm32v7 镜像 -::: - 运行 RSSHub ```bash -# 直接拉取镜像方式 +# 使用现成镜像方式 $ docker run -d --name rsshub -p 1200:1200 pjf1996/rsshub:arm32v7 -# 自己构建镜像方式 +# 自行构建镜像方式 $ docker run -d --name rsshub -p 1200:1200 rsshub:arm32v7 ``` @@ -295,19 +306,11 @@ $ docker run -d --name rsshub -p 1200:1200 rsshub:arm32v7 ## 配置 -### 应用配置 +通过设置环境变量来配置 RSSHub -可以通过设置环境变量来配置 RSSHub. +### 缓存配置 -::: tip 提示 - -建议通过设置环境变量来配置 RSSHub. 避免版本更新时的冲突. - -::: - -`PORT`: 监听端口, 默认为 `1200` - -`SOCKET`: 监听 Unix Socket, 默认为 `null` +RSSHub 支持 `memory` 和 `redis` 两种缓存方式 `CACHE_TYPE`: 缓存类型, 可为 `memory` 和 `redis`, 设为空可以禁止缓存, 默认为 `memory` @@ -315,19 +318,13 @@ $ docker run -d --name rsshub -p 1200:1200 rsshub:arm32v7 `CACHE_CONTENT_EXPIRE`: 内容缓存过期时间,每次访问会重新计算过期时间,单位为秒, 默认 `1 * 60 * 60` -`LISTEN_INADDR_ANY`: 是否允许公网连接, 默认 `1` +`REDIS_URL`: Redis 连接地址(redis 缓存类型时有效), 默认为 `redis://localhost:6379/` -`TITLE_LENGTH_LIMIT`: 限制输出标题的字节长度, 一个英文字符的长度为 1 字节, 部分语言如中文, 日文, 韩文或阿拉伯文等, 统一算作 2 字节, 默认 `100` +`REDIS_PASSWORD`: Redis 连接密码(redis 缓存类型时有效) -`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 和日志文件的日志的最大[等级](https://github.com/winstonjs/winston#logging-levels),默认 `info` +部分路由反爬严格,可以配置使用代理抓取 `PROXY_PROTOCOL`: 使用代理, 支持 socks, http, https @@ -339,25 +336,49 @@ $ docker run -d --name rsshub -p 1200:1200 rsshub:arm32v7 `PROXY_URL_REGEX`: 启用代理的 URL 正则表达式,默认全部开启 `.*` -### 用户认证 +### 用户认证配置 -`protected_route.js` 内的路由将启用 HTTP Basic Authentication 认证. +`protected_route.js` 内的路由将启用 HTTP Basic Authentication 认证 -支持该认证协议的阅读器, 在添加源地址时, 需要在源地址前添加认证信息, 例如:http://usernam3:passw0rd@localhost:1200/protected/rsshub/rss. +支持该认证协议的阅读器, 在添加源地址时, 需要在源地址前添加认证信息, 例如:http://usernam3:passw0rd@127.0.0.1:1200/protected/rsshub/rss + +`HTTP_BASIC_AUTH_NAME`: Http basic authentication 用户名, 默认为 `usernam3`, 请务必修改 + +`HTTP_BASIC_AUTH_PASS`: Http basic authentication 密码, 默认为 `passw0rd`, 请务必修改 + +### 访问控制配置 + +配置黑名单和白名单, 支持 IP 和路由, 设置多项时用英文逗号 `,` 隔开, 同时设置黑名单和白名单时仅白名单有效 + +- `BLACKLIST`: 黑名单 + +- `WHITELIST`: 白名单, 设置白名单后黑名单无效 + +### 其他应用配置 + +`PORT`: 监听端口, 默认为 `1200` + +`SOCKET`: 监听 Unix Socket, 默认为 `null` + +`LISTEN_INADDR_ANY`: 是否允许公网连接, 默认 `1` + +`TITLE_LENGTH_LIMIT`: 限制输出标题的字节长度, 一个英文字符的长度为 1 字节, 部分语言如中文, 日文, 韩文或阿拉伯文等, 统一算作 2 字节, 默认 `100` + +`LOGGER_LEVEL`: 指明输出到 console 和日志文件的日志的最大[等级](https://github.com/winstonjs/winston#logging-levels),默认 `info` ### 部分 RSS 模块配置 -- `pixiv`: [注册地址](https://accounts.pixiv.net/signup) +- pixiv 全部路由: [注册地址](https://accounts.pixiv.net/signup) - `PIXIV_USERNAME`: Pixiv 用户名 - `PIXIV_PASSWORD`: Pixiv 密码 -- `disqus`: [申请地址](https://disqus.com/api/applications/) +- disqus 全部路由: [申请地址](https://disqus.com/api/applications/) - `DISQUS_API_KEY`: Disqus API -- `twitter`: [申请地址](https://apps.twitter.com) +- twitter 全部路由: [申请地址](https://apps.twitter.com) - `TWITTER_CONSUMER_KEY`: Twitter Consumer Key @@ -367,28 +388,18 @@ $ docker run -d --name rsshub -p 1200:1200 rsshub:arm32v7 - `TWITTER_ACCESS_TOKEN_SECRET`: Twitter Access Token Secret -- `youtube`: [申请地址](https://console.developers.google.com/) +- youtube 全部路由: [申请地址](https://console.developers.google.com/) - `YOUTUBE_KEY`: YouTube API Key -- `telegram`: [Telegram 机器人](https://telegram.org/blog/bot-revolution) +- telegram 全部路由: [Telegram 机器人](https://telegram.org/blog/bot-revolution) - `TELEGRAM_TOKEN`: Telegram 机器人 token -- `github`: [申请地址](https://github.com/settings/tokens) +- github 全部路由: [申请地址](https://github.com/settings/tokens) - `GITHUB_ACCESS_TOKEN`: GitHub Access Token -- `bilibili` +- bilibili 用户关注视频动态路由 - `BILIBILI_COOKIE_{uid}`: 对应 uid 的 b 站用户登录后的 Cookie 值,获取方式:1. 打开 2. 打开控制台 3. 切换到 Network 面板 4. 刷新 5. 点击 dynamic_new 请求 6. 找到 Cookie - -### 访问控制 - -可以通过修改 `middleware/access-control.js` 或者设置环境变量来配置黑名单和白名单. - -支持 IP 和路由, 设置多项时用英文逗号 `,` 隔开. 同时设置黑名单和白名单时仅白名单有效. - -- `BLACKLIST`: 黑名单 - -- `WHITELIST`: 白名单, 设置白名单后黑名单无效