Telegram RSS 订阅机器人 Flowerss 部署教程

Telegram RSS 订阅机器人 Flowerss 部署教程

简介

『 RSS 是个好东西,Telegram 也是个好东西 ,哪个男孩不想拥有一个自托管的 Telegram RSS 机器人呢?』,网上可以自部署的 Telegram RSS 订阅机器人有很多,而 Flowerss 除了常见的 RSS 订阅功能外,还支持通过 Telegraph 将抓取的 RSS 源的更新信息通过 Telegraph Token 转存进 Telegraph 并生成支持 Telegram 应用内即时预览(Instant View)的 🔗 链接

预览

特性:

  • 常见的 RSS Bot 该有的功能;
  • 支持 Telegram 应用内即时预览;
  • 支持为 Group 和 Channel 订阅 RSS 消息;
  • 丰富的订阅设置。

部署

作者文档就提供了多种部署方式的说明,博主 只尝试了 二进制部署Docker部署 两种方式,实际使用自己选择就好 🤕

Docker 部署

作者已经构建好 Docker 镜像在 Docker Hub,安装 Docker 步骤此处略过,SSH 登录 Linux 打开终端:

# 新建flowerss目录
$ mkdir ~/flowerss
# 下载配置文件
$ wget -O ~/flowerss/config.yml https://raw.githubusercontent.com/indes/flowerss-bot/master/config.yml.sample
# 编辑配置文件
$ vim ~/flowerss/config.yml
# 运行容器
$ docker run -d -v ~/flowerss:/root/.flowerss indes/flowerss-bot

也可以使用 docker-compose 部署,以 Debian 10.9 为例

# 安装最新版docker-compose,将1.29.2换成你需要的版本号
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 给予权限
$ sudo chmod +x /usr/local/bin/docker-compose
# 创建软链接
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 验证安装成功
$ docker-compose --version
# 类似输出如下:
[email protected]:~# docker-compose --version
docker-compose version 1.29.2, build 5becea4c

安装好 docker-compose 后,这是一个示例 compose.yml 模板

version: '3.5'

services: 
  flowerss:
    image: indes/flowerss-bot
    volumes: 
      - ./config:/root/.flowerss
    restart: unless-stopped
    environment: 
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    networks: 
      - default

完整 docker-compose 部署步骤

# 新建目录
$ cd /opt && mkdir flowerss
# 新建映射目录
$ cd flowerss && mkdir config
# 新建配置文件
$ cd config && touch config.yml 
# 编辑配置文件
$ vim config.yml
# 运行容器
$ docker-compose up -d

二进制部署

程序是使用 Golang 编译的,直接下载作者编译好的二进制程序

# 新建并进入程序目录
$ mkdir /opt/flowerss && cd $_
# 64位系统下载(本教程不保证一直更新,请实际使用时更改下面的release版本号(如 v0.8.3)为最新版本号)
$ curl -LJO https://github.com/indes/flowerss-bot/releases/download/v0.8.3/flowerss-bot-v0.8.3-linux-amd64.tar.gz
# 32位系统下载
$ curl -LJO https://github.com/indes/flowerss-bot/releases/download/v0.8.3/flowerss-bot-v0.8.3-linux-386.tar.gz
# 下面以64位为例,32位的修改下文件名跟32位Release包文件名一致即可
# 解压到项目目录
$ tar zxvf  flowerss-bot-v0.8.3-linux-amd64.tar.gz
# 删除Release包
$ rm flowerss-bot-v0.8.3-linux-amd64.tar.gz

此时 flowerss 程序目录应该像下面这样

.                              # 根目录
|——opt                         # 项目父文件夹
|   |——flowerss                # 项目目录
|         |——README.md         # 项目的README
|         |——config.yml.sample # 示例配置文件
|         |——flowerss-bot      # 程序的二进制文件

确认无误后继续

# 重命名示例配置文件为实际配置文件
$ mv config.yml.sample config.yml
# 修改配置文件,修改过程见后文
$ vim config.yml
# 给予权限
$ chmod +x flowerss-bot
# 运行flowerss(断开终端进程就会结束)
$ ./flowerss-bot
# 运行flowerss(断开终端进程仍然运行)
$ nohup ./flowerss-bot &

直接运行的话在服务器重启后进程就会结束,因此我们还需要配置下开机自启

# 编辑systemd配置文件 EOF结束
$ cat > /etc/systemd/system/flowerss.service <<EOF

[Unit]
Description=flowerss
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/var/run/flowerss.pid
WorkingDirectory=/root/opt/flowerss
ExecStart=/root/opt/flowerss/flowerss-bot
RestartPreventExitStatus=23
Restart=always

[Install]
WantedBy=multi-user.target
EOF

编辑好 flowerss 的 systemd 配置文件后

# 重载配置
$ systemctl daemon-reload
# 启动程序
$ systemctl start flowerss
# 开机自启
$ systemctl enable flowerss

源码编译部署

这个方式对我个人而言意义不大,所以 博主 并没试过,程序是用 Golang 写的,所以在编译开始前应该需要在服务器配置好 Golang 的环境

# 拉取项目仓库代码并进入目录
$ git clone https://github.com/indes/flowerss-bot && cd flowerss-bot
# 编译项目
$ make build
# 运行flowerss
$ ./flowerss-bot
# 后面的配置和二进制部署方式无异

配置

上面的三种方式对应的配置文件都是一样的 config.yml ,模板如下

bot_token: XXX
#多个telegraph_token可采用数组格式:
# telegraph_token:
#  - token_1
#  - token_2
telegraph_token: xxxx
user_agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
preview_text: 0
disable_web_page_preview: false
socks5: 127.0.0.1:1080
update_interval: 10
error_threshold: 100
telegram:
  endpoint: https://xxx.com/
mysql:
  host: 127.0.0.1
  port: 3306
  user: user
  password: pwd
  database: flowerss
sqlite:
  path: ./data.db
allowed_users:
  - 123
  - 234

配置项说明

配置文件各字段说明

字段说明
bot_tokenTelegram Bot Token必填
telegraph_tokenTelegraph Token, 用于转存原文到 Telegraph可忽略(不转存原文到 Telegraph )
preview_text纯文字预览字数(不借助Telegraph)可忽略(默认0, 0为禁用)
user_agentUser Agent可忽略
disable_web_page_preview是否禁用 web 页面预览可忽略(默认 false, true 为禁用)
update_intervalRSS 源扫描间隔(分钟)可忽略(默认 10)
error_threshold源最大出错次数可忽略(默认 100)
socks5用于无法正常 Telegram API 的环境可忽略(能正常连接上 Telegram API 服务器)
mysqlMySQL 数据库配置可忽略(使用 SQLite )
sqliteSQLite 配置可忽略(已配置mysql时,该项失效)
telegram.endpoint自定义telegram bot api url可忽略(使用默认api url)
allowed_users允许使用bot的用户telegram id,可忽略,为空时所有用户都能使用bot

获取 Bot Token

Telegram 全局搜索 BotFather 点击 start 开始,发送命令 /newbot 申请一个 Telegram 机器人

根据提示给 Bot 取一个用户名和昵称,结束后会获得一个 Telegram Bot Token ,即:Use this token to access the HTTP API: 后面一行的内容,记录下来填入配置文件

获取 Telegraph Token

Telegram 应用内预览需要 Telegraph API,因此我们还需要申请一个 Telegraph Token,在终端执行命令

$ curl https://api.telegra.ph/createAccount?short_name=${bot_name}&author_name=${bot_author_name}&author_url=${bot_author_url}
  • ${bot_name}:Telegram Bot 用户名
  • ${bot_author_name}:作者名称( 显示在即时预览里 )
  • ${bot_author_url}:作者链接( 显示在即时预览里 )

将其中一些变量改成自己想要的,比如:

$ curl https://api.telegra.ph/createAccount?short_name=Dejavu_RSS&author_name=Dejavu&author_url=https://www.dejavu.moe

成功的话会返回一个 json 字符串,记录下来保留备用

Telegram ID

默认的配置允许所有人使用我们创建的 Telegram Bot,为了安全、防止滥用建议设置指定用户才有权使用该 Bot,获取管理员用户的 Telegram ID 并填入配置文件的 allowed_users 字段:

Telegram 全局搜索 getmyid_bot 发送命令 /start 即可获取 Telegram ID 了,填入配置文件中即可

使用

😄 照搬 作者文档 如下:

个人使用

/sub [url] 订阅(url 为可选)
/unsub [url] 取消订阅(url 为可选)
/list 查看当前订阅
/set 设置订阅
/check 检查当前订阅
/setfeedtag [sub id] [tag1] [tag2] 设置订阅标签(最多设置三个Tag,以空格分隔)
/setinterval [interval] [sub id] 设置订阅刷新频率(可设置多个sub id,以空格分隔)
/activeall 开启所有订阅
/pauseall 暂停所有订阅
/import 导入 OPML 文件
/export 导出 OPML 文件
/unsuball 取消所有订阅
/help 帮助

群组/频道使用

/sub @ChannelID [url] 订阅
/unsub @ChannelID [url] 取消订阅
/list @ChannelID 查看当前订阅
/check @ChannelID 检查当前订阅
/unsuball @ChannelID 取消所有订阅
/activeall @ChannelID 开启所有订阅
/setfeedtag @ChannelID [sub id] [tag1] [tag2]  设置订阅标签(最多设置三个Tag,以空格分隔)
/import 导入 OPML 文件
/export @ChannelID 导出 OPML 文件
/pauseall @ChannelID 暂停所有订阅

ChannelID 只有设置为 Public Channel 才有。如果是 Private Channel,可以暂时设置为 Public,订阅完成后改为 Private,不影响 Bot 推送消息

例如要给 t.me/debug 频道订阅 阮一峰的网络日志 RSS 更新:

  1. 将 Bot 添加到 debug 频道管理员列表中
  2. 给 Bot 发送 /sub @debug http://www.ruanyifeng.com/blog/atom.xml 命令

好用的话记得给 项目 一个哦~

Telegram RSS 订阅机器人 Flowerss 部署教程

https://www.dejavu.moe/posts/telegram-flowerss/

作者

Dejavu

发布于

2020-12-20

更新于

2021-06-21

许可协议

评论