标签 docker 下的文章

我曾一度认为我不需要密码托管这种软件。

直到我发现我无论如何也想不起来北京摇号官网的登录密码了。

使用现成的第三方服务很好,但一来要注册,二来有些服务会收费。

那还不如自己部署一个。

其实可供自己部署的不算很多,我最终选择了bitwarden

Bitwarden 是一款开源密码管理器,它会将所有密码加密存储在服务器上,工作方式与 LastPass、1Password 或 Dashlane 相同。

官方的版本搭建对服务器要求很高,搭建不容易,github上有人用 Rust 实现了 Bitwarden 服务器,项目叫 bitwarden_rs,并且提供了 Docker 镜像,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。这个项目目前在github也有2k的star,所以说用的人还是有不少的。

此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。下面简单记录怎么搞。

一、基本组件

  1. 拉取镜像:docker pull bitwardenrs/server:latest
  2. 启动:docker run -d --name bitwarden -v /bw-data/:/data/ -p 6666:80 bitwardenrs/server:latest

    1. -v 定义一个保存数据的文件夹
    2. -p 定义一个监听端口

如果仿照上面的步骤,设定了6666端口的话,现在浏览器输入ip:6666可能有几种情况:

  • 访问成功
  • 弹出logo,但登陆界面不能加载
  • UNSAFE_PORT

这是因为项目要求https。所以要么申请一个证书,要么自签名一个证书。我则使用了另一个方法:套在cloudflare的解析上,依靠cf的证书实现。但这些都需要你拥有一个域名。

域名申请就不细说了,下面主要说说如何把域名和服务绑定上——反向代理。

二、域名绑定服务

  1. 我有宝塔,所以直接宝塔新建一个站点,域名自然是要绑定到这个服务的域名
  2. 建立后,在站点修改窗口,点击反向代理 - 添加反向代理

    1. 代理名称任意
    2. 目标URL写入http://127.0.0.1:6666(端口是之前开启docker时候配置的)
    3. 提交

Cloudflare端,将https相关的设置打开

  1. DNS标签下,做解析和开启缓存(箭头穿过小云彩而不是绕过)
  2. SSL/TLS - Overview标签下,加密模式选择Flexible
  3. SSL/TLS - Edge Certificates标签下,启用Always Use HTTPS

三、建立自己的用户

现在,访问域名,应该能正常显示了。按提示建立自己的用户即可。

四、关闭注册

如果并没有公开服务的打算的话。

  1. 停止容器:docker stop bitwarden
  2. 删除容器:docker rm bitwarden
  3. 启动容器,加入禁注册参数-e SIGNUPS_ALLOWED=false

五、使用

可以从浏览器通过域名来管理自己的账户。

密码自动填写、自动保存等通过软件实现:

  • PC中,Chrome有插件,可管理浏览器用户名密码
  • 安卓中,有APP,可全局监控(类似谷歌的密码管理)
  • iOS中,有APP,可用范围不知道

伴随着我服务器的切换,最近把Nextcloud云盘从服务器上头下线了。它确实很强大,但强大的同时也意味着臃肿。而我只需要这臃肿中的同步功能。而它的同步又是全量同步,且不好设置需要同步的文件夹,这就偏离了我自己的需要了。所以一句话,我只需要一个可以增量同步我指定的任意文件夹下的内容的工具。

曾经使用过坚果云。但是每月1G上载3G下载的流量限制让我最终放弃了它。

Dropbox,印象里很不错。但是用它还得翻墙,不值当的。

OneDrive,微软家的东西,很好用。但是速度实在是不稳定。

最终,还是在服务器上面搭建了一个同步工具——Syncthing

这是一个开源工具,据说类似于BTSync的开源实现(这个我并没有考证)。正好符合我的需求:简单、增量同步。不过说是“同步盘”,其实更像是两个朋友间“共享文件夹”。因为这个工具,无论是服务器上还是终端上,安装的都是相同的程序,只需事先添加对方到列表,即可开始文件夹的“共享”之旅。下面具体说说怎么搞。

不必纠结下面的步骤哪个是服务器的哪个是客户机的。因为步骤都一样。

一、服务器 & CentOS

我更倾向于用Docker安装。因为手工部署需要人工把服务文件复制到systemd中,如果更新的话还需要再操作一遍。对于服务器,使用其他方式安装还需要额外配置,就麻烦了。Docker方法如下:

  1. 拉取镜像。关于这个工具的镜像有很多,其中我更倾向于使用 linuxserver/syncthing。官方的有权限问题,可能是我的操作有误吧…docker pull linuxserver/syncthing
  2. 建立容器。使用命令

    docker create \
      --name=syncthing \    # 容器名称
      -e PUID=1000 \        # UserID
      -e PGID=1000 \        # GroupID
      -e TZ=Asia/Shanghai \    # 时区
      -e UMASK_SET=022 \    # 文件夹权限
      -p 8384:8384 \        # 对外端口映射 - GUI端口
      -p 22000:22000 \        # 对外端口映射 - 协议端口
      -p 21027:21027/udp \    # 对外端口映射 - 本地发现端口
      -v /path/to/appdata/config:/config \    #文件夹映射 - 程序文件
      -v /path/to/data1:/data1 \    # 文件夹映射(自定义数据文件夹)
      -v /path/to/data2:/data2 \    # 文件夹映射(自定义数据文件夹)
      --restart unless-stopped \    # 始终重启容器
      linuxserver/syncthing

    其中,参数nameTZ-p-v都可以根据自己的情况进行修改。对于这几个端口,保证本机相应的端口没有被占用且没有被防火墙限制即可。

  3. 启动容器docker start syncthing

    现在,你就可以打开ip:8384映射出来的端口号在图形化界面中设置了。其中,ip地址需要使用:

    • 本机,使用地址127.0.0.1
    • 服务器,使用地址服务器公网ip

二、Debian&Arch安装

源中已提供,直接安装对应的包即可。其中,服务器端和客户端都可使用包syncthing,客户端亦可以使用syncthing-gtk获取一个显示在托盘的同步状态标志及便捷的设置入口和服务起停入口。

  • Debian系

    apt install syncthing    # 安装
    systemctl enable syncthing    # 设置服务开机启动
    systemctl start syncthing    # 启动服务
    # 如果是客户机,可使用下面的命令代替上面的
    apt install syncthing-gtk
  • Arch系

    pacman -S syncthing    # 安装
    systemctl enable syncthing@你的用户名    # 设置服务开机启动
    systemctl start syncthing@你的用户名    # 启动服务
    # 如果是客户机,可使用下面的命令代替上面的
    pacman -S syncthing-gtk

对于本地机器,如果安装的包syncthing,则可打开127.0.0.1:8384进入图形化的设置界面;如果是syncthing-gtk,则找到程序syncthing-gtk,运行即可。

对于服务器,再进行下述操作:

  1. systemctl stop syncthing停止服务
  2. 找到syncthing文件夹,编辑config.xml,将<address>127.0.0.1:8384</address>修改为<address>0.0.0.0:8384</address>

三、GUI设置

1、服务器端

操作 - 设置,打开设置界面。

  • 常规:

    • 如果不是用Docker 安装的,那么请确保默认文件路径的合理性
  • 用户图形界面

    • 设置一个 图形管理界面用户名
    • 设置一个 图形管理界面密码
  • 连接

    • 保证勾选了启用NAT遍历
    • 保证勾选了全球发现

2、客户端

安装的syncthing,则点击操作 - 设置,打开设置界面。

  • 常规:

    • 如果不是用Docker 安装的,那么请确保默认文件路径的合理性

安装的syncthing-gtk,则打开窗口后点击右上齿轮 - 守护程序设置,打开设置界面。

  • 取消其中的全部勾选

四、开启同步之旅

  1. 服务器端的设置界面,点击操作 - 显示ID,复制弹出窗口中的字符串
  2. 本机中,选择添加设备,ID粘贴刚复制的字符串,地址填入服务器ip:22000(或者docker容器,22000映射的端口号),确定
  3. 等一会儿,服务器会弹出添加请求,通过
  4. 本机添加共享文件夹。在共享给设备中,勾选刚添加的服务器,确定
  5. 等一会儿,服务器会弹出建立共享文件夹请求,通过
  6. 共享已联通。同步正式开始了

视频点此

著名的github,私有库要收费,国内的码云倒是可以创建,但私有库所有协作人数总计不得超过 5 人,多多少少都有一些限制。搭建自己的git版本控制工具,保证私有库真的私有的同时,还能避免可能发生的网络环境问题。加之docker的辅助,3分钟,就能构建完毕。怎么做?

1、拉取镜像

docker pull gitlab/gitlab-ce

获取gitlab镜像。gitlab就是今天的主角。

2、创建文件夹

需要将容器的文件夹映射出来,保证镜像更新时候内容不会丢失。

cd /home #随便打开一个目录,用于新建文件夹
mkdir gitlab gitlab/config gitlab/log gitlab/data 新建文件夹,一会儿映射使用

3、执行

docker run -d -p 443:443 -p 2222:22 -p 8080:80 -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

跟以前用到docker的应用相比,这次的参数略多。但是万变不离其宗,主要还是使用端口映射和文件夹映射的参数。其中:

  • 443:443:容器ssl端口映射到服务器的443
  • 2222:22:容器的ssh端口映射到服务器的2222
  • 8080:80:容器的网页端口映射到服务器的8080
  • /home/gitlab/config:/etc/gitlab:容器的配置文件映射到服务器的/home/gitlab/config
  • /home/gitlab/log:/var/log/gitlab:容器的日志文件映射到服务器的/home/gitlab/log
  • /home/gitlab/data:/var/opt/gitlab:容器的数据文件映射到服务器的/home/gitlab/data

4、放开端口

因为安装过宝塔,所以需要将使用到的端口放行。像我这里就要放行8080、2222、443

其实在宝塔的应用里边可以一键安装gitlab。但毕竟宝塔不是所有人都装的,它的安装逻辑也更不清楚,所以相对来讲,还是docker的可控性更高一些,想删除的话,docker也可以删除的更彻底。

好了,现在输入服务器ip:8080即可访问搭建好的gitlab了。第一次登录会让设置一个密码,这个密码对应的是初始管理员密码。我们就可以通过账号root来登录管理了。

文章来源: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 也在去年圣诞节前夜跑路了,这也是它没有成为本文主角的原因。

由于个人有直播间在使用脚本推流,所以在进行脚本代码的变更时候,如果能现在本地进行一次测试就最好不过了。自己安装配置Nginx等确实可行,但是毕竟只是自己测试使用,大费周章的做一系列工作有点儿麻烦了,所以我最终选择了docker上编译好的rtmp环境直接使用。

一、安装Docker

Docker 官网上并没有提供关于 Deepin 的 Docker 安装教程,由于 Deepin 是基于 Debian 的,所以可以参照官网 Debian的安装教程安装,但 Deepin 在定制过程中进行了大量修改,所以使用官方教程可能会失败,所以需要先在 Deepin 下完成 Docker 的安装。

1、关于深度中的Docker

深度官方 Deepin 的应用仓库已经集成了docker,但不是类似于 docker-ce 这样的最新版本。要想使用最新版可以参考官网 debian 安装教程安装,不过由于深度 sid 版本开发,通过 $(lsb_release -cs) 获取的版本信息为 unstable,而 docker 官方源并没提供 sid 这种 unstable 版本的 docker,所以使用官方教程是安装不成功的。

2、前提—安装 docker-ce 和密钥管理以及下载相关的工具

使用命令

sudo apt-get install apt-transport-https ca-certificates curl python-software-properties software-properties-common

安装 curl命令、提供add-apt-repository工具的software-properties-common包 和密钥管理工具。

3、下载并安装秘钥

通过命令

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

安装。之后可以通过 sudo apt-key fingerprint 0EBFCD88 查看是否安装成功。若成功,会类似下面的信息:

pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) mailto:[email protected]
sub 4096R/F273FCD8 2017-02-22

4、添加docker官方仓库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian wheezy stable"

之后使用命令 sudo apt update 来更新系统

5、安装Docker

sudo apt-get install docker-ce

6、验证完成安装

现在,可以通过 systemctl start docker 来启动docker服务,并使用 docker version 来查看docker版本。若能返回版本信息,则安装已完成。

若启动启动服务时报错,可查看 docker.service 的 unit文件,路径为 /lib/systemd/system/docker.service,把 ExecStart=/usr/bin/dockerd -H fd:// 修改为ExecStart=/usr/bin/dockerd,即可以正常启动 docker 。

7、更改docker权限

因为安装过程都是超级用户身份,所以现在可以对权限进行更改,使普通用户可用。

#将当前用户添加到docker组
sudo gpasswd -a ${USER} docker

#修改docker.sock权限
sudo chmod a+rw /var/run/docker.sock

完成。现在可以通过 sudo docker run hello-world 来验证docker是否能正常使用。正常情况下,终端会显示Hello from Docker一系列欢迎界面。

8、使用国内加速源

编辑 /etc/docker/daemon.json 文件,并输入docker-cn 镜像源地址

sudo nano /etc/docker/daemon.json

输入以下内容:

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

保存。

最后,重启一下docker服务

sudo service docker restart

Docker安装完成,接下来可以安装rtmp环境了。

二、在Docker上获取RTMP环境

1、拉取容器

docker pull alfg/nginx-rtmp

待拉取完毕,RTMP环境便搭建好了。

2、启动RTMP环境并推流

通过命令

docker run -it -p 1935:1935 -p 8080:80 --rm alfg/nginx-rtmp

来运行RTMP环境。之后,便可通过OBS或ffmpeg来向其进行推流了。

推流地址配置如下。

对于OBS:

流类型: 自定义流媒体服务器
URL: rtmp://localhost:1935/stream
流名称: hello(这里可以自定义,只需在拉流时对应更换好即可)

对于ffmpeg,推流地址写成

rtmp://localhost:1935/stream/hello

即可。其中,hello同OBS,可以自定义。

3、通过vlc查看流

在地址处输入 http://localhost:8080/live/hello.m3u8 即可。注意hello更换成前边推流自定义的流名称。