Docker 镜像的精简

自从放弃 OpenVZ 架构的 VPS 并购买 KVM 架构的 VPS 以来,我一直使用 Docker 部署 nginx、MariaDB、PHP 等网站需要的程序,不仅方便平时单个服务的重启和配置管理(把配置目录全部用 volume 映射到一起管理),而且方便了服务的升级。 例如,我现在博客所在的 VPS 因为配置不高,内存占用最近一直在 80% 左右。我要更新 nginx 或者向 nginx 里加模块时,如果直接在这台 VPS 上编译 nginx,不仅速度慢,而且有可能因为内存不足而把网站也崩掉。使用 Docker 后,我就可以在其它的空闲资源较多的 VPS 或者在我自己的电脑上构建镜像,push 到 Docker Hub,再在 VPS 上 pull 下来运行。 不过,一直以来,我的 nginx 镜像大小都在 200 MB 左右(Docker Hub 显示大小,不包含基础镜像大小,比一般 docker image 显示的要小),明显大于它应该有的容量,不过因为 VPS 的硬盘暂时足够,而且前段时间我也没什么时间,我就没有管这个问题。现在有了空,...

nginx:TLS 1.3 多版本草案和 HPACK

距离我之前给 nginx 启用 TLS 1.3 已经过了 11 个月了。快一年过后,许多与 nginx 相关的程序、补丁都有了很大的变化: OpenSSL 已经在发布 1.1.1 的测试版,写本文时最新版本是 1.1.1-pre8(也就是 Beta 6)。 nginx 已经更新到 1.15.1。 nginx 的 HPACK 补丁(HTTP 头压缩补丁)的 bug 已经有另外的补丁的补丁修复,使用原先的 HPACK 补丁会导致网站访问不正常,体现为每个网站只能打开一个页面,第二个页面开始就出现协议错误。 有大佬 发布了 OpenSSL 的补丁 ,可以让最新版 OpenSSL 同时支持 TLS 1.3 的 draft 23,26,28 三个版本。 Lets Encrypt 证书已经自带 Certificate Transparency 信息了,不需要 nginx-ct 了。 2018 年 7 月 1 日起,TLS 1.0 不再被建议使用。 因此我重新调整了 nginx 的编译和运行配置,以适应 8102 年的需要。 Dockerfile 我依然使用 Docker 部署 nginx。与之前的 Dockerfile 相比,新的 Dockerfile 只是改了下版本号,...

Kimsufi 独服安装升级 ESXi 并设置软路由 的插图

Kimsufi 独服安装升级 ESXi 并设置软路由

Kimsufi 是法国 OVH 公司的一个廉价品牌,专门出租性价比极高的服务器。我自己租的是 KS-4C 型号,i5-2400 处理器,16GB 内存,2TB 硬盘,百兆带宽无限流量,只需要 13欧元 /月,性价比极高,非常适合开虚拟机做实验。 VMware ESXi(现在也叫 vSphere Hypervisor)和 Proxmox VE 是两个非常流行的专门用来开虚拟机的操作系统,且两者都是免费的。最重要的是,Kimsufi 的控制面板中都有两款系统的一键安装。但我在使用过程中发现 Proxmox VE 在网络条件不佳的情况下远程控制虚拟机经常连接不上(VNC 黑屏)或者丢键(输密码时尤其要命),因此还是换装了 ESXi。 这里又产生了一个问题:ESXi 不是完整的 Linux、FreeBSD 等系统,它不具有 Linux 等所有的 NAT 功能,也就是不能一个 IP 地址开好几台虚拟机然后做端口转发。不过,由于 Kimsufi 同时提供 IPv4 和 IPv6 地址,可以把 IPv4 给一台虚拟机用,让 ESXi 用 IPv6;再设置这台虚拟机做 NAT 就可以了。...

编写配置文件,让 Thunderbird 自动配置域名邮箱 的插图

编写配置文件,让 Thunderbird 自动配置域名邮箱

许多人在自己的网站域名上设置了邮箱系统,我也在主站 lantian.pub 的域名上使用了 Zoho 的域名邮箱。不过使用域名邮箱的一大缺点是,你很难记住邮件系统的 POP3、IMAP、SMTP 等服务器地址,一旦出现重装系统、重装邮件客户端等情况,需要重新配置时,就不得不再登上邮件系统去查看服务器地址,非常麻烦。 不过,如果你用的是 Thunderbird 邮件客户端,在设置账户时,你可能注意到,Thunderbird 在添加账户时,会有一个「从邮件服务商获取设置」的过程。这个过程实质上就是从这个域名的网站服务器上请求一份 XML 文档,其中记录了邮件服务器的设置。因此,只要手动编写这份配置文件,并将它放在网站服务器上,就可以实现 Thunderbird 下的自动配置了。 创建配置文件 配置文件中保存了 POP3、IMAP、SMTP 服务器的地址、端口号、用户名等信息。对于本站使用的 Zoho 邮件系统,配置文件如下: <? xml version = "1....

在 DN42 中设置 IPv6 反向解析 的插图

在 DN42 中设置 IPv6 反向解析

DN42 全称 Decentralized Network 42(42 号去中心网络),是一个大型的 VPN 网络。但是与其它传统 VPN 不同的是,DN42 使用了大量在互联网骨干上应用的技术(例如 BGP),可以很好的模拟一个真实的网络环境。 我在 先前的一篇文章 中加入了 DN42 网络,并在 另一篇文章 中注册了自己的域名,设置了自己的 DNS 服务器。然后,我在 这一篇文章 设置了 IPv4 的反向解析。当时由于 DN42 Wiki 上的信息有点问题,导致我当时认为不能设置 IPv6 反向解析,但经过我尝试后发现是可以的。 因为设置的是大体相同的东西,所以本文会和之前 IPv4 的文章有比较多的内容重复(复制粘贴)。 设置 IP 段的解析服务器 第一步是将自己所有的 IP 段解析到自己的 DNS 服务器上,我的服务器是 ns[1-2].lantian.dn42,可以全填。 在 IPv4 文中我直接用了原先的设置,但是因为我 IPv6 的 DNS 设置有问题,不得不改,因此只能发一次 Pull Request 修改 IPv6 的 DNS 服务器,...

在 DN42 中设置 IP 反向解析 的插图

在 DN42 中设置 IP 反向解析

DN42 全称 Decentralized Network 42(42 号去中心网络),是一个大型的 VPN 网络。但是与其它传统 VPN 不同的是,DN42 使用了大量在互联网骨干上应用的技术(例如 BGP),可以很好的模拟一个真实的网络环境。 我在 先前的一篇文章 中加入了 DN42 网络,并在 另一篇文章 中注册了自己的域名,设置了自己的 DNS 服务器。有了 DNS 服务器,我们就可以给自己的 IP 也设置上反向解析记录。反向解析记录的主要用途是反垃圾邮件,以及在 ping、traceroute 等网络工具中或许能好看一点。 设置 IP 段的解析服务器 第一步是将自己所有的 IP 段解析到自己的 DNS 服务器上,我的服务器是 ns[1-3].lantian.dn42,理论上可以全填,但是由于 DN42 现在修改配置需要发 Pull Request,流程比较长,我就保留了最初注册这个 IP 时设置的 DNS 服务器,只有 ns1.lantian.dn42。 在 git clone 下 DN42 的数据文件后,在自己的 IP 段文件中添加这样一句话: nserver: ns1.lantian....

在 DN42 中注册自己的域名 的插图

在 DN42 中注册自己的域名

DN42 全称 Decentralized Network 42(42 号去中心网络),是一个大型的 VPN 网络。但是与其它传统 VPN 不同的是,DN42 使用了大量在互联网骨干上应用的技术(例如 BGP),可以很好的模拟一个真实的网络环境。 我在 先前的一篇文章 中加入了 DN42 网络,并连接了大部分自己拥有的 VPS。(剩下几台是没有 Tun/Tap 的 OpenVZ VPS,无法加入)之前我就知道 DN42 拥有自己的域名体系,例如 DN42 的 Wiki 站( https://wiki.dn42.us/Home )就可以在 DN42 中以 https://internal.dn42 的域名访问,但是之前没有时间去完成域名注册,并且当时对 DN42 的了解还不够。这个月我完成了域名注册,就来分享一下过程。 搭建权威 DNS 服务器 权威 DNS 服务器,就是指管理某个域名记录的服务器。例如本站主域名 lantian.pub 的权威服务器是 lv3ns[1-4].ffdns.net ,就是 CloudXNS。在互联网上注册域名时,我们可以用现成的 CloudXNS、Cloudflare 等免费 DNS 服务,...

抢到了 50KVM 家一台 0.1 折的 VPS 的插图

抢到了 50KVM 家一台 0.1 折的 VPS

TG 最大主机商 50KVM 倒闭啦!原价 100 多,200 多的 VPS,现在通通 2 块钱!通通 2 块钱!(并不 起始 4 月 1 号星期天凌晨,正躺在床上看最新一集的国家队 Telegram 弹出消息,50KVM 发了一个愚人节优惠: 反正国家队看完了,那就试试看输这排 emoji 吧 第一轮尝试 尝试用 macOS 的输入法输入 emoji,然而发现并不好用,因为根本不知道这些 emoji 是什么东西 Google 「emoji 列表」 找到了一个 emoji 的列表网站 表情符号列表 等等,macOS 的 emoji 和图上的根本不是一个风格 先猜猜看吧 (尝试 5 次之后) 还是得知道是什么 emoji 字体啊,虽然凌晨 2 点人不多,但是再慢一点说不定会被别的大佬抢走 第二轮尝试 思考屌鸡(50KVM 老板)用的什么系统 macOS(以及 iOS)已经被排除了 拿起边上的 Android 手机,打开输入法,emoji 长得不一样,排除 另外主机商应该不会拿手机截图发优惠吧 在 TG 群里翻了一下,翻到了 50VZ 的优惠码照片(这两家老板是一个人)...

RoboMaster 开发踩坑日记(2018-05-28 更新)

学校组建了一支 RoboMaster 队伍,准备参加今年的比赛。因为是新校区新学生,因此我们完全没有之前的参考资料,只能自己一个个踩坑。 以下是我们在软件开发中遇到的一些坑。 硬件版本:RoboMaster 官方开发板(信仰板) 芯片型号:STM32F427IIHx 软件系统:ChibiOS 18.2.0 信仰板 HSE 时钟频率为 12MHz 而非常见的 8MHz 最坑的是信仰板的说明书和硬件原理图上完全没有提到这事。 这个问题导致我们用 STM32CubeMX 等软件算出的时钟频率远高于额定频率,并导致了如下后果: 莫名其妙的频率设置失败(设置了在合理范围内的频率,但是板子不响应了,只能短接某个电阻 Reset) USART 时序错误(明明两端波特率一样,但是收发的数据就是乱码,遥控器无法使用) CAN 数据无法应答(明明板子和电机电调都在发数据,示波器能解码出来,但是双方就是不 ACK) 以上问题在重新调整时钟频率后全部解决。 while(true); 发送 CAN 报文必须加延时 这是一个小问题。...

NAT64 服务器搭建

NAT64 是 IPv4 向 IPv6 过渡时出现的一项技术。它通过将 IPv4 的地址映射到一个 IPv6 地址段上,来让仅支持 IPv6 的设备同样能够访问 IPv4 网络。但由于仅支持 IPv6 的设备并不多,目前它在国内的应用主要是两个方面: 对于 IPv4 收费/限速/限流量而 IPv6 免费/不限速/不限流量的教育网用户,可以使用公共 NAT64 服务来省钱。 对于 iOS 应用开发者,用于搭建测试环境以通过 App Store 的审核。 我们也可以在自己的同时拥有 IPv4 和 IPv6 连接的路由器上安装相应的软件,来搭建 NAT64 服务器。常用的软件是 Tayga 和 Jool。其中 Tayga 年久失修,上次更新已经是 2011 年的事了,而 Jool 一直在活跃地更新,因此本文采用 Jool 来搭建。 安装 Jool 第一步是安装 Jool。Arch Linux 的 AUR 上有 Jool,而 Jool 在 Debian 和 Ubuntu 的官方源中都找不到,因此在这两个系统下需要手动编译安装。 对于 Arch Linux,直接 yaourt -S jool-dkms-git 即可。对于树莓派,...