CommaFeed:仿Google Readerd的RSS阅读器

news2024/12/28 18:56:27

在这里插入图片描述

最近老苏身边中招的人也开始多起来了,大家要保重~

本文开始于 9 月下旬,完成于 10 月下旬,目前正式版本还是老苏打包时用的 2.6.0,不过现在已经有了 3.0.0 RC1

什么是 CommaFeed ?

CommaFeed 是受 Google Reader 启发而开发的自托管 RSS 阅读器,基于 DropwizardAngularJSCommaFeed 现在被认为是功能完整的并且处于维护模式。

CommaFeed 已经有些年头了,但老苏没找到官方的镜像,本着学习(折腾)的目的,打算自己动手构建着玩。一开始是准备基于源码构建的,但是没成功,所以退而求其次,改为基于官方发布的 jar 包进行构建

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

v1 版还整了多阶段构建,实际上也就节省了 wget 的空间

FROM openjdk:8-jdk as build
LABEL maintainer=laosu<wbsu2003@gmail.com>

RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && apt-get clean \
    && apt-get update \
    && apt-get install -y wget    

RUN wget https://ghproxy.com/github.com/Athou/commafeed/releases/download/2.6.0/commafeed.jar
RUN wget https://ghproxy.com/raw.githubusercontent.com/Athou/commafeed/2.6.0/config.yml.example -O config.yml

FROM openjdk:8-jdk
LABEL maintainer=laosu<wbsu2003@gmail.com>

VOLUME /config

COPY --from=build commafeed.jar ./commafeed.jar
COPY --from=build config.yml ./config/config.yml

EXPOSE 8082

CMD [ "java", "-Djava.net.preferIPv4Stack=true", "-jar", "commafeed.jar", "server", "/config/config.yml" ]

但是这个版本需要我们自己下载 config.yml,并将 config.yml 放入到映射的卷中,否则容器启动时检测不到该文件会导致启动失败

所以就有了我们现在的 v2Dockerfile

FROM openjdk:8-jdk as build    
LABEL maintainer=laosu<wbsu2003@gmail.com>    
  
# 设置国内源   
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \    
    && apt-get clean \    
    && apt-get update \    
    && apt-get install -y wget        
  
# 下载 2.6.0 的代码和配置文件  
RUN wget https://ghproxy.com/github.com/Athou/commafeed/releases/download/2.6.0/commafeed.jar    
RUN wget https://ghproxy.com/raw.githubusercontent.com/Athou/commafeed/2.6.0/config.yml.example -O config.yml    

# 基本设置  
EXPOSE 8082   
VOLUME /config    
   
## 运行前会检查 config 目录 ;
CMD \  
  if [ -f "/config/config.yml" ]; then \  
    echo "***** config 目录已存在设置文件, 跳过 *****" ; \  
  else \  
    echo "***** config 目录不存在或为空, 复制设置文件 *****" && \  
    cp config.yml ./config/config.yml ; \  
  fi; \  
  java -Djava.net.preferIPv4Stack=true -jar commafeed.jar server /config/config.yml

这个版本会在我们映射的卷中找到原始的 config.yml,修改之后只要重启容器就可以了

构建镜像和容器运行的基本命令如下👇

# 新建目录
mkdir commafeed
  
# 进入目录  
cd commafeed

# 将 Dockerfile 放入当前目录
  
# 构建镜像
docker build -t wbsu2003/commafeed:v1 .

# 运行容器
docker run -d \
   --name commafeed \
   -p 8082:8082 \
   -v $(pwd)/config:/config \
   -v $(pwd)/data:/home/commafeed \
   wbsu2003/commafeed:v1

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 wbsu2003 ,下拉找到 wbsu2003/commafeed,版本选择 latest

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 commafeed,并在其中建两个子文件夹,分别是 configdata

文件夹装载路径说明
docker/commafeed/config/config存放设置
docker/commafeed/data/home/commafeed存放数据库

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
80828082

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 commafeed 和 子目录
mkdir -p /volume2/docker/commafeed/{config,data}

# 进入 commafeed 目录
cd /volume2/docker/commafeed

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name commafeed \
   -p 8082:8082 \
   -v $(pwd)/config:/config \
   -v $(pwd)/data:/home/commafeed \
   wbsu2003/commafeed

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  commafeed:
    image: wbsu2003/commafeed
    container_name: commafeed
    restart: unless-stopped
    ports:
      - 8082:8082
    volumes:
      - ./config:/config
      - ./data:/home/commafeed

然后执行下面的命令

# 新建文件夹 commafeed 和 子目录
mkdir -p /volume2/docker/commafeed/{config,data}

# 进入 commafeed 目录
cd /volume2/docker/commafeed

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

设置

容器正常启动之后,在 config 目录中可以找到 config.yml 文件

至少有 2 处需要修改

  1. publicUrl 的默认值指向了 localhost,用 docker 安装必须使用局域网 IP或者域名
  2. 默认设置是不支持注册用户的,需要将 allowRegistrations: false 改为 allowRegistrations: true

在这里插入图片描述

否则主页上只有登录

保存之后记得重启容器

运行

在浏览器中输入 http://群晖IP:8082 就能看到主界面

在这里插入图片描述

先注册用户

注意对密码的要求:

  • 不能少于 8 位;
  • 必须包含1个或多个大写字符;
  • 必须包含1个或多个小写字符;
  • 必须包含1个或多个特殊字符;

在这里插入图片描述

点左上角的 Subscribe,输入 Feed URL 后回车,如果地址没问题的话,会自动填充 Feed Name

  • 老苏博客的订阅地址是:https://laosu.ml/atom.xml
  • 因为没建分类,所以默认的分类(Category)是 All

Save 保存,在左侧菜单找到刚添加的订阅

仅显示标题模式改为显示全文 模式

设置中文

进入设置,选择 Language ,拉到底可以找到 简体中文

在这里插入图片描述

其他

CommaFeed 原本应该是支持移动端和浏览器插件的

但实际上现在只能找到 FireFox 的插件

移动端也差不多,看来 RSS 最终都会像 Google Reader一样,慢慢消失的无影无踪

参考文档

Athou/commafeed: Google Reader inspired self-hosted RSS reader.
地址:https://github.com/Athou/commafeed

CommaFeed
地址:https://www.commafeed.com/#/welcome

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

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

相关文章

CS144-Lab0解析

讲在开头 cs144建议我们使用Modern C来完成所有的lab&#xff0c;关于modern c的全面的用法可以在(http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)获取。 以下是一些代码规范&#xff1a; 不要使用malloc()和free()不要使用new和delete在不得不使用指针时应…

如何自动估算项目开发成本及报价,提高估算效率?

项目估算需要有科学专业的估算方法&#xff0c;需要有明确的量化指标&#xff0c;那么如何自动估算项目开发成本及报价&#xff1f; 第一步&#xff1a;功能点复杂程度的估算 CoCode需求分析工具&#xff0c;根据用户需求&#xff0c;使用COSMIC和IFPUG项目规模估算法&#xff…

数据结构C语言版 —— 队列+循环队列实现

文章目录队列1.概念2. 生活中队列应用3. 队列的实现初始化队列入队列出队列获取队头元素获取队尾元素获取队列中元素个数判断队列是否为空销毁队列2. 循环队列队列 1.概念 和栈相反&#xff0c;队列(queue)是一种先进先出的线性表&#xff0c;它只允许在一端进行插入&#xf…

C#-winform调用COM组件(COM组件由Qt开发)

一、场景介绍 在项目开发中,需要Qt与C#进行混合编程,完成项目开发。C#这边作为主框架,Qt负责编写插件,将功能模块通过COM组件的形式封装注册,再由C#调用、交互完成最终的项目。 程序开发环境: win10 64位 编译器: VS2017 Qt版本: Qt5.12.6 二、Qt封装COM组件 2.1 环境…

android flutter 安装

下载 flutter官网下载安装&#xff1a;https://flutter.dev/docs/development/tools/sdk/releases 将下载下来的zip安装包解压到想安装Flutter SDK的路径。注意&#xff0c;不要将flutter安装到需要一些高权限的路径&#xff0c;比如C:\Program Files\ 配置环境变量 添加fl…

案例教学 | 如何确定ADAMS简化模型的准确性,以及简化模型精度不够怎么办?

仿真建模过程中不可避免地对各种复杂元素进行简化处理。这种建模思路的终极目标是不牺牲仿真精度、还提升仿真效率。在Adams仿真建模过程中也有一些常见的简化方式&#xff0c;如非线性元素按线性建模、不考虑摩擦力、通过耦合约束等效传动关系等等。应用简化建模之前&#xff…

蓝桥杯有必要参赛吗?

昨天和群里的小伙伴在群里聊&#xff0c;有的小伙伴竟然说蓝桥杯一等奖没有含量&#xff0c;我也是醉了&#xff01; 就像去年看了一个号主写的&#xff1a;研究生遍地都是! 放眼全国14亿人口&#xff0c;别说研究生了&#xff0c;本科生占比有多少? “蓝桥杯是我人生中得到…

多态性:中的向下转型,instanceof 操作符的使用

多态性&#xff1a;中的向下转型&#xff0c;instanceof 操作符的使用 每博一文案 都说树叶不是一天变黄的&#xff0c;人心也不是一天变凉的&#xff0c;每一个现在的自己&#xff0c;其实都是过去的自己拼凑的。 如今我们的气质里都藏着过去走过的路&#xff0c;看过的书和爱…

混合模式和预乘原理的理解

首先说到混合模式&#xff0c;简单理解&#xff0c;混合模式就是同一像素上有两个颜色需要混合成一个使用的模式。 这里的两个像素点&#xff0c;我们把原先已经存在的&#xff0c;也就是下面的像素点颜色定义为目标颜色。把新加上来的&#xff0c;也就是上面的像素点颜色定义为…

【Selenium IDE录制脚本】三分钟教会你安装Selenium IDE的安装及使用

目录 1、安装Selenium IDE 1.1、安装Firefox浏览器 1.2、安装selenium IDE 2、selenium的脚本录制 1、安装Selenium IDE 1.1、安装Firefox浏览器 因为selenium的不同版本对Firefox的支持不同&#xff0c;所以我们安装了Firefox之后&#xff0c;需要关闭他的自动更新 搜索&…

Python-Tinydb数据库详解

目录 数据库 Tinydb Tinydb 使用 安装 导入 创建数据库 创建 table 增 删 查 改 其他函数 示例 最后 数据库 数据库就是存储数据的的地方&#xff0c;现在我们生活中几乎每时每刻做的事可能都有它的作用。今天来介绍 Tinydb 数据库&#xff0c;它适合初学者&am…

设计模式概述之建造者模式(五)

常说的设计模式是23种设计模式&#xff0c;分为3大类&#xff1a; 创建型模式5种&#xff1a;工厂方法、抽象工厂、单例、建造者、原型 结构型模式7种&#xff1a;适配器、代理、桥接、装饰者、外观、享元、组合 行为型模式11种&#xff1a;模板方法、解释器、策略、观察者、…

【如意如意顺遂我意快快显灵】

文章目录 ● 【猿如意安装】 &#xff08;基于Windows环境安装&#xff09; ● 【猿如意首页】 ● 【猿如意效率工具】 ● 【猿如意开发工具】 ● 【猿如意教程文档】 ● 【猿如意一行代码】 ● 【猿如意ChatGPT】 ● 【Markdown笔记】 猿如意官网&#xff1a;猿…

【码极客精讲】二叉树

二叉树&#xff08;Binary tree&#xff09;是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式&#xff0c;即使是一般的树也能简单地转换为二叉树&#xff0c;而且二叉树的存储结构及其算法都较为简单&#xff0c;因此二叉树显得特别重要。二叉树特点…

Linux yum 命令

yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖…

Go 微服务开发框架 DMicro 的设计思路

Go 微服务开发框架 DMicro 的设计思路 DMicro 源码地址: Gitee:dmicro: dmicro是一个高效、可扩展且简单易用的微服务框架。包含drpc,dserver等 背景 DMicro 诞生的背景&#xff0c;是因为我写了 10 来年的 PHP&#xff0c;想在公司内部推广 Go, 公司内部的组件及 rpc 协议都…

Python:whl文件简介及实践

文章目录简介一、安装过程二、whl源地址推荐小结简介 WHL文件是以Wheel格式保存的Python安装包&#xff0c;Wheel是Python发行版的标准内置包格式。在本质上是一个压缩包&#xff0c;WHL文件中包含了Python安装的py文件和元数据&#xff0c;以及经过编译的pyd文件&#xff0c;…

【视觉高级篇】27 # 如何实现简单的3D可视化图表:GitHub贡献图表的3D可视化?

说明 【跟月影学可视化】学习笔记。 第一步&#xff1a;准备要展现的数据 可以使用这个生成数据&#xff1a;https://github.com/sallar/github-contributions-api 这里直接使用月影大佬的github提交数据的数据即可 结构大致如下&#xff1a; 第二步&#xff1a;用 SpriteJS…

黑*头条_第6章_kafka及异步通知文章上下架

黑*头条_第6章_kafka及异步通知文章上下架 文章目录黑*头条_第6章_kafka及异步通知文章上下架1)自媒体文章上下架2)kafka概述3)kafka安装配置4)kafka入门5)kafka高可用设计5.1)集群5.2)备份机制(Replication&#xff09;6)kafka生产者详解6.1)发送类型6.2)参数详解7)kafka消费者…

小林Coding阅读笔记:操作系统篇之硬件结构,CPU Cache一致性问题

前言 参考/导流&#xff1a; 小林coding-2.4 CPU 缓存一致性学习意义 底层基础知识&#xff0c;了解CPU执行过程&#xff0c;让上层编码有效并发控制底层设计思维&#xff08;对比 MySQL的并发控制&#xff09;、更好地去理解JUC的锁、volatile以及JMM架构层面的一致性保证问…