标签 redhat 下的文章

视频点此

如果你看过了上次的视频,那么现在你的服务器应该已经被你赋予了运行网站的能力了。那么,我们怎样才能快速的搭建一个个人网站出来呢?今天着重来看看这个问题。

当然,你完全可以自己来写——只要你有时间来做这件事。但从零开始这东西,又难又麻烦,就不如利用现有的一些解决方案来实现对不对。那么,现如今都有哪些解决方案可以供你使用呢?

很多。所以我也不可能都介绍一遍。找一些非常容易上手的方案来介绍,我说着也省事你听着也明白,两全其美。

WordPress

一个非常知名的方案——WordPress。

这是一个可以算得上是全能型的解决方案了。它可以让你轻松搭建诸如论坛、网店、CMS等各种类型的网站——即使WordPress最初是以个人博客的身份出现的。

WordPress的用户规模很庞大,在百度上面以WordPress为关键词进行搜索,可以看到成千上万条相关的结果。此外,如果关注一下网站和大型博客的页脚——好像大型博客这词听着有点儿怪…但我也不知道怎么形容那种内容庞大、流量也大的信息发布平台——你会发现有不少都会留下一句:Powered by WordPress。可见WordPress这老大哥在业界的地位。

它为什么可以这么流行?首先,插件系统庞大,这使得管理员可以通过WP很方便搭建各种类型的网站;其次,部署方便。方便到什么程度,我们现在就来看一看。

在这之前,默认你是跟着我上次的视频,是个宝塔用户啊。毕竟我面向新手,图形化终归会更亲民一些。

  • 进入宝塔面板,选择网站—添加站点
  • 弹出窗口,这里有几个注意的地方

    • 想必你还没申请域名。所以在域名这里直接填入你服务器的IP地址即可
    • 根目录的文件夹名称是可以自定义的,可以随便修改
    • FTP可以不创建,毕竟有宝塔面板,用不到FTP来管理文件。不过对于文件夹操作,还是FTP更方便一些
    • 数据库选MySQL,版本应该只有一个,用户名密码设置好
    • PHP版本选择5.6,应该也只有一个
    • 提交,这时会告诉你一些用户名和密码,尤其记住数据库的各种信息
  • 现在在网站的根目录应该可以看到刚创建的文件夹了——不出意外,应该是/www/wwwroot/下面有一个文件夹,进入
  • 现在去往WordPress官网下载最新的WP,最好用tar.gz方便一会儿操作。另外为了避免下载再上传,可以复制下载链接,切换到刚刚的宝塔面板,点击远程下载,直接将文件下载到服务器上。当然如果没有宝塔也无所谓,终端命令下面的wget同样可以做到
  • 现在回到宝塔面板的首页,启动底部功能区的宝塔SSH终端,进行下述操作

    • cd命令切换到网站根目录
    • tar -xzvf 下载的文件名,将压缩包解压到网站根目录下
  • 好了,现在打开浏览器,输入ip,回车,WordPress的部署界面是不是出现了呢?根据提示填入,确定。一个新的WordPress站点出现了

这里可能看起来比较繁琐。主要是因为考虑到你可能用的是Windows系统。如果你也使用Linux,完全可以在文件管理器的地址栏输入sftp://ssh的用户@地址:端口号来挂载服务器磁盘,一切操作就好像在自己电脑上一样,简单明了。

有没有被Linux吸引到?

Typecho

使用WordPress,非常大的好处,就是如果有问题,百度可以很方便的找到解决方法。但正限于其功能强大插件繁多,以至于其在一些低配置的服务器上(VPS、树莓派等等)运行速度比较缓慢,从而使得网站的浏览体验变差。如果你没有很多的建站需求,仅仅是想搭建一个自己的博客,那么Typecho这个方法可能是更好的选择。

Typecho有一个最大的特点:开发进度异常缓慢——十多年了,刚刚到1.1版本(17年10月释放的最新版本)。但正是因为其开发慢,所以插件们不需要频繁的更新以兼容新版本,也使得功能的追加基本为0。所以到现在typecho仍然是一个完全专注于个人博客的一个系统。更简介的功能使得其在同等硬件配置条件下,其执行速度要优于WordPress,特别是在低配置的VPS上。

其部署过程与WordPress几乎相同,所以这里就不再说明了。


两者各有优劣。你要怎么选择呢?

我觉得上文我已经给出大概的答案了:如果你需要搭建很多种类型的网站,有很多的功能需求,那么使用WordPress绝对是最好的选择;反之,如果只是想做一个个人的博客,那么Typecho的轻量快速同样会让你眼前一亮。

但是,市面上的建站方案千千万,这里提到的这两个仅仅是动态站家族的两名成员,静态博客的方案一样很多。但是由于静态博客要求每次编写好一篇文章之后,需要手动执行生成网页的命令并上传到服务器,没有太多的精力来维护,或者初次接触个人博客的话,还是动态站来的更直接一些。

至于插件和主题,无论是WordPress还是Typecho都可以很方便的安装使用,这里自己探索一下就可以了。

建立一个个人博客是不是很简单呢?那么服务器还能干什么,我下次接着说。

视频点此

当你拥有一台服务器,你能拿它来干什么?在上个视频里边,我提到了一种使用方法,就是构建成RSS服务器。那么还有什么操作能让我们利用上这玩意儿吗?
今天,就接着上一次的主题来聊聊,服务器还能干什么。

要知道,互联网运行的本质就是用网线连接起来的电脑在进行数据的交换。你现在浏览我上传的内容,那么实际上就是我把我的内容上传到了这个公共的、谁都可以访问的电脑上,你又从这个电脑上拉取了我上传的东西。而为了简化获取和搜索的流程,建立在这台公共电脑上面的网站就成了必不可少的内容索引工具。

所以,我们怎么能忽略掉服务器最主要的一个职能——建站呢?

你可能会问:

我为什么要建站?

这有很多理由。

1、你可以记录人生

过去的人喜欢写日记,一本一本地记录自己的故事。后来人们有了博客,再后来有了自媒体平台。在时代和用户习惯不断变迁的过程中,日记本的市场占有率不断下降,而自媒体平台的入驻,也要承担平台关闭后数据遗失的风险。个人网站则很好地规避了这一点,并且能更好地保护好自己的数据和文章。

2、你可以拥有一个个人简历

我们将自己的个人网站定义为自己的个人简历,这一点也是国际上比较主流的做法。普通的简历,无论是word、PPT还是PDF甚至是H5,这些模式都不能非常完整地展示一个人的个人经历和工作案例,但是个人网站可以做到。

3、你可以建立自己的资料库

这个资料库不局限于文字知识,同样可以包括你收集的任何可能的文件。但它与网盘又有所不同。网盘需要从你本地的电脑获取文件,存到它的硬盘中,而使用你自己的服务器来保存数据,不仅仅可以从本地上传,还可以通过定时任务让服务器自己从设定好的位置来获取文件,我们只需要到时去下载即可,省去了人工值守的工作。

更多的的作用暂且不提了,在之后的服务器应用内容中自然而然就能体现出来了。

如何搭建呢?

首先就要让服务器拥有运行网站的能力。这个能力最基本的体现就是在其他电脑访问服务器时可以提供内容出来。

要知道,我的视频是给纯新手的——毕竟大佬用不着看我的视频对不对。所以要利用简单的东西来完成。这里我们就使用宝塔面板。当然,这样简化了很多步骤,但对应的,其他的一些东西比如安全性、执行性能什么的就不要强求了。

废话2小时干货5分钟。终于到了实战的时候了。我们来看看宝塔面板要怎么安装。

你有兴趣跟着我的视频来到这里就说明你的主机是不包含网站相关组件的。如果有,切记不可安装宝塔面板。

安装宝塔面板

  1. 首先通过ssh连接到你的服务器——Windows服务器请通过远程桌面访问
  2. 打开宝塔面板的官网
  3. 对于Windows服务器,直接把官网下载的压缩包传上去解压,然后安装就行了。但恕我贫穷,没钱买可以让Windows server流畅运行的VPS。所以我也没法演示了
  4. 对于Linux服务器,我们点击“立即安装”,拷贝跳转到的页面中安装的那个指令到ssh窗口中,回车等待完成,我们的宝塔面板就配置好了

不出差错的话,宝塔面板就安装完成了

注:

  • 在这个页面也同时包含一些其他的注意事项什么的,建议简单浏览一下。
  • Windows不清楚在哪儿,但是Linux版本的安装过程结束的时候会有一个信息,告诉了你登录宝塔面板的地址、用户名和密码分别是什么,一定要记录下来
  • 如果使用腾讯云等之类的VPS,请注意把宝塔的端口号放行(一般Windows宝塔端口号888,Linux是8888)

安装网站环境

  1. 透过刚刚提供的信息登录面板,会提示安装环境

2、选择lnmp,等待安装完成

3、安装过程中建议前往面板设置,修改一下登录面板的用户名和密码


仅复制了一条命令,其他全部图形化完成了网站环境的搭建,够不够傻瓜化了?

当然,通过宝塔安装这些组件也有一个弊端,就是lnmp这些套件都放在了宝塔自定义的位置了,如果遇到一些问题,网上的解决方案往往对应不上。但是,鱼和熊掌不可兼得,都让你这么简单的安装这些基础组建了,还要啥自行车。

在安装好这些基础组件,我们就可以建立自己的网站了。那么网站要用什么建立,我们下次的“当你有了”系列视频再说。

以CentOS7为例。

1. 安装Python相关工具以及shadowsocks

yum install m2crypto python-setuptools
easy_install pip
pip install shadowsocks
若不能成功安装m2crypto,请先用以下命令安装其依赖包:
yum install -y openssl-devel gcc swig python-devel autoconf libtool

2. 配置chacha20加密方法(可选)

chacha20 加密算法后可以提高密钥加密和解密速度,同时可以规避GFW利用OpenSSL特性进行特征包跟踪的问题
  1. 安装套件:yum groupinstall "Development Tools"
  2. 下载libsodium:wget https://github.com/jedisct1/libsodium/releases/download/1.0.11/libsodium-1.0.11.tar.gz
  3. 编译安装:tar xvf libsodium-1.0.11.tar.gz && cd libsodium-1.0.11 && ./configure && make && make install
  4. 更新动态库:ldconfig

3. 服务器配置

vi /etc/shadowsocks.json

其中,shadowsocks名称随意更改,下面用到这个名称的地方注意对应即可。

写入如下配置:

{
"server":"0.0.0.0",
"server_port":your server port,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"your password",
"timeout":600,
"method":"chacha20",# 若未进行第二步,此处推荐设置为`aes-256-cfb`
"fast_open": false
}

其中:

server_port处填写你想要的端口号,之后在客户端中需要填入

password处填写连接密码

method处可以更改加密方法,一般默认即可

如果有多用户,可以通过下面方法配置:

{
"server":"0.0.0.0",
"local_address": "127.0.0.1",
"local_port":1080,
"port_password": {
"port1": "password1",
"port2": "password2"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

如上,只需添加多个端口和密码即可。

4. 配置防火墙端口

没有安装防火墙建议安装一下,然后开启防火墙相应的端口。这里以开启443端口为例。

firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload

5. 配置Shadowsocks 服务自启动

使用rc.local完成即可。注意需要先通过命令 chmod +x /etc/rc.local 保证该脚本可执行。

之后在该文件结尾加入一行
ssserver -c /etc/shadowsocks.json -d start
保存即可。

直播推流是离不开ffmpeg组件的。尤其像我这种全天推电视剧的直播间。而我不可能一直在我的电脑上开着直播(这不现实),所以我需要一台最基本的服务器来维持它。而一般的服务器默认都是配置CentOS系统的。而且推流也不是什么需要保证稳定的东西,因此通过yum直接安装是最省时省力的。但是CentOS默认的源中没有该组件。因此需要自行进行一些配置才可以。

1、安装EPEL Release

因为安装需要使用其他的repo源,所以需要EPEL支持

yum install -y epel-release

如果出现缺少Code提示,可以:
sudo rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

安装完成之后,可以查看是否安装成功:

yum repolist

2、导入一个Code

这一步可能不成功(提示404找不到文件),但是根据我的测试来看,对之后好像没什么影响。

rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

3、安装nux-dextop 源

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

可以通过 yum repolist 查看repo源,看是否安装成功

4、安装ffmpeg

yum install -y ffmpeg

完成。可以通过 ffmpeg -version 检查版本信息。

得益于Linux较为缺陷的驱动程序们,Linux是比较费电的。这集中表现在电池的使用时间会明显短于Windows下面使用。但是借助一些电源管理软件,我们可以最大限度的提升Linux在电池情况下面使用的时长,甚至在相同工作量下面超过Windows。

比较好用的软件就是TLP。TLP提供优秀的Linux高级电源管理功能,不需要了解所有技术细节。默认配置已经对电池使用时间进行了优化,只要安装即可享受更长的使用时间。但如果想最大限度的优化电量损耗,还是需要自行进行配置。

在tlp更新到1.3后,配置文件结构有较大改动。下文会将新增/变更部分加粗表示,删除部分则直接加上删除线以区分。

一、相关软件包

一定需要安装的:tlp

无线设备控制:tlp-rdw

硬盘降速:smartmontools

CPU高级节能:x86_energy_perf_policy

网络唤醒更改:ethtool

对ThinkPad的电源优化:tp_smapi(充电阈值与电池校准)、acpi_call(Sandy Bridge及更新型号上面的充电阈值与电池校准)

二、服务调整

通过命令systemctl enable tlp(tlp-sleep服务已被移除)来启动TLP服务,并通过命令systemctl mask systemd-rfkill.servicesystemctl mask systemd-rfkill.socket来屏蔽systemd的rfkill服务及套接字以防止冲突,保证TLP无线设备的开关选项可以正确运行。

如果安装了tlp-rdw以便控制无线设备节能,则需通过systemctl enable NetworkManager-dispatcher启用此服务,并通过命令systemctl mask systemd-rfkill.servicesystemctl mask systemd-rfkill.socket来屏蔽systemd的rfkill服务及套接字以防止冲突,保证TLP无线设备的开关选项可以正确运行。

一般情况下都使用NetworkManager作为网络管理器。如果使用其他的,请编辑 /etc/systemd/system/multi-user.target.wants/tlp.service ,将 After=multi-user.target bluetooth.service NetworkManager.service 一行的 NetworkManager.service 去掉以避免错误。

现在,注销重新登录一下,默认配置的TLP就已经启动了。此时电脑消耗的电量应该比之前少了一些。但如果想要做到最大程度的节能,需要自行编辑一下TLP的配置文件。

三、配置文件的几个主要配置

用root权限的文本编辑器打开 /etc/default/tlp ,这是TLP的配置文件。

配置方式在1.3后变更较大。用户既可以修改/etc/tlp.conf,亦可以在/etc/tlp.d下以设置项=值的配置文件形式实现更改。该文件夹遵循下述规则:

  • 加载顺序受文件名最开始的数字影响,越大的数加载越晚,越能覆盖前面的设置
  • 00-template.conf为示例,用户自定义时亦需参考这个文件的命名方法和书写方式
  • 如果/etc/tlp.d下有些设置与/etc/tlp.conf冲突,则遵循tlp.d下的设置

推荐直接修改/etc/tlp.conf,因为这个文件的配置方法与以前的版本相同。下面的内容全部针对此文件。

每一项都是什么作用已经通过注释标记在这个文件中了。你可以根据自己的需要对相应的位置进行修改。但经过我自己的探索,给出几个自己最好改一改的位置。

1、TLP_DEFAULT_MODE

这一项记录了TLP启动时默认的模式。改成BAT可默认以电池供电方式启动,达到节省电量的目的。

2、TLP_PERSISTENT_DEFAULT

配合TLP_DEFAULT_MODE的修改,此处改成0以保证在连接电源线时电脑会以非节点模式运作以达到最高性能,而当改成电池供电,TLP自动将状态修改为节点模式以节约电量。

3、CPU_HWP_ON_AC和CPU_HWP_ON_BAT

使用Intel Skylake架构或更新的CPU并且Linux内核版本 >= 4.10可启用该配置。这两项分别对应通过电源连接和通过电池供电时候CPU的运作模式。可选performance, balance_performance, default, balance_power, power,依次为最高性能、优先考虑性能、默认、优先考虑节能、最大节能。

可以设置为CPU_HWP_ON_AC=balance_performance和CPU_HWP_ON_BAT=power可以保证电源供电时候偏好性能而电池供电时最大节能。

至于Skylake架构以前或Linux内核版本低于4.10时该配置失效,可忽略该项而将CPU_SCALING_GOVERNOR_ON_AC和CPU_SCALING_GOVERNOR_ON_BAT两项进行修改(如果有注释符则取消注释)。

对于酷睿i系列,可选项powersave和performance(推荐前者);其他型号可选项ondemand, powersave, performance, conservative, schedutil(推荐ondemand)

4、ENERGY_PERF_POLICY_ON_AC=performance和ENERGY_PERF_POLICY_ON_BAT=power

CPU相对节能策略。可选项performance, balance-performance, default, balance-power, power

5、DISK_DEVICES

该项关乎到之后的磁盘节能策略涉及到的磁盘。默认只有sda和sdb两块磁盘。如果你有更多的磁盘,请都加到引号内,通过空格分隔。磁盘label可以通过命令fdisk -l获得

如果此处修改了磁盘的数量,那么所有关于磁盘的设置项都需要对应的修改。如:

6、DISK_APM_LEVEL

这个设置意在调整硬盘在空闲时间节电,必要时候可以将低转速来实现。这里同样对应着AC和BAT。可以把AC设置成默认,即写为keep。注意,有几块磁盘写几个配置,中间通过空格分隔。如我有三块磁盘,DISK_DEVICES改为了"sda sdb sdc",则此处对应修改为"keep keep keep"

至于BAT一项,可以设置节电等级。其中1~127的节电等级可能会使硬盘降速,128~255则不会改变。因此对于SSD,设置128以上即可,HDD则可以设置成120左右的数字来兼顾唤醒延迟和降速节电。同样需要注意,在DISK_DEVICES写了几块硬盘,这里将要写几个参数。如我的三块硬盘,此处写成了"128 128 120"

7、SATA_LINKPWR

磁盘ALPM节电选项。同样对应着AC和BAT。

可选项min_power, med_power_with_dipm, medium_power, max_performance。其中,med_power_with_dipm需要4.15及以上版本的内核支持。

与6同理,有几块硬盘写几个配置,通过空格分开。如我的三块硬盘:

`SATA_LINKPWR_ON_AC="max_performance max_performance med_power_with_dipm"
SATA_LINKPWR_ON_BAT="min_power min_power min_power"`

8、RUNTIME_PM_BLACKLIST

如果使用bumblebee来控制英伟达显卡,那么把这一项的注释取消掉,然后在后面的引号中输入英伟达显卡的硬件地址以使Bumblebee控制GPU的电源。

获取硬件地址可以通过命令 lspci 来查看。一般情况下是 01:00.0

更多的设定还望自行阅读说明进行调整。如此设定之后,Linux在电池供电时,使用时间应该可以明显的提升了。

文章来源:https://sspai.com/post/41302

为什么要考虑自己搭建 RSS 服务

Google Reader 在 2013 年的下线似乎标志着 RSS 黄金时代的结束。在那之后,虽然陆续出现过很多替代品,但 RSS 的地位已经被无限刷新的信息流、算法推荐等新技术逐渐取代了。

不过,尽管小众,RSS 仍然是不少极客用户获取信息的首选。的确,如果对信息来源要求苛刻且善加维护,RSS 仍然是高效获取信息的不二选择。当然,为了充分发挥 RSS 的优势,一个好用的 RSS 服务也是很重要的。但是,「好」的标准又是什么呢?

在多年日常将 RSS 作为主要信息来源之一、并尝试了多种主流的 RSS 服务之后,我认为一个合格的 RSS 服务应当满足下列要求:

  • 同步及时;
  • 订阅源管理便捷、支持导入/导出;
  • 设计简洁、适合阅读、可定制;
  • 客户端支持全面;
  • 可自定过滤规则。

对于上述需求中的前几项,目前常见的 RSS 服务各有侧重。例如,最常见的 Feedly 在界面美观程度上较为突出,而 Inoreader 则在订阅源的管理上功能更为全面等,但并不存在一个全能选手。而至于最后一项需求,即自定规则对文章进行过滤,这些主流服务就显得特别「吝啬」了,要么不提供这样的功能,要么作为收费服务额外提供。

这当然可以理解:过滤功能需要占用额外的计算资源,这对原本就属小众的 RSS 服务来说是一笔不小的额外开销。但即便如此,仅仅为了实现这样一个并不算复杂的需求,而每月花数美元的价格(Inoreader 高级版年费为 30 美元),未免让人感到有些不值得。

相比之下,虚拟服务器如今已经卖到了白菜价。国外主流的平价主机商在竞争压力下,纷纷推出了低至 5 美元甚至 2.5 美元月付的计划;而国内的互联网大厂则在「云计算」的热潮中,竞相对自家的「云主机」进行优惠促销,其中面向学生的优惠往往可低至 10 元。这就在价格上追平甚至优惠于上述 RSS 服务的定价。

更何况,一台服务器运行的是完整的 Linux 操作系统,其功能用途远不止于搭建 RSS 服务一项,在类似的价格下,性价比可谓完胜;对于注重隐私的用户来说,自建服务附带地带来的安全性也是附加值之一。可见,用订阅 RSS 高级服务的费用投资一台虚拟服务器并自己实现类似功能是非常可行的选择——这正是我们今天的主题。

(关于主机服务商的选择,本文无意讨论,网络上有很多评测信息可供参考,请根据自己的需求和网络环境选择。主机的内存最好在 512 MB 以上,且必须采用 KVM 架构。如果你订阅的国外 RSS 源偏多,请注意国内主机的网络可能不能胜任。

为什么选择 Docker 下的 Tiny Tiny RSS

如果要为了实现 RSS 功能而自己从头造一个轮子,那必然是一个不现实也不经济的选择。事实上,开源社区已经为我们提供了许多现成的解决方案,只要选择一个并将其安装到主机上,即可快速搭建起自己的 RSS 服务。目前,比较完善、处于活跃开发状态的开源方案当属 Tiny Tiny RSS,它基本满足了前面提到的各项鉴别标准,后文也将以其为例演示。

关于安装方式,固然可以选择像对待普通 Linux 软件那样直接安装,官方对此也提供了较为详细的文档,但本文更推荐使用镜像方式安装 Tiny Tiny RSS。

如果你还不了解 Docker,可以简单将其理解为一种模块化的安装方式:它既具有虚拟机方式安装软件的一些长处,如对安装和卸载对宿主系统影响小、软件之间相对隔离、安全性佳等,又保留了普通方式安装软件的优点,如资源消耗较小、软件间通信较为方便等。因此,Docker 方式安装是软件「尝鲜」相当合适的选择。另外,如果你是 iOS 用户,更有 HyperApp 这样便捷的可视化工具辅助 Docker 环境的配置和管理。

1. 安装

用 Docker 方式安装 Tiny Tiny RSS 需要的软件条件是:

  • Docker CE:用于提供 Docker 运行环境。
  • PostgreSQL/MySQL 数据库:用于存储 RSS 服务运行所需的记录。Tiny Tiny RSS 的作者推荐优先选用 PostgreSQL,以获得更好的性能。
  • Tiny Tiny RSS 本身

需要指出的是,Linux 下安装软件的途径是相当灵活的,在软件源、发行版本、使用命令乃至前后顺序上都有不同程度自由裁量的空间。因此,下面的安装步骤仅为示例,目的是用最少的步骤实现安装,并假定读者和笔者一样,理解浅显的 Linux 命令含义、但并不熟悉复杂或具体的技术细节。

首先,SSH 到你的主机,安装 Docker 环境:

curl https://get.docker.io/ | sh

如果你的主机位于国内,则使用上述脚本安装 Docker 可能较慢。为此,可以换用 DaoCloud 提供的、换用了国内镜像的安装脚本:

curl -sSL https://get.daocloud.io/docker | sh

之后,安装一个 PostgreSQL 的 Docker 镜像:

docker run -d --name ttrssdb nornagon/postgres

(请注意上述 PostgreSQL 镜像并非官方提供,在此选用的原因是其预先配置好了可以直接配合下述 Tiny Tiny RSS 镜像使用的数据库环境,无须进一步设置。)

最后,安装 Tiny Tiny RSS 本身的 Docker 镜像:
:
docker run -d --link ttrssdb:db -p 80:80 -e SELF_URL_PATH=http://example.org/ttrss fischerman/docker-ttrss

上述命令中的一些关键部分:

  • -p 80:80 : 该参数表明,将该容器内应用的 80 端口(冒号后)映射到主机的 80 端口(冒号前)上。如果你的主机还需运行其他 80 端口的服务(如博客建站),则应将冒号前的值改为一个未被占用的端口。例如, -p 8080:80 将启用主机的 8080 端口。
  • -e SELF_URL_PATH=http://example.org/ttrss  :该参数表明,该 Tiny Tiny RSS 应用将可从 http://example.org/ttrss 访问。如果你在上一步保持了默认的端口设置,则直接将上述网址换为你主机的 IP 地址(或解析至该主机的域名)即可,否则,应在地址之后进一步表明使用的端口,如: http://xxx.xxx.xxx.xxx:8080

2. 基本使用

2.1 初次配置

安装完成后,访问在上述步骤中设置的网址,即可进入 Tiny Tiny RSS 的 Web 界面。系统默认的管理员账号是 admin ,密码是 password

登录后,首先点击 右上角的 Actions…>Preferences… 进入设置页面,进行一些基本配置。

  • ersonal data / Authentication 板块:登录后应立即在此设置新密码
  • Preference 板块:

    • Default feed update interval:设置刷新订阅源的时间间隔,应根据自己查看 RSS 的频率和服务器的性能合理安排。考虑到 RSS 一般无须即时性,一般最短 30 分钟的间隔足矣。
    • Enable API access:提供第三方 RSS 客户端支持,务必勾选
    • Language:语言设置,其中包括简体中文,但翻译质量和完成度均不佳,故本文仍以英文界面为准。
    • Purge articles after this number of days:在指定日期后清除缓存的文章。考虑到目前主流主机服务均以小容量 SSD 存储为主,应合理设置此处期间,以避免占用过多空间,如 30 日。
    • Time zone:设置时区,国内一般设为Asia/Shanghai即可。
    • Combined feed display:设置阅读界面布局。默认为两栏式,点击文章列表中的标题后,全文将在标题下展开。如习惯 Reeder 一类传统 RSS 客户端的三栏式布局,取消该项勾选。

完成后,点击页面底部的Save configuration保存配置。

2.2 导入、添加和管理订阅

如果你之前使用过其他 RSS 服务,那么直接将订阅源导入即可。方法是:在之前的 RSS 服务后台找到导出为 XML/OPML 的选项,然后在 Tiny Tiny RSS 中进入设置的Feeds标签页下的OPML板块,选择相应文件导入即可。原有的文件夹结构会被保留。

导入后,可在Feeds标签页管理订阅源。Tiny Tiny RSS 提供的管理选项非常详尽,并可以通过拖动来实现排序、分类操作。点击某个订阅源,可以打开更详尽的设置选项。其中比较实用的功能包括自定义订阅源名称、更新频率等。

此外,Tiny Tiny RSS 还提供了一些用于辨识订阅源「健康度」的实用功能。如果有某些订阅源无法连接或长期不更新,那么订阅页面中会分别多出Feed with errorsInactive feeds的选项,点击即可查看这些订阅源的出错记录或最后更新时间,并直接批量退订。

2.3 文章过滤

如前所述,强大的过滤功能是促使笔者转投 Tiny Tiny RSS 的首要动力,也是高效处理大量 RSS 订阅源的重要工具之一。Tiny Tiny RSS 的过滤功能分为匹配动作两个环节,即先根据一定的规则筛出特定文章,然后自动对其实行某种处理。前后两个环节都是可以高度自定义的。

在设置页面中,点击Filters标签即可进入过滤设置。首先通过Create filter按钮新建一个过滤器。弹出的窗口中,Caption部分用于指定规则的名称,Match部分用于设置匹配规则,而Apply actions部分则指对被匹配的文章应采取何种操作。

点击Match部分的Add按钮即可添加匹配规则。你可以指定匹配标题、全文还是两者均匹配,每个匹配规则适用于哪些订阅源。匹配规则支持正则表达式,例如,如果想过滤英文科技博客中常见的赞助广告,那么可以在过滤规则中填入 (S|s)opnsor 这样含有「sponsor」或「Sponsor」的结果都会被匹配。同一个过滤器中可以容纳多个匹配规则,多个规则间默认是相「与」的关系,如果想改为「或」的关系,则须勾选窗口下方的Match any rule

对于被筛出的文章,可以选择的操作很多,如标为已读、完全忽略、打上星标等等,并且可以同时适用多个操作。一个比较有趣的操作是Publish article,它会将文章发布到一个 RSS 源中(该 RSS 地址可在Feeds选项卡的Published & shared articles区域看到)。进而,结合 IFTTT、即刻等支持检测特定 RSS 源更新的服务,就可实现特定主题实时推送、自动发送到稍后读等高级功能。

不过,过滤功能是比较消耗资源的,如果设置过多的过滤条件,可能给你的主机带来较大压力,因此不应滥用该功能。换个角度来说,当你发现自己将精力不成比例地花在过滤功能上、而非静心阅读文章上时,最应该做的应该不是继续调试过滤、而是清理订阅源。

3. 用插件添加主题、全文输出和多客户端支持

3.1 安装主题

前面提到,RSS 服务质量的衡量尺度之一即是界面的设计水平。在这方面,Tiny Tiny RSS 只能说是基本合格:其界面虽然功能全面、且总体上可称之为简洁明了,但细看还是给人一种开源软件常有的「未经打磨」之感。好在 Tiny Tiny RSS 的界面完全基于 CSS,可自行定制或导入主题,这就为「美容」提供了可能。

Tiny Tiny RSS 用户社区产生的主题并不多,但也有不乏几个完成度较高的,如仿 Feedly 和仿 Google Reader 的两个主题。下面以前者为例演示如何安装。

首先获取主题文件:

wget https://github.com/levito/tt-rss-feedly-theme/archive/master.zip

然后解压缩该主题[1]:

unzip master.zip

由于我们的 Tiny Tiny RSS 运行在相对隔离的 Docker 环境中,因此不能像平时那样直接用 cp 命令拷贝文件。为此,首先执行:

docker ps

终端将返回当前运行的 Docker 容器列表。我们找到 IMAGE 一列为「fischerman/docker-ttrss」的那行记录,记下同行中 CONTAINER ID 列下的内容。

然后,用docker cp命令将上述主题文件拷贝到容器中:

docker cp tt-rss-feedly-theme-master/feedly.css [[CONTAINER ID]]:/var/www/themes
docker cp tt-rss-feedly-theme-master/feedly [[CONTAINER ID]]:/var/www/themes

请注意将上面命令中的[[CONTAINER ID]]替换为你在上一步中获得的内容。

这时,我们就可以在 Preference 页面的 Theme 选项中看到feedly.css了。

3.2 配置 RSS 全文输出

很多网站之所以不欢迎 RSS,一个主要的原因就是提供 RSS 会分走主站的流量;因此,一些网站即便保留了 RSS 订阅源,也做得十分「不情不愿」,只「抠门」地给出前两三段的内容,要看全文还得跳转到网站才行。这显然会破坏 RSS 的阅读体验。于是,获取全文的功能就显得十分必要了;很多 RSS 服务或客户端也将其作为 Premium 订阅的卖点之一。不过,通过 Tiny Tiny RSS,我们同样可以免费实现这一效果。

事实上,Tiny Tiny RSS 原本已经内置了基于 Readability 的全文输出服务,但可惜这家服务在前段时间已经跑路,关闭了 API 接口,我们只能另请高明。目前,比较好的替代方案是 Mercury,这也是 Reeder、Unread 等主流 RSS 阅读器在近期更新中改用的方案。

首先,Mercury 的全文输出服务是免费的,但需要配合 API 密钥使用,这可以在注册后在其网站的 Web Parser 页面看到。

接着,为 Tiny Tiny RSS 安装全文输出插件,其方法与安装主题完全相同[2]:

git clone https://github.com/WangQiru/mercury_fulltext.git
docker cp mercury_fulltext [[CONTAINER ID]]:/var/www/plugins

安装后,到 Tiny Tiny RSS 的设置页面中启用名为fulltext的插件。这时,在设置页面的Feeds选项卡下,就会多出一个该插件的设置区域。我们将之前获得的 Mercury API 密钥填入文本框中,并点击Save保存配置。

完成上述准备工作后,就可以针对特定的订阅源启用全文输出了。方法是:在订阅源管理中,点击需要获取全文的订阅源,在弹出的Edit Feed对话框中,勾选Plugins选项卡中的Get fulltext via Mercury Parser

3.3 让更多客户端支持 Tiny Tiny RSS

在 RSS 的使用体验中,客户端是十分重要的一环;缺少第三方客户端支持的 RSS 服务注定只能是「孤家寡人」。然而,作为一个小众的开源软件,Tiny Tiny RSS 在这方面显然不能与那些商业服务相比。主流的客户端软件中,只有 Fiery Feed 提供了对 Tiny Tiny RSS 的原生支持。

好在开放的插件系统这时再次发挥了作用。借助第三方插件,Tiny Tiny RSS 可以将自己模拟为另一个自建 RSS 工具——Fever,而后者的客户端支持更为全面,包括 Reeder、Unread 等。[3]

git clonehttps://github.com/rannen/tinytinyrss-fever-plugin.git
docker cp fever [[CONTAINER ID]]:/var/www/plugins

安装后,在 Tiny Tiny RSS 的设置页面启用名为fever的插件。保存后,再次进入设置时,Preference选项卡下会多出一个名为Fever Emulation的板块。在该板块的文本框中,设置一个专用于该插件的密码,然后点击Save。该文本框下方同时给出了一个独立的服务器地址,其格式类似于http://rss.example.org/plugins/fever/。将其记下以备后用。

4. 总结

以上就是使用 Tiny Tiny RSS 自建 RSS 服务的全过程。可以看出,虽然听起来很 geeky,但实际操作比想象的简单很多,稍微熟悉后不到半个小时就可架起服务并使用。从我两个月的使用体验看,它基本已经完全代替了之前对 Feedly 和 Inoreader 的需求,且无论是灵活性还是性价比都是第三方服务无法比拟的。

当然,一旦涉及到这种 DIY 操作,总是要回应的质疑是:这么做值得吗?毕竟,「RSS 已死」不是什么新鲜论调了。这么说的人中,有的是 RSS 曾经的忠实用户,感慨曾经活跃的第三方软件和服务逐渐冷却;有的是新世代新闻、阅读服务的开发者,鄙弃 RSS 的老旧和刻板。

然而,RSS 说到底是一个协议。而协议只在一种情况下可以被宣告死亡:再也没有人使用的时候。诚然,如果只论 RSS 最「原教旨」的形态,其占有率确实几乎可以忽略不计了;但当下那些看起来更「现代」的资讯工具,尽管可以在界面、交互上不断翻新,但其本质仍然是一个时间线上的信息流,其中每篇内容包含的要素仍然是标题、时间、正文等 RSS 已经涵盖的要素。易言之,它们归根结底都是 RSS 的衍生物。从这个角度看,RSS 没有死、也不会死。

必须承认,新技术加持下的现代工具在配置和使用上都远比 RSS 来得便利和舒适。但,在获得便利的同时,你也将选择的权利让渡给了机器,将偏好和隐私让渡给了第三方;在追求舒适的另一面,是被无限信息流淹没的宝贵时间,和被算法推荐不断强化的「回音壁」效应。相反,RSS 是有限的,因此也是克制的;是刻板的,因此也是高效的;是不智能的,因此也是包容的。

在今天,坚持使用 RSS,能让你真正认真思考自己对信息的需求,在喧闹而充满误导和诱惑的信息海洋中守住自己对信息获取的控制权;而自建 RSS 服务,则是维护这种控制权的终极途径。


注:

  • 有的系统可能没有安装unzip命令,这时可先运行apt-get unzip安装该功能。
  • 要运行git命令,你的主机需要先安装git;如果运行时提示未安装,请使用apt-get git -all命令来安装。
  • 遗憾的是,Fever 也在去年圣诞节前夜跑路了,这也是它没有成为本文主角的原因。