使用Ipv6部署服务03 DDNS-go 动态域名解析

使用Ipv6部署服务03 DDNS-go 动态域名解析

本系列主要介绍通过公网的 ipv6 访问局域网设备并部署自己的服务供公网访问;本篇是其中的第三篇,以 DDNS-go 开源项目为例,部署动态域名解析服务,自动更新主机记录值。

jeessy2/ddns-go: 简单好用的DDNS。自动更新域名解析到公网IP(支持阿里云、腾讯云、Dnspod、Cloudflare、Callback、华为云、百度云、Porkbun、GoDaddy、Google Domain) (github.com)

该工具使用起来非常简单,推荐需要动态域名解析的可以尝试使用该工具,简单介绍工具的使用如下:

配置 DDNS-GO

前往 release 页面下载对应系统的版本:

image.png

解压后双击打开 ddns-go.exe 会自动弹出配置的界面:locahost:9876,选择需要解析域名的 DNS 服务商,选择创建密钥并填入对应的密钥。

image.png

选择需要启用的 ipv4或者 ipv6解析服务,填写需要解析的域名(每个域名单独另起一行)

image.png

其他的保持默认即可,在这里完成了基础配置以后,记得点击保存,之后便可以安装对应的服务,使其后台自动更新,windows 使用管理员打开 powershell 或者 cmd,到对应目录下执行命令如下

1
.\ddns.go.exe -s install -f 10 -cacheTimes 360

通过合理的配置 -f-cacheTimes 可以实现 IP 变化即时触发更新且不会被 DDNS 服务商限流, 例如 -f 10 -cacheTimes 360 效果为每 10 秒检查一次本地 IP 变化, 每小时去公网对比一下 IP 变化

详细的配置可参考置顶的官网连接。

Fi


使用Ipv6部署服务02 Nginx和Https

使用Ipv6部署服务02 Nginx和Https

本系列主要介绍通过公网的 ipv6 访问局域网设备并部署自己的服务供公网访问;本篇是其中的第二篇,以腾讯云和 Nginx 为例,介绍如何将服务部署到 https://域名

需要以下的事前准备:

  • 腾讯云/阿里云/Cloudflare 等随便一个地方购买一个自己的域名
  • 公网 ipv4/ipv6 地址
  • 本地部署一个服务以供测试

Nginx(Docker) 安装

这里选择 Docker 来分离安装 Nginx 服务,Docker 部署的优势这里就不再赘述,这里建议使用 portainer 进行容器管理和运行状态查看。

首先创建存放 Nginx 配置文件和证书文件的目录,后续挂载给 Nginx Contrainer 使用:

1
2
mkdir -p /home/username/docker-file/nginx/conf.d
mkdir -p /home/username/docker-file/nginx/cert

配置文件存放到 conf.d 中,各种 SSL 证书则存放到 cert 文件夹中;

接着部署 Nginx,这次先不挂载目录,将 Nginx 中一些默认配置拷贝出来,以供后续使用和修改:

1
2
3
# run会自己执行镜像拉取,pull可以不执行
# docker pull nginx
sudo docker run --name nginx -p 80:80 -d nginx

将配置文件复制出来:

1
2
3
sudo docker cp nginx:/etc/nginx/conf.d/default.conf /home/username/docker-file/nginx/conf.d/default.conf
sudo docker cp nginx:/etc/nginx/nginx.conf /home/username/docker-file/nginx/conf.d/nginx.conf
sudo docker cp nginx:/etc/nginx/mime.types /home/username/docker-file/nginx/conf.d/mime.types

基于原始的配置文件挂载后查看 nginx 是否正常运行:

1
2
sudo docker rm -f nginx
sudo docker run --name nginx -p 80:80 -p 443:443 -v /home/username/docker-file/nginx/conf.d/nginx.conf:/etc/nginx/nginx.conf -v /home/username/docker-file/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /home/username/docker-file/nginx/conf.d/mime.types:/etc/nginx/mime.types -v /home/username/docker-file/nginx/cert:/etc/nginx/cert -d nginx

参考资料:使用docker部署nginx并配置https - 逊老头 - 博客园 (cnblogs.com)


Windows端口异常占用

Windows端口异常占用

Windows11基于 WSL2启动 docker 后报错如下(需要注意有时候使用启动命令会报错,但是 restart 命令 docker 可以运行,对应服务无法访问)

Bind: An attempt was made to access a socket in a way forbidden by its access permissions.

观察错误发现占用的信息为2345,从 windows 和 wsl 中分别查看端口是否被占用:

1
netstat -aon|findstr "2345"
1
netstat -tunlp | grep 2345

均显示没有被占用,这可能是由于协议 tcp 使用的动态端口问题导致,可以使用管理员权限在 powershell 或者 cmd 中执行下列命令查看端口是否在动态范围中:

动态范围可能是由于 hyper-v 的原因修改过起始端口,所以可能会发现关闭 hyper-v 后没有占用的情况的现

1
netsh int ipv4 show dynamicport tcp

如在,修改动态范围,之后使用的时候避开这些端口即可。

1
netsh int ipv4 set dynamicport tcp start=49152 num=16384

重启电脑即可生效。


使用Ipv6部署服务01 IPV6开启和设置

使用Ipv6部署服务01 IPV6开启和设置

本系列主要介绍通过公网的 ipv6 访问局域网设备并部署自己的服务供公网访问;本篇是其中的第一篇,以电信宽带为例,说明如何开启 ipv6 服务和外网访问放行。

开启 IPV6 服务主要需要修改两个地方的配置:光猫开启桥接模式和 IPV6 路由器修改为 pppoe 拨号模式以及防火墙设置;这里以本人的电信光猫和小米路由器为例:

背景介绍

需要在外网访问部署于家庭内网的一些服务,考虑了以下的几个方案,决定使用 ipv6作为核心

类型 方案 简要说明
内网穿透 Zerotier 免费,需要注册账户,支持移动端,国内速度极慢,且不稳定
内网穿透 Tailscale(备用) 免费,需要注册账号,支持移动端,国内速度一版,稳定性相 Zetotier 较好,但仍不够稳定
内网穿透 frp 申请一个有公网的服务器,使用 frp 自己作为内网穿透的中转,贵,较为麻烦
公网 IP Ipv4 难以申请,其他都好
公网 IP Ipv6(主力) 获取简单,需要配置一下光猫使用,一劳永逸,快,稳定,多,有暴露公网的危险,需要设置防火墙
其他 Cloudflare Zerotrust 简单,免费,可以绑定域名,但是网站根本登不进去配置页面,速度不快

光猫设置

查看光猫背面的管理员 url,进入光猫管理界面,登录超级管理员账户(非普通账户,会跳转到更详细的管理页面,大部分同地区的超级管理员账户应该是一致的,不对可以询问下宽带师傅)

  • 管理地址通常为:192.168.1.1
  • 超级管理员账号:useradmin
  • 超级管理员密码:nE7jA%5

开始之前准备 PPPoe 拨号的帐号和密码,不知道的话等询问好了再开始操作。

在天翼网关->网络->网络设置中进行如下的操作:(这里可以尝试改成 pppoe 并通过开发者模式查看密码,不知道密码不要轻易进行后续操作)

  1. 连接名称选择 +++INTERENT_R_VID_41
  2. 连接模式从路由改为桥接
  3. IP 模式确认为 IPv4&IPv6
  4. 点击保存/应用

image.png

在天翼网关->状态->网络侧信息中检查 IPv4 和 IPv6 是否都开启成功:

image.png

参考资料:个人宽带如何开启IPv6网络访问


Obsidian使用 Spaced Repetition 制作闪念卡片

Obsidian使用 Spaced Repetition 制作闪念卡片

该文作为基础的闪念卡片的使用说明,介绍几种闪念卡片定义的方式,便于后续查阅,参考:

基本规则

  • 单个确定为 Flashcards 的笔记文件中可以存放多个闪念卡片。
  • 会根据记忆程度来设立需要复习的时间

卡片分组

在 Tab 中使用 / 可以引出卡片界面的层级,只需要在设置里设定最高层的分组,后续的分组用 / 引出即可。

image.png

使用以下的标签就能实现上述的分组结果:#vocabulary/day00;需要注意到的是只有至少一个问答时才会显示在对应的表中。


VsCode's RegExp Catch 正则捕获

VsCode's RegExp Catch 正则捕获

本篇简单介绍一些 VsCode 进行文本替换和查找的一些特殊的正则,该文会随着自己的使用来逐步记录,目前主要内容如下:

  • 捕获组合及其替换模式

这里不会介绍正则表达式的语法,对其基本语法感兴趣可以查看如下链接 VsCode使用正则表达式,以及我之前写过的基础的正则表达式 一文,下面进入正题;

Intro 正则搜索

正则表达式主要思路为模式匹配,通过符号表达来指定一种模式,识别所有符合该模式的字符组合,而非某些特定的文字,因此可以简化我们的搜索和替换过程,下面以一个例子说明。

例如有一个文件配置如下,而我们希望找到其中所有 user_config ,查看每个 user 的设置是否正确,由于 username 的长度和内容都不是一样的,所以这里需要使用正则来进行搜索:

1
2
3
4
5
zxc1_config=123
some content we dont need
asd2_config=234
and some other infomation or comment
qwer3_config=345

对应该场景的正则表达则为 +*_config= 或者 [a-z, 0-9]*_config= 等写法均可,效果如下:

image.png

可以看到我们需要的内容都被高亮了,这也就方便了我们进行一些复杂的文字处理,而搜索,也就是正则最基本也是最正统的用法,这里不再多说。


GoMetis00_INTRO
Photography00 XS20_Recipes
HomeAssistant01 入门基础篇

HomeAssistant01 入门基础篇

接下来本文安装的是 Container 版本的 HA,并非 Supervised 的版本,所以其中是不包含 Add-on 的,如果需要特定的 Add-on 的版本请注意。

基于本篇流程安装 HA 的前置条件是系统上已经安装好了可用的 Docker,该文会介绍 HA 和 HACS 的安装以及一些基础的配置。

HA & HACS 安装

本文安装于 Raspberry pi 4B,与其他操作环境可能会存在一些差异,要注意甄别。

HA

安装过程主要参考 Raspberry Pi - Home Assistant 中 Install Home Assistant Container 的章节,如果为其他的 OS 也可以在官网找到类似的指引,不过 docker 版本的差异应该不会特别的大,个人的 Docker Compose File 也已经上传到 GITHUB 可自行取用。

修改完 -v 的挂载目录以后(将数据保存在本地的目录)和 -e 的时区后,即可执行拉取和安装 docker,这里-v 挂载的本地目录要记得,后面有用。

1
docker compose up -d 

安装完后基于 Host 模式的 HA 会运行在 http://localhost:8123 中,localhost 也可以用 ip 替代。安装完后随着指引完成一些基础的设置,设置好默认的账号密码即可重启 docker 进入 HA 的界面;

到这里已经可以做一些基础的使用了,但是为了支持更多智能家具产品,往往需要安装第三方用户商店 HACS ,从中去下载对于其他智能家具产品的支持。

HACS

Home Assistant Community Store 第三方用户商店,便于下载各种各样的集成实现对于各个不同智能家具品牌和产品的支持。

各种不同版本的安装方式可以参考官方网页,以下只介绍基于 Container 的安装方式,官方提供了安装脚本,因此现在下载已经相对简单,具体如下:

  • 进入挂载的本地目录,执行下面命令,即包含了下载和执行。
1
wget -O - https://get.hacs.xyz | bash -

如果下不下来也可以直接打开网页复制进.Sh 脚本中;也可以去我的仓库中拉下来

安装完重启 HA,在集成页面添加集成,搜索 HACS,搜索到直接进行安装,跟随配置进行安装,并打开 GITHUB 进行登录和授权即可。


linux下载命令之Wget和Curl

linux下载命令之Wget和Curl

想要通过命令行直接下载文件,通常想到的就是下面的两个工具:wget 和 curl,下面简单介绍一下两者的使用。

Wget

wget 全称为 web get ,其基本用法为:wget [-para] url ,常用的参数有以下几种:

  • -O 指定下载文件的保存名称
  • -b 为后台下载模式
  • -P 下载到指定目录
  • -c 支持断电续传
  • -p 下载页面内的所有资源、包括图片视频等
  • -r 递归下载
  • -t 最大尝试次数
1
2
3
4
# 默认无需参数的情况下即会将文件下载到当前文件夹下。
# 也是最常见的用法,可以加入-c避免下载中断
wget url
wget -O file.tgz url

参考 Man Page 或者 ExplainShell 可以找到完整的参数列表;支持从文件中读取 url ;将 log 写入指定的文件等等功能;

可以看出 wget 是一个简单,专职的下载利器,无论是用来下载安装包还是 pdf 之类的东西是一个相当方便的下载工具。