关于minio的docker配置以及403错误解决方法

关于docker版本的minio安装,其实很容易,就按照官网的配置好就可以了,奶牛是群晖的nas,所以在nas的docker里面直接把minio给pull回来就好了,然后就是一些配置选项。

这里需要注意的是要指定KMS,要不S3会发生无法传输问题。

MINIO_KMS_MASTER_KEY
MINIO_ACCESS_KEY
MINIO_SECRET_KEY

主要就是配置这三个key,直接指定就好了,其中的access key和secret key对应的就是minio的登录用户名和密码,大概就这么理解就成了。

然后记得把路由器的端口绑定做好,绑定到9000端口。

然后就是同步使用aws s3的时候,可能会遇到403的bug,奶牛在使用ansible来做同步的时候也是看到了403错误,这里把403在aws cli里面显示的是

An error occurred (RequestTimeTooSkewed) when calling the ListBuckets operation: The difference between the request time and the server's time is too large.

就是说服务器间的时间差距太大了,一看自己的server,果然是时间不太准了,设置下

date -s "20201211 19:58:00"  #yyyymmdd hh:mm:ss

然后再执行就很容易了。

最后记录下aws cli的s3配置

aws configure
AWS Access Key ID [None]: Q3AM3UQ867SPQQA43P2F
AWS Secret Access Key [None]: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
Default region name [None]: us-east-1
Default output format [None]: ENTER

aws configure set default.s3.signature_version s3v4

aws --endpoint-url https://play.min.io:9000 s3 ls

aws --endpoint-url https://play.min.io:9000 s3 ls s3://mybucket

aws --endpoint-url https://play.min.io:9000 s3 mb s3://mybucket

aws --endpoint-url https://play.min.io:9000 s3 cp simplejson-3.3.0.tar.gz s3://mybucket

aws --endpoint-url https://play.min.io:9000 s3 rm s3://mybucket/argparse-1.2.1.tar.gz

aws --endpoint-url https://play.min.io:9000 s3 rb s3://mybucket

minio实现了s3的很多功能,但是权鉴什么的没仔细研究,分布式的同步方案要4个存储空间,也相对要求太高,不过简单易用,如果作为对象存储服务器,奶牛觉得还是有差距的,只是个小的替代品。

群晖NAS黑转白DS920+实战

奶牛家的黑裙NAS寿终就寝了,估计是电源挂了,也懒得修了,直接上了今年的新款DS920+,下面说说群晖黑转白的过程。

1.拆盘+换盘

把旧盘拆下来直接插到新机器上就ok了,数据都在。

2.开机联机升级系统

用群晖助手找到新的IP,然后联机上nas的5000端口,一路下一步。

3.重置安装

发现从ds5.x直接升级到ds6.x会有系统bug,直接用不了,索性有比较好的重置功能,不怕丢数据,也不怕raid信息丢失。现在已经在为raid0担心了,又入了一块儿银河企业盘做备份。

群晖后面有个reset口,用针插会听到嘀嘀的声音,听到声音后松开针,再在1秒钟内重新按住,会听到陆续的三声嘀嘀,机器进入重置模式,然后用下载的固件直接重置安装即可,默认的设置估计都不在了,帐号也不在了,bt下载的话transmission得重新安装,自己网上找教程就好了,还有就是transmission的数据记得转移,如果安装位置有所改变的话。

transmission的配置在/volume1/@appstore/transmission/var里面,新安装在哪里就从哪里复制一份备份进去,记得chown把用户名和组搞定。

MT的话建议把DHT关闭。剩下的就继续自己探索了。

群晖在控制面板开启ssh后可以用用户名登录,之后sudo su提升权限到root,这样子就不会出现权限尴尬的问题了,但是操作的东西记得把权限也改了。

密码保护:2020年年中小记

这是一篇受密码保护的文章,您需要提供访问密码:

年味儿已逝

去年开始,烟花礼炮已经全面禁放,最后的年味儿也随着今年春晚名单出炉慢慢淡出我的世界。

三十岁,果然是个坎儿。

记得小时候,即使不玩儿用火点的烟花礼炮,也会买一些泥巴做的土炮仗摔着听响儿,大概现在在城市里买都买不到了。

我的孩子可能从出生就不知道过年到底是什么,又该怎么过。

百无聊赖,还不如上班来得充实自在,当然,我年年都得上班,没有节也没有假日,只希望财富自由的那天快点儿到来。

最近给自己添置了两件家用电器,一个电动马桶盖,一个电动牙刷,总体使用下来,感觉还是很好的,特别是经过洗牙之后,抽烟的牙怎么也刷不干净,用电动牙刷效果真的好很多。还有电动马桶盖,终于知道为什么印度等地区为什么痔疮发病率那么低了。

最近在学习各种行业,关注各种公司,新能源汽车在今后相当长的时间内会慢慢升温,然后逐步替代现在的燃油车,这个趋势真的非常好,今天记录下来,几年之后翻看不知道感想几何。

罗曼蒂克消亡史——2019年总结

2020年伊始,奶牛对2019年做做总结。

马上就步入30岁了,越发觉得时间匆匆了,我恨不能时间停滞,让我再努力努力。

在过去的十年里,我觉得我的思想还是很浪漫的,倒不是说多无忧无虑,但也终归都把不快忘记,虽不满足于衣食无忧,却也得过且过地活着。

2019年宝宝降生,生活上也有很多改变,多了份做父亲的责任,也开始对未来有了更多思考。

过去的自己对钱看得并没有那么重,虽然并不是大手大脚的人,但是心理上觉得这东西真的就是那句话,“钱是王八蛋,没了咱再赚”。

可是2019年也是自己真正成长的一年,很多事看开了,很多东西却开始看重了。

说说教育,我们在学校里面学习的永远是怎么工作(至少大部分专业是学习如何从事一项工作的基本技能),但却从来没人教你怎么赚钱。

就像一圈人在打牌,打了好几圈了你还不知道赔钱的傻子是谁,那么你就是那个傻子。

我觉得2019年是我真正开始价值投资的一年,很多事情认清了之后就知道自己的方向了,虽然前路可能很艰辛,但是我依然充满激情。

对于IT圈的关注会逐渐从技术方面转移,慢慢向上层,向前沿,向未来进军。

巴菲特是不搞自己一眼看不明白的投资的,但是,我觉得既然很多东西自己还能明白一些,那么就去投投看看,我不相信互联网只有泡沫,比特币就是一个很好的例子,当然,其实我想说区块链。

关注大环境更多了,政策干预多数时候都是向好的,背道而驰必然行不通。

2019年,基金定投已有3年,成效初现,我仍然只能用自己的生命去验证自己的对错,希望自己可以活得久一些。

昨天看到一个名叫 “洛阳小散户”的投资者的文章,感觉自己的起步确实晚了一些,但是还不算太晚,人生真的就是阶段性的,你不到那个年纪,又没人给你指导,你肯定会走很多弯路,所以一定一定要多读书,读关于财富的书,然后心理学,数学,哲学,历史,管理学,经济学,感觉要涉猎的方面太多了,只是自己真的晚了很多,在过去的十年里,我看的最多的书都是关于IT技术的,不能说是浪费了很多时间,但是就未来来看,可能走偏了一些。

还好,还好,至少现在认清楚了很多。

我们的思维,大多时候就随着教育,被固化了,昨天看到一句话特别好:“困难不在于接受新思想,而在于摆脱旧思想”。

只希望在未来几年可以实现财富自由,可以有更多的时间可以去探索更多奇妙的领域,可以有更多的时间陪伴自己的孩子成长。​​​​

使用Nginx Lua阻止对服务器IP的80/443端口直接访问

Lua作为Nginx服务器的脚本扩充非常好用,而且性能也很好。如果要使用Nginx Lua阻止对服务器IP的80/443端口直接访问,我们可以对nginx.conf进行如下设置

location / {
access_by_lua_block{
	if ( ngx.var.host ~= "www.nenew.net" ) then 
		ngx.exit(444)
	end
                    }
             }

其中的ngx.var.host代表目标域名,有几个变量可能会发生混淆:

ngx.var.server_name对应server_name:www.nenew.net
ngx.var.host对应host:test1.nenew.net
ngx.var.hostname对应hostname:nenew

这里我们就看啊,如果我们把IP绑定给其它域名,或者对方直接用hosts来进行dns解析,改变的是ngx.var.host,这个是访问者的目标域名,是变化的,所以这里block是针对的ngx.var.host,只要判定不相同即无法访问,我们直接给一个444状态,切断连接不响应。hostname是主机名,这里没有什么用,ngx.var.server_name变量是绑定域名,不能用绑定域名来判定,因为绑定域名会变,但是访问域名可能会造成改变。

Nginx配置noVNC的web页面教程

先说下noVNC的一键启动

./utils/launch.sh --listen localhost:6002--vnc localhost:6001

listen是监听本地端口,如果开放就不要用localhost而用0.0.0.0就好了 。vnc后面是vnc server的端口。

这个noVNC的启动项目没法直接用Nginx反代,因为涉及到websocket。官方的教程是这样做的

在nginx.conf的http字段中添加
upstream vnc_proxy {
    server 127.0.0.1:6080;
}
在nginx.conf的server字段中添加
location /websockify {
          proxy_http_version 1.1;
          proxy_pass http://vnc_proxy/;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";

          # VNC connection timeout
          proxy_read_timeout 61s;

          # Disable cache
          proxy_buffering off;
    }
location /vnc {
            index vnc.html;
            alias /home/nenew/noVNC/;
            try_files $uri $uri/ /vnc.html;
    }

其实很好理解,就是通过建立nginx和upstream的连接,然后把vnc的传输通过websocket完成。

这里nginx配置就算完成了,我们还需要一个websocket

./utils/websockify/run source_port target_addr:target_port

其中的源端口和目标地址:端口就正常填写即可,这里需要说的是目标端口和一键启动的端口没有关系,就是vnc的服务端口,websockify和launch俩程序没啥关系。

然后直接通过网站http://www.nenew.net/vnc访问即可。

Ubuntu Server安装KVM NAT虚拟机

安装kvm和libvert套装

apt install qemu qemu-kvm libvirt-bin  bridge-utils  virt-manager

下载好安装镜像并查看NAT网络

virsh net-list
查看会有一个default网络
ifconfig
会有一个私网的bridge网桥

开启IPV4转发

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl –p

安装KVM虚拟机

virt-install --name kvm --memory 4096 --vcpus=2 --boot hd,cdrom,menu=on --cdrom /home/nenew/ubuntu-18.04.3-desktop-amd64.iso --cdrom /home/nenew/virtio-win.iso --disk path=/home/nenew/kvm.img,format=qcow2,bus=virtio --network network=default --graphics vnc,listen=0.0.0.0,port=6001

这样配置一个可以在6001端口监听的VNC server,用VNC连接server并进行安装。

启动虚拟机

virsh list --all
查看所有虚拟机
virsh start kvm
启动虚拟机(安装完成后虚拟机可能关机)

奶牛现在码字感觉很费力,懒得多写了。

穷病——应该可以治

我卖了这么多年药,发现世界上只有一种病—“穷病”。这种病你治不好,也治不过来。

 

穷病,能治么?我觉得能,只是不是所有人的穷病都能治。

这些日子一直在思考,关于穷病。

今天又重看了《我不是药神》,人生不能缺少思考,如行尸走肉一般,如果说这部电影是讲正版盗版药,我觉得不够透彻,最根本的应该是那个行走江湖多年的假药骗子说的话,关键点是“穷病”。

假如,我是说假如,所有人都买得起正版药,谁去买盗版药。

但是,买不起。

你说是药贵么?对,确实贵。

但根本呢,穷!

工作已有一些年头了,可能大多数人的想法,结婚–买房–供房贷。

但是,如果在这个最佳的翻身时机做一个无法翻身的选择,我觉得不明智。起初,我觉得可能买了房子就真的没有钱去做些什么了。

今年的HK事件也让我有了更多的思考,直到前阵子偶然看到一本关于负债和资产的书,我仿佛看到了新世界的大门朝我敞开了。

房子,到底是资产还是负债?

HK事件,归根结底是房子的问题?是政治的问题?

仅在这个思考的清晨,记录下最近的收获。

自建sit 6in4 Tunnel Broker IPv6隧道

从大概8年前就知道HE(Hurricane Electric)的Free IPv6 Tunnel Broker,但是印象中尝试一直是失败的,当然这次的尝试也是失败的,原因估计是电信运营商封了6in4这种数据包封装,不过还是把过程记录下吧。

先说说sit tunnel,其实和GRE tunnel啊IPIP tunnel是相似的,sit tunnel也是本地和远程对等的一种tunnel,也就是说服务器端和客户端几乎是相反的配置。这里的配置需要iproute2的支持。

客户端:

ip tunnel add user-ipv6 mode sit remote 服务器IPv4地址 local 本地IP(如果是内网则为内网地址) ttl 255
ip link set user-ipv6 up
ip addr add 服务器IPv6地址::2/80 dev user-ipv6
ip route add ::/0 dev user-ipv6

服务器端:

ip tunnel add server-ipv6 mode sit remote 客户公网IPv4地址 local 服务器IPv4地址 ttl 255
ip link set server-ipv6 up
ip addr add 服务器IPv6地址网关::1/80 dev server-ipv6
ip route add 服务器IPv6 Route地址::/80 dev server-ipv6
echo "net.ipv6.conf.all.forwarding = 1" >>/etc/sysctl.conf
sysctl -p

配置完成后需要添加邻居信息服务,防止IPv6地址无法被广播识别。

wget https://github.com/DanielAdolfsson/ndppd/archive/0.2.5.tar.gz
tar zxvf 0.2.5.tar.gz
cd ndppd-0.2.5
make
make install

vi /etc/ndppd.conf

route-ttl 30000
proxy eth0 {
router yes
timeout 500
ttl 30000
rule 你的:IPv6:子网:前缀::/前缀长度 {
static
}
}

ndppd -d

配置完成后客户端应该可以直接使用分配的IPv6地址了。这里需要注意的是/64的IPv6地址需要切分成/80的子网,然后进行广播设置。配置工具可以使用https://github.com/sskaje/6in4

但是使用的时候需要将sipcalc安装上,否则无法正确使用。使用方法:

cd 6in4-master/etc/
vi config.ini

; IPv6 network, must be ending with '::'
; * Required
IPV6_NETWORK=你的:IPv6:子网:前缀::

; IPV6 CIDR, must be a multiple of 8.
; * Required
; If your IPV6_CIDR is smaller than /64, assigned blocks are /64; if smaller than /48, /48 is used.
; If IPV6_CIDR is greater than /64, assigned blocks are /(IPV6_CIDR + 16 [ + 8 ]), e.g.: 64->80, 72->96, 80->96
IPV6_CIDR=前缀长度

; Bind tunnel to device INTERFACE
; * Required
INTERFACE=接口名

; Local IPv4
; * Optional
; This is useful if your $INTERFACE has more than one IP.
; If BIND_IP is not set, script reads first IPv4 ip from $INTERFACE
;BIND_IP=1.1.1.1 若接口上有多于1个IPv4地址 需要绑定

; MTU
; Default: 1480
;LINK_MTU=1480

:wq

cd 6in4-master
./bin/6to4 add 1 233.233.233.233

***************************** WARNING ********************************
IPV6_CIDR greater than 64 may cause your subnet not advertisable.
***************************** WARNING ********************************

Please set up tunnel on your machine with following parameters:
    Server IPv4 Address:        1.1.1.1
    Server IPv6 Address:        2001:0db8:0001:0001:1001::1/80
    Client IPv4 Address:        233.233.233.233
    Client IPv6 Address:        2001:0db8:0001:0001:1001::2/80
    Routed /80:                 2001:0db8:0001:0001:2001::/80

If you don't have a static IP, set your local to 0.0.0.0 and invoke update api to update your endpoint