背景之前给自己的服务器搭建了一个服务器监控的程序,采用的是哪吒监控 具体可以看下面这篇文章
引用站外地址
自建服务器监控
自建服务器监控
最近发现哪吒监控升级到v1版本了,界面变得更加好看了,需要的端口也从2个减少为1个(不再区分dashboard和agent的端口了),并且可以套上https,共用443端口来接入了
更换v1步骤由于更换了agent的端口,自己的服务器监控也不用保留监控数据,就打算推翻重来
删除旧的dashboard和agent,在服务器上执行nezha.sh,选择卸载即可
安装v1的dashboard,curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nez ...
背景之前把整屋的照明开关、人在传感、加湿器等各种设备都换成了米家,也自动化控制了加湿器,非常好用。那如何一眼看到整个房子中各个房间的温度、湿度情况呢?在米家app上一个一个传感器查看比较麻烦,也显的不够智能。于是在考虑能不能有一个界面,能够展示房型图,并在图上各个房间里显示当前温度湿度呢?
先来看看效果图
将支持米家的设备都接入Home Assistant安装Home Assistant正好家里有一台微电脑,被我当作服务器一直运行着,只要在上面部署Home Assistant就好了。
由于我已经安装了1panel面板,再来安装Home Assistant会非常方便。
为了安全原因,还是不要把Home Assistant开放到公网比较好,因为Home Assistant可以控制很多家中的设备。
安装HACS根据文档:
引用站外地址
HACS的github文档
HACS的github文档
...
加湿器怎么才算智能的呢?通常只要加湿器拥有链接wifi功能,可以用手机app来操作,就对外宣称智能了。但这真的是我们想要的智能吗?说的好听一点,一个设备依旧需要人来打开和关闭,这怎么能说是智能呢?说的不好听一点,用app来操作加湿器和用遥控器来操作加湿器,没有什么本质区别,只是换了一个工具而已。
那加湿器怎么才算智能呢?对于我来说,至少加湿器需要自动化才行,这是很基础的要求。
需求一:当只有人在家,并且不在睡觉时,同时房间湿度低于50时,才打开加湿器让其加湿。
需求二:当房间湿度高于60时就关闭加湿器。
需求三:当人离开家时关闭加湿器。
需求四:当人睡觉的时候关闭加湿器。
需求五:当人在房间并且没有睡觉时,自动打开或者关闭加湿器后告知一下。
需求六:以上5个需求需要在人不主动操作任何设备、APP、遥控器的情况下自动完成。
需要多少东东才能完成以上所有需求呢?
一个可以连入米家APP的加湿器由于本人没有无雾要求,所以购买了一个小米智能除菌加湿器2 。通过WIFI连入米家。
一个可以连入米家APP的人在传感器(含亮度传感器)。之所以需要人在传感器而不是人体传感器,因为人在房间中可 ...
背景家中原有的智能开关坏了,所以更换了小米的智能开关。发现当时装修的时候为了能够使用智能开关,预埋了零线。而现在小米智能开关竟然出了单火、零火通用的面板。究竟什么是单火?什么是零火?一直不太清楚,也不太知道其中的原理,所以借着这次更换小米智能开关的契机,了解一下相关的知识。
基础概念火线、零线、地线
火线(Line)
火线(也称相线),在照明电路里火线对地电压为220V
零线(Null)
零线是由发电机或变压器二次侧中性点(N)引出的线路,与相线(L)构成回路,对用电设备进行供电。
地线(Earth)
地线是在电系统或电子设备中,接大地、接外壳或接参考电位为零的导线。一般电器上,地线接在外壳上,以防电器因内部绝缘破坏外壳带电而引起的触电事故。地线是接地装置的简称。
通常照明电路中火线接电灯,再把电灯接零线,于是形成了电流回路,电灯正常工作。
控制线通常由火线接入开关,开关连接控制线,控制线连接电灯,电灯连接零线,最终形成回路即可使用。
智能开关智能开关的本质就是,面板中有一个芯片,此芯片使用无线传输技术(例如蓝牙、wifi、ZigBee等)和中枢网关通信,来实现智能控制用 ...
背景随着互联网发展,越来越多的网站拥有自己的账号,对于个人用户来说,访问越多的网站,就意味着需要管理更多的账号。然而,每个网站都有自己独特的密码规则
不同的密码位数,例如有些网站要求账号密码不能低于8位。
不同的密码字符种类,有些网站要求3种字符,有些要求必须要有大写字母,有些要求必须有特殊符号。
不同的弱密码策略,有些网站要求不能采用连续的数字、字母作为密码,有些则要求不能采用键盘布局上连续的按键作为密码,也有些限制密码不能包含账号名、生日等字符
更重要的是,不同网站采用相同的密码,有可能导致其中一个网站的密码被破解(暴力破解、拖库等各种情况),则其他网站账号也被泄露。所以要求用户在不同的网站上采用不同的账号密码。甚至现在越来越多的网站需要开启二次验证来保证账号安全。
这便给用户带来了如何管理账号的难题
如何记住每个网站的账号名(账号还是邮箱,或者手机号?)
如何记住账号对应的密码?
如何快捷的找到对应的二次验证器?
使用一个密码管理服务来管理自己的账号、密码和二次验证器,就能解决以上问题。当然这个密码管理服务又必须足够的安全和私密。
自建密码管理服务搭建服务器弄一台服务器的 ...
背景想使用思源笔记的S3同步功能,于是自建了一个S3服务,采用nginx作为反向代理,配置了https安全传输。
搭建完之后基本同步功能都正常,S3作为对象存储,读取、创建、修改、删除文件都没有问题。
直到在思源笔记上查询云端快照时出现了问题,排查nginx日志后发现了403错误。
排查S3服务403错误,一般是没有权限,但这很快就被排除了。原因是:
同步功能一直很正常,只有HEAD请求出现了错误。
由于使用自建的minio对象存储,也只有自己一个人在用,所以权限开的非常大,没有限制存储桶和操作。
思源笔记作为客户端,支持S3协议的服务端。思源笔记官方也采用七牛云存储来作为服务端的,所以大概率客户端没有问题。由于不太了解minio,担心是自己搭建的minio有什么问题,或者哪里没配置对,于是考虑换一个服务端。
接着搭建了一套alist服务,开启了它的S3协议功能,发现依旧如此。同步正常,但查询快照使用的HEAD请求依旧是403 。
排查nginx问题由于客户端和服务端中间存在一个nginx,那就直接先下掉nginx,看看究竟S3服务有没有问题。使用ip+端口直接访问S3服务端, ...
优化之CDN最近把博客系统换回了hexo,由衷地发现静态页面就是好,全站所有页面都可以做CDN,再也不用担心服务器小小的带宽了。
由于不想花太多的钱,找了一个有一些免费额度的CDN:
引用站外地址
多吉云
多吉云
每个月有20G免费流量,对于我的小博客网站一般足够了
额外流量1T(一年)只要(首单)58.8(老用户83)
支持熔断,短时间内遭遇流量攻击时,可以暂停CDN,防止刷爆钱包
支持自动续期ssl证书,可以避免忘记给ssl续期证书
支持热备服务器
支持ipv6
优化之启用ipv6在有了多吉云CDN的情况下,开启ipv6非常简单,无需源站做任何改变,一键开启
优化之热备如果是动态博客,做高可用的热备方案要考虑非常多的事情,例如部署多个程序,部署多个数据库,数据库之间同步等等。
但是静态页面处理起来就非常的方便了,由于之前已经采用了码云的代码提交自动部署,所以只需要增加一个部 ...
wakapi能做什么?有没有经常遇到以下问题呢?
每天都在工作写代码,一年下来到底花了多久在写代码,分别在什么项目上投入了多少时间呢?
每天都在做笔记,一年下来到底花了多久在查看笔记上?又花了多久在写笔记上呢?
wakapi就是一个开源的软件,可以记录每天都把时间花在哪些项目、哪些语言、哪些操作上了
为什么需要自建wakapi?自然是因为隐私问题,毕竟项目、笔记都有一些私密信息(虽然wakapi并不记录内容,但会记录一些项目名之类的信息)
如何搭建wakapi服务?参照文档
引用站外地址
wakapi文档
wakapi文档
使用docker命令构建服务
123456docker run -d \ -p 3000:3000 \ -e "WAKAPI_PASSWORD_SALT=$SALT" \ -v wakapi-data:/data \ --name waka ...
最近整理了不少重要文件,有父母年轻时的照片、年老时旅游的视频、自己新家庭的照片、小孩的视频,也有一些工作上的文件、一些生活上有纪念意义的文件。这些文件对我来说都非常的重要,所以自然希望妥善的保存起来。
备份321原则
至少 3 份资料备份
存放 2 种不同媒介
至少 1 份异地备份
备份方案
异地备份采用小米云服务
原因1:自己和家人大多使用了小米手机,共用一个小米云空间,平时拍照摄像之后会自动上传至云端。
原因2:实时性非常好,不会因为出门在外,刚拍摄的手机照片视频还没有备份就担心手机遗失或者损坏导致数据丢失。
原因3:对于异地备份来说,与其自己购买硬件或者购买云服务器,那还是用现有的服务比较省事。
NAS备份
原因:NAS备份,不仅仅能解决多一份备份的问题,还能解决在局域网内电脑、电视、平板等各种设备访问照片、视频的需求。
硬盘备份
原因:对于云备份来说,服务商的不稳定性存在一定风险(例如各大网盘关闭)。对于NAS来说,由于NAS需要提供一些内网服务,使用频率较高,NAS硬件或系统本身出现故障都会导致资料恢复比较繁琐。(尤其是NAS磁盘格式仅在NAS上可被识别时) ...
程序人生
未读安装nodejs首先访问nodejs官网,选择v22版本于linux系统上并使用nvm
官网会生成安装脚本,唯一需要注意的是,在国内,github可能访问不通
这个时候就需要使用代理,例如将
1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
替换成
1wget https://github.cici.icu/https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh
然后修改install.sh 中的github相关地址增加代理前缀
修改为
然后执行
1/bin/bash ./install.sh
用nvm安装nodejs官网的命令是
1nvm install 22
这个在国内也会遇到一些问题,建议设置代理
12export NVM_NODEJS_ORG_MIRROR=http://npmmirror.com/mirrors/node/export NVM_IOJS_ORG_MIRROR= ...
云服务器的SSH服务总是受到攻击,于是做了一下加固,可以看 云服务器SSH服务加固
最近突然想到一些攻击者的攻击思路,无非是先扫描常用端口是否能够访问,例如可以访问22端口,并且通过尝试连接发现也是SSH协议的端口,那就会使用一些弱密码或者暴力破解的方式进行攻击。如果22端口访问不通,那说明有可能SSH服务切换了端口,可以扫描所有端口来查找正确的SSH服务。
于是就有了这样一个想法,如果我在22端口上放置一个服务,能模拟SSH的协议,但不提供服务。再把真正的SSH服务端口限制一些IP白名单,这样是不是攻击者的脚本只会尝试破解22端口了。
终于被我找到了一个软件,FakeSSH是一个用 Go 语言编写的容器化蜜罐 SSH 服务器,用于记录登录尝试。密码验证总是失败,因此不会向攻击者提供终端访问权限。
在服务器上采用docker的方式部署一下FakeSSH
1234567891011121314version: "3"services: fakessh: container_name: fakessh deploy: ...
最近手上的服务器比较多,有自己买的,有用内网穿透搭建的,也有免费的云服务器,所以就考虑一个轻量级服务器监控,能一眼看到所有服务器的状态,并且在必要的时候产生告警通知。在找寻了几个之后,觉得哪吒监控不错。
安装服务端哪吒监控提供一键安装脚本
1curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
安装好之后,访问界面注册一个账号,就可以以管理员登录了。安装的时候可以选择配置OAuth2认证,由于在国内,所以选择了gitee作为认证平台。
在gitee中,我的账号 -> 第三方应用 -> 新建应用
记得在后台设置一个非CDN的域名或者IP入口,用于agent上报数据
最后只要记得打开2个端口,一个http端口用于查看服务器状态和配置监控,一个tcp端口用于接收agent端上报数据
新建监控的服务器
在后台创建一个服务器,会自动生成秘钥,可以 ...
程序人生
未读使用小爱音箱播放音乐很简单,但随着小爱音箱和QQ音乐深度合作,很多vip歌曲都只能试听了。
为了让家里的小爱音箱再次随时接受语音指令,播放自己喜爱的音乐,我又开始了折腾。
xiaomusicxiaomusic 是一个免费的开源服务,使用yt-dlp下载音乐并让小爱音箱播放
安装只需要配置docker compose 就可以开箱即用
123456789101112131415version: "3"services: xiaomusic: container_name: xiaomusic image: hanxi/xiaomusic ports: - 0.0.0.0:5678:5678 restart: always volumes: - /data/docker/xiaomusic/music:/app/music - /data/docker/xiaomusic/conf:/app/conf - / ...
程序人生
未读背景之前把阿里云的服务器调整了部署 ,使得阿里云的服务器还是比较安全的。最近又弄了台香港的服务器,拿到服务器的第一件事情,就是将SSH的默认22端口修改成不常用的其他端口。原以为这样能避免不少暴力破解SSH的攻击,直到一周前,突然发现SSH的登录日志有大量的登录失败记录,显然有人(或者程序自动)扫描了服务器可访问的端口,并解析出了哪个是SSH服务监听的端口。
禁止密码登录由于密码会因为暴力破解、撞库、其他网站拖库等各种场景被泄露,所以应该禁止采用密码认证方式,改由密钥认证。只要保存好私钥,相对来说更安全些。
虽然禁止root用户登录是一种更安全的措施,不过个人服务器每次操作都要提权好麻烦,暂时就不禁止了。
安装Fail2ban来屏蔽暴力破解一开始设置了禁用10分钟,结果发现10分钟一到,攻击IP就会继续尝试暴力破解。于是就将禁用时间提升到了1小时。
配置防火墙IP白名单为SSH服务的端口配置了IP白名单,只有白名单内才允许访问,这样就安全很多了。
可是,如何确保我自己访问是在白名单内呢?其实也很简单,可以使用腾讯的遨驰终端,通过遨驰终端连接服务器的SSH服务,这样只需要把遨驰终 ...
现象在jellyfin中,设置了媒体库名称为中文之后,封面显示为方块
原因原因也比较简单,就是jellyfin加载封面文字的时候会从/usr/share/fonts/truetype/dejavu这个路径中寻找字体文件,而默认的字体文件是不包含中文的,所以就会展示出方块乱码来。
解决方法
首先找到一个中文字体,ttf格式的,这个看个人喜好。如果不在意字体样式,可以下载这个
引用站外地址
中文字体文件
中文字体文件
然后把它复制6份,分别命名如下: * DejaVuSans.ttf * DejaVuSans-Bold.ttf * DejaVuSansMono.ttf * DejaVuSansMono-Bold.ttf * DejaVuSerif.ttf * DejaVuSerif-Bold.ttf2. ...
堆堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:
堆中某个结点的值总是不大于或不小于其父结点的值;
堆总是一棵完全二叉树。
将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。
例如:
构建堆数组和堆的特点
使用一维数组来表示一个堆,下标从0~n,0表示堆顶
如果一个节点的下标为x,那么左子节点的下标为 2x+1,右子节点的下标为2x+2
如果一个节点的下标为x,那么父节点的下标为(x-1)/2
堆化在一个已经是最大堆(或者最小堆)的末尾插入一个数据,有可能会打破这个最大堆(或者最小堆)
如下图,在一个最大堆末尾插入一个14的数据,就打破了这个最大堆。这时需要进行堆化处理。
处理方式就是,用这个插入的节点和其父节点对比,如果比父节点大,则互相交换。
交换后再继续和其父节点比较,直至堆顶。
构建堆由于堆的节点和数组下标有着明显的对应特征,所以构建一个堆只需要固定的几个临时变量,空间复杂度只有O(1)。
构建一个堆也比较简单:
首先认为下标0的数据为堆顶
接着认为向这个最大堆(或 ...
程序人生
未读背景
其中云服务器的nginx转发给frps请求,使用https协议,但是遇到了各种错误。
内网穿透配置客户端配置
1234567891011121314151617181920212223serverAddr = "frps云服务器域名"serverPort = 7000webServer.addr = "0.0.0.0"webServer.port = 7400webServer.user = "内网管理界面用户名"webServer.password = "内网管理界面密码"webServer.pprofEnable = false#log.to = "console"#log.level = "debug"auth.method = "token"auth.token = "客户端与服务端通信秘钥"[[proxies]]name = "web"type = "https"local ...
背景
多个域名通过nginx反向代理给frps,然后转发给frpc做内网穿透。
由于frps的https内网穿透模式不会取host(http head),只会取URI上的地址,所以无法使用proxy_pass到127.0.0.1
使用proxy_pass到sub1.xxx.com ,然后修改/etc/hosts ,让其指向127.0.0.1 ,但是nginx的proxy_pass不使用/etc/hosts解析。
解决方案需要搭建一个自己的dns解析服务器,用来解析这个域名
安装dnsmasqapt-get install dnsmasq
安装过程中提示失败,原因是53端口被systemd-resolved占用了,但systemd-resolved不会解析/etc/hosts并让他在nginx的proxy_pass中生效 ,不知道为什么。
所以就需要停止systemd-resolved对53端口的占用了
先查看53端口占用情况,确认是否是systemd-resolved占用的。
lsof -i :53
1234ubuntu@d ...
思源笔记
使用 思源笔记 作为自己的笔记软件,是出于以下几点:
思源笔记是已本地优先的笔记。避免了云端出现问题后,笔记无法使用的尴尬。
思源笔记可以采用自建的服务器来同步数据(支持S3协议和webdav),并采用端到端加密同步,个人笔记的一些重要、敏感内容不用担心泄密。
多层级的笔记管理方式。(这里吐槽印象笔记不支持多层级)
插件、主题、外挂等扩展性比较好。
用自建同步的话,价格是买断制,不用持续的支出。
自建minio服务搭建服务器弄一台服务器的方式有很多:
oracle 的免费云服务器,一个账号2台,每台1G内存,默认50G硬盘(安装完系统剩下30G左右,另外免费账号一共是200G硬盘),带宽0.5G左右。用来同步数据绰绰有余了。
自己家里架设一台微电脑(最好是低压的CPU,低功耗)配合内网穿透用来同步数据也是绰绰有余了,内网穿透推荐natfrp。
阿里云/腾讯云买一台服务器,一般首年只有100不到。阿里云的话是新老优惠99一年,可以原价续费,2C2G3M的服务器。一个实名账号仅限购买一台。
搭建面板服务器架设完成之后就是搭建面板,推荐使用1panel, ...