Yarr:一个UI很漂亮的RSS阅读器
时间:2022-07-27
本文章向大家介绍Yarr:一个UI很漂亮的RSS阅读器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Yarr是一个用Go开发的RSS阅读器,前端界面非常干净清爽,和macos莫名般配。
目前该项目还在积极开发中,作者后续应该会添加更多的功能。下面我水一下部署的过程。
由于作者没有预编译好的二进制文件,这里需要我们自己编译。安装一下需要用到的软件:
apt -y install build-essential supervisor nginx python-certbot-nginx apache2-utils wget
systemctl start supervisor nginx
systemctl enable supervisor nginx
安装Go语言:
wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' > /etc/profile.d/golang.sh
source /etc/profile.d/golang.sh
拉取项目文件并编译:
cd /opt
git clone https://github.com/nkanaev/yarr.git
git clone https://github.com/nkanaev/gofeed.git
mv gofeed yarr
cd yarr
make build_linux
完成之后在下面的目录可以看到编译好的二进制文件:
/opt/yarr/_output/linux
新建一个supervisor的配置文件:
nano /etc/supervisor/conf.d/yarr.conf
写入如下配置:
[program:yarr]
priority=1
environment=XDG_CONFIG_HOME="$HOME/.config"
directory=/opt/yarr/_output/linux
command=/opt/yarr/_output/linux/yarr -addr 127.0.0.1:7070
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/yarr.log
启动yarr:
supervisorctl update
yarr有一点美中不足的是没有身份验证的功能,所以在上面的supervisor中,我把它监听到本地。
接下来使用nginx反向代理,利用nginx加一个http身份验证。首先新建一个nginx配置文件:
nano /etc/nginx/conf.d/yarr.conf
写入如下配置:
server {
listen 80;
server_name yarr.zalou.cn;
location / {
auth_basic "Please Login";
auth_basic_user_file htpasswd;
proxy_pass http://127.0.0.1:7070;
}
}
使用下面的命令生成一个htpasswd文件(imlala是用户名注意替换:)
htpasswd -c /etc/nginx/htpasswd imlala
重载nginx:
systemctl reload nginx
如果需要SSL,使用下面的命令可以帮你自动配置SSL证书:
certbot --nginx --agree-tos --no-eff-email --email example@qq.com
预览:
- 48条高效率的PHP优化写法
- 生信蓝领,一个不舍得分享的高通量数据分析框架
- 为什么in_array(0, ['a', 'b', 'c'])返回true
- Java 10 新特性解密,引入类型推断机制,将于 2018 年 3 月 20 日发布
- 肿瘤全外显子测序数据分析流程大放送
- 数据预处理 | 机器学习之特征工程
- 书写高质量jQuery代码的6条经验
- Thread ThreadLocal,傻傻分不清
- 请品鉴我的vim配置
- maven私服快速入门
- 机器学习算法之随机森林的R语言实现-表达芯片示例
- 深入理解PHP原理之异常机制
- 仿网易栏目添加功能
- 当常规的算法都山穷水尽之后,你可以试试python中的SMOTE算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Fedora32下编译安装Qemu5.1并创建ARM版本Linux虚拟机
- 面试官想问的HashMap,都在这一篇里面了!
- CentOS7下使用Mondo Rescue实现系统全备份
- CentOS7下搭建Rsyslog Server记录远程主机系统日志
- 企业运维经典面试题汇总(4)
- 使用QEMU模拟树莓派Raspberry Pi
- Octave梯度下降法最优化代价函数的一个例子—ML Note 38
- Spring Boot入门系列(十八)mybatis 使用注解实现增删改查,无需xml文件!
- Mongodb多键索引之嵌套文档
- MySQL中的这几类日志,你一定要知道
- 微服务技术栈:API网关中心,落地实现方案
- 你的数据库服务器IO调度算法不对,难怪那么慢
- Android 11 强制用户使用系统相机?
- LeetCode题目38:外观数列
- GPUManager虚拟化方案