caddy在内网中无法更新证书

NAS 上面运行了一个 caddy 服务器,还设置了 https。最近突然遇到了证书过期的问题.

检查 log 发现是证书申请失败 SERVFAIL for _acme-challenge.my_domain.

大概搜索了一下, 是因为路由器的 dnsmasq 过滤掉了完成验证需要的 dns 查询

只要在 dnsmasq 设置中把 filterwin2k 参数禁用即可, 不同版本的 dnsmasq 禁用方法有些不同

利用手头已有资源尽可能高配的搭一台nas

现成已有的 nas:一台蜗牛星际 B 口单百兆,现在放了四块 500G 的硬盘租了一个 raid6。除去硬盘成本 268(机器)+200(电源), 硬盘是旧硬盘. 用了三四个月之后已经有三四块硬盘报警了.

总是觉得有些不爽,主要是又不想把现有 nas 里面的数据都拷出来换硬盘,又觉得现在的百兆和 1T 容量不太能让人满意,所以想搞一个千兆的高性能 nas。

看了看市面上 nas 的价格,感觉硬件配置又不太对的起价格,于是决定自己搞一个。正好自己现在还闲置着一台核显的 itx 小机器

用PyInstaller打包python应用

那天突然好奇,docker-compose是用什么语言写的。然后一看,发现居然是用 python2 写的。

但想到我安装的时候从来没在乎过机器上有没有安装 python,或者我的 python 版本是多少,而是按照官网的文档,直接下载一个二进制文件来安装的。突然眼前一亮。看了一下对应的构建代码,发现他是用PyInstaller来进行打包的,把一个 python 应用打包成单个的二进制文件。

一般来说,正常的 python 包的分发会基于 pip 的,发布到 pypi 和用户下载的都是代码文件(和其他语言编译的二进制文件),如果依赖于其他的 package 会在安装的时候再进行下载。

但用PyInstaller,打包出来的可执行文件中包含了所有用到的依赖和 python 解释器,并不需要本机安装了 python 或者 pip,像 docker-compose 这样的工具,打包之后成一个单文件,对于用户在安装和使用的时候都会方便许多,而对于我们开发者来说,就不用考虑兼容旧的 python 版本,可以直接使用 python3.6 的新语法如 type annotation 等,使用某些只有 python3.6 以上版本才能用的依赖库,自然也比原来爽了许多。

golang笔记

一些约定

  1. 使用驼峰命名法
  2. 首字母小写的变量/函数只能在包内使用(多按一次 shift 我要累死了, 虽然编辑器有时在小写输入的情况下也会自动补全大写内容, 但有时不是那么聪明)