晨曦's Blog

This is a window to the soul

插件

autojump:实现目录间快速跳转,想去哪个目录直接j,不用再有事没事就cd
zsh-autosuggestions:输入命令时可提示自动补全以及之前的历史记录,然后按键盘即可
zsh-syntax-highlighting:日常用的命令会高亮显示,命令错误显示红色

安装

安装前我们可以在配置文件中查看plugins目录如下

1
2
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/

autojump安装如下:

1
brew install autojump

zsh-autosuggestions安装如下:

1
git clone git@github.com:zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

zsh-syntax-highlighting安装如下:

1
git clone git@github.com:zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

配置

1
2
3
4
5
plugins=(
autojump
zsh-autosuggestions
zsh-syntax-highlighting
)

加载

source .zshrc

前记

自用代码管理gogs和对应的mysql都部署在家用群晖的Docker上,今早发现gogs500错误无法访问,经过查询日志确定是mysql 5.7密码已过期,如下错误

1
Error 1862: Your password has expired. To log in you must change it using a client that supports expired passwords.

解决

ssh登陆到群晖

1
ssh admin@192.168.1.x -p xx22

首先我们需要对群晖admin账户提权

1
sudo su

然后进入对应的docker容器并登陆到mysql客户端,这里说明一下客户端的密码是不会过期的

1
docker exec -it mysql1 mysql -uroot -ppassword

然后重置密码

1
set password = password('newpassword');

接下来刷新权限

1
flush privileges;

最后设置密码永不过期

1
SET GLOBAL default_password_lifetime = 0;

到此问题就解决了,又可以愉快的访问gogs

前记

6.2系列引导已经出了一年多了,最近想升级6.2试试,于是踩进了坑

当前配置:

  • 型号:DS3615xs
  • 系统:6.1.7

踩坑步骤

  • 新做1号U盘(6.2引导盘)
  • 拔出2号U盘(6.1.7引导盘)换上1号U盘(6.2引导盘)
  • 启动 - 联机 - 迁移(6.2.2)- 重启
  • 做完上面步骤后开机找不到IP(这里已经改BIOS传统启动方式了)
  • 用原2号U盘(6.1.7引导盘)重新引导
  • 启动 - 联机 - 提示还原 - 还原 - 重启
  • 做完上面步骤后又找不到IP

降级处理

  • 新做1号U盘(6.1.7引导盘)型号为DS3617xs
  • 启动 - 联机 - 全新安装(如果用迁移依然没法降级安装)- 重启

做完以上步骤重启发现仅系统盘丢失,数据盘依然存在,如:docker容器等

参考资料

XPEnology Community

Scratch

scratch是一个空镜像,只能用于构建其他镜像,比如你要运行一个包含所有依赖的二进制文件,如Golang程序,可以直接使用scratch作为基础镜像

Busybox

scratch是个空镜像,如果希望镜像里可以包含一些常用的Linux工具,busybox镜像是个不错选择,镜像本身只有763KB,非常便于构建小镜像

BusyBox是一个集成了一百多个最常用Linux命令和工具(如catechogrepmounttelnet等)的精简工具箱,它只需要几百KB的大小,很方便进行各种快速验证,被誉为Linux 系统的瑞士军刀

BusyBox可运行于多款POSIX环境的操作系统中,如Linux (包括Android)、HurdFreeBSD

Alpine

Alpine采用了 musl libcbusybox以减小系统的体积和运行时资源消耗,但功能上比busybox又完善的多,Alpine还提供了自己的包管理工具apk,可以通过packages网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件

Alpine Docker镜像也继承了Alpine Linux发行版的这些优势。相比于其他Docker镜像,它的容量非常小,仅仅只有5 MB左右(对比Ubuntu系列镜像接近200 MB),且拥有非常友好的包管理机制

前记

为什么要软路由?目前家里的拓扑是

1
公网 -> 路由器 -> NAS/BOOK/PHONE

路由器负责了拨号科学上网广告过滤

之前已经将Frp移到了NASDocker里面

FRP 资源

FRP 教程

至于为什么要软路由原因:

  1. AC66U_B1时常不够稳定,将frp迁移至nas后深有感受
  2. AC66U_B1固件中插件有限而且越来越不好用,所以更多的是想将路由上的功能转一部分到软路由上

改造后拓扑为:

1
公网 -> NAS软路由 -> NAS/硬路由->BOOK/PHONE

硬件改造

改造前现有的硬件设备:

机箱:乔思伯 V2
主板:华擎 N3150TM - ITX 主板
电源:绿巨能笔记本 DC 电源
硬盘:西部数据 (WD) 红盘 4TB * 2
内存:金士顿 DDR3L 4G

改造前如图:

改造部分为更换机箱以及增加网卡

机箱:金河田(Golden field)预见 N-1
网卡:EDUP EP-9602 PCI - E 千兆网卡

改造后如图:

LEDE 安装

上传镜像

https://firmware.koolshare.cn/LEDE_X64_fw867/虚拟机转盘或 PE 下写盘专用/ 下载combined-squashfs.img.gz固件,解压后上传至群晖,如图:

网络设置

好吧,被坑了,还一直没找到问题所在。

最开始上了EDUP EP-9602 PCI-E千兆网卡(RTL8111芯片),在群晖的网络界面能识别,在VMM网络界面添加虚拟交换机时无法识别;后面又换了LR-LINK 联瑞pciex1台式机千兆有线网卡intelI211芯片支持linux LREC9202CT还是无法识别;后来又换了胜为(shengwei)PCI-E千兆网卡 以太网rj45台式机电脑10/100/1000自适应网卡 单口 带唤醒 PEC-2051还是无法识别

算了,不玩儿了

终结

网卡无法识别原因寻找中

未完待续…


关于群晖部分问题可以看各位网友的总结:

黑群晖常见问题

离线安装

SSH 到路由器上
下载 KoolProxy 离线包

1
2
3
4
5
6
7
cd /tmp

# 此为arm380下的包,版本为:3.8.4.1
wget http://cdn.jakehu.me/koolproxy.tar.gz

# 此为arm384下的包,版本为:3.8.4.1
wget http://cdn.jakehu.me/koolproxy384.tar.gz

解压并安装

1
2
3
4
5
6
7
# 此为arm380下的包,版本为:3.8.4.1
tar koolproxy.tar.gz

# 此为arm384下的包,版本为:3.8.4.1
tar koolproxy384.tar.gz

sh koolproxy/install.sh

规则转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
安装WebShell
复制下面的内容发送命令。

cd /jffs/.koolshare/koolproxy/data/rules
# 删除旧版本规则文件
rm -rf koolproxy.txt
rm -rf daily.txt
rm -rf kp.dat
# 下载新版本规则文件

wget -O daily.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/easylistchina.txt
wget -O koolproxy.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/fanboy-annoyance.txt
# wget -O kp.dat https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/kp.dat
wget -O kp.dat https://raw.githubusercontent.com/user1121114685/koolproxyR_rule_list/master/kp.dat
# wget -O user.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/user.txt
wget -O user.txt https://raw.githubusercontent.com/user1121114685/koolproxyR_rule_list/master/kpr_our_rule.txt
# 下载扩展规则合并
wget -O koolproxy_tmp.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/191c06c8d1f769f1b81c1437ad3b1271e0e58d7b/koolproxyR/koolproxyR/data/rules/kpr_video_list.txt
wget -O daily_tmp.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/yhosts.txt

cat koolproxy_tmp.txt >>koolproxy.txt
cat daily_tmp.txt >>daily.txt

echo 一点点清洁工作...
rm -rf koolproxy_tmp.txt
rm -rf daily_tmp.txt
echo koolproxy规则已替换完成,请重新启用koolproxy!

自动更新

脚本

自动更新脚本如下:
/jffs/scripts/koolproxy.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/sh

echo "开始转换koolproxyR规则"
cd /jffs/.koolshare/koolproxy/data/rules

# 删除旧版本规则文件
echo "第一步"
echo
echo -e "删除旧版本规则文件"
rm -rf koolproxy.txt
rm -rf daily.txt
rm -rf kp.dat

# 下载新版本规则文件
echo "第二步"
echo
echo -e "下载新版本规则文件"
wget -O daily.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/easylistchina.txt
wget -O koolproxy.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/fanboy-annoyance.txt
# wget -O kp.dat https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/kp.dat
wget -O kp.dat https://raw.githubusercontent.com/user1121114685/koolproxyR_rule_list/master/kp.dat
# wget -O user.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/user.txt
wget -O user.txt https://raw.githubusercontent.com/user1121114685/koolproxyR_rule_list/master/kpr_our_rule.txt
# 下载扩展规则合并
wget -O koolproxy_tmp.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/191c06c8d1f769f1b81c1437ad3b1271e0e58d7b/koolproxyR/koolproxyR/data/rules/kpr_video_list.txt
wget -O daily_tmp.txt https://raw.githubusercontent.com/user1121114685/koolproxyR/master/koolproxyR/koolproxyR/data/rules/yhosts.txt

echo "第三步"
echo
echo -e "合并规则"
cat koolproxy_tmp.txt >>koolproxy.txt
cat daily_tmp.txt >>daily.txt

echo "第四步"
echo
echo -e "一点点清洁工作..."
rm -rf koolproxy_tmp.txt
rm -rf daily_tmp.txt
echo -e "koolproxyR规则转换成功"

exit 0

设置

1
Tools->Scripts->定时任务

参考资料:
arm380 arm384 org lede

前记

鉴于电信运营商对公网IP吝啬之前一直使用frp对家里的Nas进行公网暴露,不过之前frpc一直是放在路由器梅林上的,这次将frpc移到了群晖Docker里面,所以制作了下面一键安装脚本以及Docker镜像以供使用

frps-onekey

此脚本根据clangcn/onekey-install-shell 脚本制作,感谢Clang大大

操作

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装
wget --no-check-certificate https://raw.githubusercontent.com/jakehu/frp/master/frps-onekey/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

# 卸载
./install-frps.sh uninstall

# 更新
./install-frps.sh update

# 管理
frps {start|stop|restart|status|config|version}

frpc-docker

操作

1
2
# 使用
docker run -d --restart always -v /data/frpc.ini:/frp/frpc.ini jakehu/frpc-docker

frps-docker

操作

1
2
# 使用
docker run -d --restart always -v /data/frps.ini:/frp/frps.ini jakehu/frps-docker

晓看天色暮看云,行也思君,坐也思君。

前记

说说我目前的整个服务器的配置以及链路

1
Chrome -> Frp服务器 -> Frp客户端(内网ASUS路由器) -> NAS(群晖)

由于上https我想对整个frp放在群晖中去做一个映射,而不是放在路由器上

改造过后的链路为

1
Chrome -> Frp服务器 -> Frp客户端(群晖) -> NAS(群晖) || 路由器

Frp 服务器

Frp服务器的安装这里可以看我做的一键安装脚本

Frps 一件脚本

Https 证书申请

可以是选择阿里云Symantec 免费版 SSL,可以自行前往阿里云控制台申请

我这里是用的sslforfree 在线申请的

当然也还可以通过其他的方式比如:acme.sh

Frp 客户端

在群晖上Frp客户端可以用docker镜像,这里同样可以看我制作的镜像

Frpc Docker 镜像

在安装好服务端和客户端后,我们下载证书上传到群晖服务器上,同时我们像下图一样挂载配置文件证书目录

最后我们需要对https进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
[common]
server_addr = 127.0.0.1
server_port = 5443

[test]
type = https
custom_domains = test.jakehu.me
plugin = https2http
plugin_local_addr = 192.168.1.1:80
# HTTPS 证书相关的配置
plugin_crt_path = /frp/certificate/certificate.crt
plugin_key_path = /frp/certificate/private.key
plugin_host_header_rewrite = 192.168.1.1

到此告一段落,完美适应!

前记

之前在使用gitlab runner时大多使用docker方式进行CI,但是对于Java and Maven每次都需要下载费时很久,所以后来我选择shell方式。接下来我们看看shell方式的runner应该怎样搭建

NO.1

第一步 我们首先安装Docker,因为后面 CI 的时候我们需要打包成Docker镜像

Docker Install

NO.2

第二步 我们需要安装JavaMaven

  1. Installing Java 8 on CentOS 7
1
2
3
4
5
6
7
8
9
10
11
12
# Step 1: Update
yum -y update

# Step 2: Install Java 8
yum install java-1.8.0-openjdk

# Step 3: Verify Java is Installed
# Example Output:
java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
  1. Installing Maven 8 on CentOS 7
1
2
# 这里我们直接有用yum默认安装
yum install maven

No.3

第三步 我们需要安装gitlab-runner

1
2
3
4
5
6
# 添加GitLab的官方存储库
# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

# 安装gitlab-runner
sudo yum install gitlab-runner

No.4

第四步 就是注册runner这里不过多赘述

0%