【服务器能干什么】二十分钟搭建一个属于自己的 RSS 服务

如果大家不想自己捣鼓,只是想尝尝鲜,可以在下面留言,我后台帮大家开几个账号玩一玩。

哔哩哔哩【高清版本可以点击去吐槽到 B 站观看】:【VPS服务器到底能干啥】信息爆炸的年代,如何甄别出优质的内容?你可能需要自建一个RSS服务!_哔哩哔哩_bilibili

前言

RSS 服务

市面上有非常多的 RSS 聚合服务,来帮助我们统一管理、订阅、更新、筛选 RSS 源推送给我们的更新信息,避免我们被海量的文章淹没,也能保证我们多个设备上 RSS 的阅读进度一致。

Feedly、Inoreader 等等都是非常不错的 RSS 服务,但是它们的免费版本都有着一定的限制,有时候无法满足我们的全部功能需求,而动辄一个月数十刀的订阅费用又让人望而却步。

不过,GitHub 上有一个开源的 RSS 服务:Tiny Tiny RSS

可以满足我们 RSS 订阅的全部需求!

准备工作

  • 一台 VPS 服务器(以 CentOS 7 为例)
  • 安装好宝塔面板配置好 LNMP 宝塔安装教程点我

1、安装 docker

Docker 是非常优秀的虚拟化容器,借助于 Docker 我们可以方便的部署 Tiny Tiny RSS,首先我们在服务器上安装 Docker 本体。在服务器上面执行下面命令来安装 Docker:

BASH

curl -fsSL https://get.docker.com/ | sh

然后启动 Docker 服务:

BASH

sudo systemctl start docker

然后,我们检查一下 Docker 是否启动成功。我们执行命令 sudo systemctl status docker:

启动成功

设置 docker 自动启动:

BASH

sudo systemctl enable docker

2、安装 docker-compose

接下来我们安装 docker-compose:一个管理和启动多个 Docker 容器的工具。

由于 Tiny Tiny RSS 依赖有 PostgreSQL 的数据库服务以及 mercury_fulltext 的全文抓取服务等等,这些服务我们都借助于 Docker 部署,因此利用 docker-compose 就会大大降低我们的部署难度。

我们继续,在服务器上面执行下面的命令来安装 docker-compose:

BASH

sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

之后给予安装好的 docker-compose 可执行权限:

BASH

chmod +x /usr/local/bin/docker-compose

创建链接:

BASH

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

最后我们运行 docker-compose --version 来检查安装是否成功。如果有如下输出,说明我们的 docker-compose 安装成功:

安装成功

3、安装 Tiny Tiny RSS

准备工作已经全部完成,接下来我们下载由 Awesome-TTRSS 配置的 Tiny Tiny RSS 服务的 docker-compose 配置文件:

BASH

# 创建 ttrss 目录并进入
mkdir ttrss && cd ttrss# 利用 curl 下载 ttrss 的 docker-compose 配置文件至服务器
curl -fLo docker-compose.yml https://github.com/HenryQW/Awesome-TTRSS/raw/master/docker-compose.yml

注意利用 curl 下载 ttrss 的 docker-compose 配置文件至服务器可能会报错,大家可以直接在宝塔面板找到对应的文件夹下,然后新建 docker-compose.yml 文件,复制下面的内容进去:

YML

version: "3"
services:service.rss:image: wangqiru/ttrss:latestcontainer_name: ttrssports:- 181:80environment:- SELF_URL_PATH=http://localhost:181/ # please change to your own domain- DB_PASS=ttrss # use the same password defined in `database.postgres`- PUID=1000- PGID=1000volumes:- feed-icons:/var/www/feed-icons/networks:- public_access- service_only- database_onlystdin_open: truetty: truerestart: alwaysservice.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting pageimage: wangqiru/mercury-parser-api:latestcontainer_name: mercurynetworks

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二年级 最少需要几个刻度?

娃二年级题目:请你设计一把尺子,用这把尺子一次能画出 1~8厘米八条不同长度的线段。最少需要几个刻度? 答:最少需要 5 个刻度; 方案有: 0, 1, 2, 5, 8 0, 1, 3, 7, 8 0, 1, 4, 6, 8 0, 1, 5, 6, 8 0, 1, 5…

post请求参数全大写后台接不到参数

post请求参数全大写后台接不到参数 开发过程中,我们一般都习惯用驼峰命名法,但是特殊情况要求请求参数全大写(或者首字母大写),测试验证的时候发现,接收不到请求参数。 前端请求传递: 服务端接…

【nlp】3.6 Tansformer模型构建(编码器与解码器模块耦合)

Tansformer模型构建(编码器与解码器模块耦合) 1. 模型构建介绍2 编码器-解码器结构的代码实现3 Tansformer模型构建过程的代码实现4 小结1. 模型构建介绍 通过上面的小节, 我们已经完成了所有组成部分的实现, 接下来就来实现完整的编码器-解码器结构耦合. Transformer总体架…

burpsuite的大名早有耳闻,近日得见尊荣,倍感荣幸

问题: burpsuite中文乱码何解? burpsuite 与君初相识,犹如故人归。 burpsuite早有耳闻,近日得见真容,果然非同凡响。 Burp Suite is a comprehensive suite of tools for web application security testing. burp …

spark的算子

spark的算子 1.spark的单Value算子 Spark中的单Value算子是指对一个RDD中的每个元素进行操作,并返回一个新的RDD。下面详细介绍一些常用的单Value算子及其功能: map:逐条映射,将RDD中的每个元素通过指定的函数转换成另一个值&am…

JavaScript基础—运算符、表达式和语句、分支语句、循环语句、综合案例-ATM存取款机

版本说明 当前版本号[20231125]。 版本修改说明20231125初版 目录 文章目录 版本说明目录JavaScript 基础 - 第2天运算符算术运算符赋值运算符自增/自减运算符比较运算符逻辑运算符运算符优先级 语句表达式和语句分支语句if 分支语句if双分支语句if 多分支语句三元运算符&am…

Kotlin学习——kt里的集合List,Set,Map List集合的各种方法之Int篇

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

vue3(二)-基础入门

一、列表渲染 of 和 in 都是一样的效果 html代码&#xff1a; <div id"app"><ul><li v-for"item of datalist">{{ item }}</li></ul><ul><li v-for"item in dataobj">{{ item }}</li></u…

npm pnpm yarn(包管理器)的安装及镜像切换

安装Node.js 要安装npm&#xff0c;你需要先安装Node.js。 从Node.js官方网站&#xff08;https://nodejs.org&#xff09;下载并安装Node.js。 根据你的需要选择相应的版本。 一路Next&#xff0c;直到Finish 打开CMD&#xff0c;输入命令来检查Node.js和npm是否成功安装 nod…

Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/4)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

【WSA】无法打开 适用于 Android™ 的 Windows 子系统,因为它处于脱机状态。可能缺少存储设备,或者存储设备已断开连接。

问题描述 之前可以正常使用适用于 Android™ 的 Windows 子系统&#xff08;WSA&#xff09;&#xff0c;但突然间无法启动了。 当尝试启动WSA中的软件时&#xff0c;都会出现以下错误提示&#xff1a; 无法打开 适用于 Android™ 的 Windows 子系统&#xff0c;因为它处于脱…

chrome driver 截图和填表

昨天突然有一个需求&#xff08;自己的&#xff09;&#xff0c;想把某个网站题目主体部分翻译并保存成图片&#xff0c;开始时用了国内网站的翻译&#xff08;人工、简单翻译&#xff09;&#xff0c;后来发现很多地方翻译的不尽人意&#xff0c;于是只好用翻译插件对原始网站…

cjson库打包数据实现方法

使用 cJson 库&#xff0c;在C语言环境下&#xff0c;打包一个cJson字符串&#xff1a; int CreateArryJsonString(void) {cJSON *cJsonArr cJSON_CreateArray();cJSON *sJsonObj1 cJSON_CreateObject();cJSON_AddStringToObject(sJsonObj1, "test1", "test1…

动态规划学习——子序列问题

目录 ​编辑 一&#xff0c;最长定差子序列 1.题目 2&#xff0c;题目接口 3&#xff0c;解题思路及其代码 一&#xff0c;最长定差子序列 1.题目 给你一个整数数组 arr 和一个整数 difference&#xff0c;请你找出并返回 arr 中最长等差子序列的长度&#xff0c;该子序列…

机器学习【03】在本地浏览器使用远程服务器的Jupyter Notebook【conda环境】

1.激活虚拟环境 conda activate 虚拟环境名字2.虚拟环境下安装jupyter notebook pip install jupyter3.配置 jupyter 文件 在 Jupyter Notebook 的配置目录中生成一个配置文件 jupyter_notebook_config.py jupyter notebook --generate-config3.设置密码 jupyter notebook …

C/C++ 常用加密与解密算法

计算机安全和数据隐私是现代应用程序设计中至关重要的方面。为了确保数据的机密性和完整性&#xff0c;常常需要使用加密和解密算法。C是一种广泛使用的编程语言&#xff0c;提供了许多加密和解密算法的实现。本文将介绍一些在C中常用的加密与解密算法&#xff0c;这其中包括Xo…

操作NAND flash W25N01G

文章目录 W25N01G1 描述2 特点3 封装3.3.2 连接线 4 引脚/CSDO/WP/Hold SPI指令标准SPI命令双SPI四元SPI命令写保护 5 地址PA与PC最后一个扇区 OTP寄存器1块保护清除块保护指令* WP-E 寄存器2寄存器3BUSYP-FAILE-FAILECC位 8 命令8.1 装置ID 指令解读写状态寄存器 注意内容上拉…

企业编码生成程序Python毕业设计

&#xff08;1&#xff09;生成6位数字防伪编码。当用户在主程序界面中输入数字“1”菜单项时&#xff0c;将进入“生成6位数字防伪编码 &#xff08;213563型&#xff09;”的功能执行任务。此时要求输入生成防伪码的数量&#xff0c;可以根据需要输入生成防伪码的数量。按下&…

范围查询 range级别 继续优化思路

问题&#xff1a; 这几天工作遇到了一个问题。千万级别的表&#xff0c;每秒钟产生很多数据&#xff0c;select count(id) from table where flag 1 and create_time < 2023.11.07;分区表&#xff0c;range级别&#xff0c;已经是走create_time列上的索引&#xff0c;flag…