Orange Pi Zero 无需网线或 USB-TTL 登录系统

通常对于新刷了 Armbian 系统的开发板,初次使用需要准备一条网线或者 USB 串口线才能进入系统连接 Wifi

而实际上,Orange Pi 开发板的 USB OTG 供电口本身就已经集成了 USB-TTL 芯片。插上电脑给开发板供电就可以识别到新的串口,Win10 和 Mac 都自带驱动,Linux 下更不用说。

在 Armbian 系统里也可以找到这个串口,就是 /dev/ttyGS0 设备。不过,ttyGS0 虽然和 ttyS0 一样开启了控制台,但没有 ttyS0 调试口的开机关机输出信息。当然,对于初次登录系统就足够用了。

Padavan 固件配置 6plat 的 6in4 隧道开启内网 IPv6 支持

上个周末入手了一台斐讯 K2,然后刷机了 Padavan 固件
开启了 SS 和 Adbyby 之后,发现路由器 CPU 负载和空闲内存都还很理想,所以就申请了 6Plat 个人用企业账号(需填写《6Plat企业模块申请单》,申请方为个人,附上姓名、身份证号码和手机,另外还需要公网 IP,动态 IP 需要设置 DDNS)。
发送申请邮件后,很快就收到配置信息,有五项配置,分别是:

  • 6plat 端公网 IPv4 地址:118.145.*.*
  • 6plat 端 6in4 隧道 IPv6 地址:*:*:*::1/64
  • 您的设备 6in4 隧道 IPv6 地址:*:*:*::2/64
  • 您可用 IPv6 网段:*:*:*::/48
  • IPv6 防污染 DNS:240c::6666

但 Padavan 是 WAN 中配置 IPv6,相关配置项目名称并不是一一对应,特别是 IPv6 内网地址的配置。

  • IPv6 连接类型: Tunnle 6in4
  • IPv6 硬件加速:
  • 6in4 远程端点 (IPv4): 118.145.*.* 对应 6plat 端公网 IPv4 地址
  • 隧道 MTU: 1480
  • 隧道 TTL: 64
  • IPv6 外网地址: *:*:*::2 对应 您的设备 6in4 隧道 IPv6 地址,不需要 /64 见下
  • IPv6 外网前缀长度: 64
  • IPv6 外网默认网关: *:*:*::1 对应 6plat 端 6in4 隧道 IPv6 地址,不需要 /64 见上
  • DNSv6 服务器 1: 240c::6666 对应 IPv6 防污染 DNS
  • DNSv6 服务器 2: 2001:4860:4860::8888 备用的 Google IPv6 DNS
  • DNSv6 服务器 3: 2001:4860:4860::8844 备用的 Google IPv6 DNS
  • IPv6 内网地址: *:*:*:1::1 对应 您可用 IPv6 网段,只需要选用一个子网段,所以在原有配置中间加了一个 :1
  • IPv6 内网前缀长度: 64 只使用了 /64
  • 启用 LAN 路由器通告:
  • 启用 LAN DHCPv6 服务器: Stateless (*)

网站开启 HSTS 与 HPKP

HSTS 是 HTTP Strict Transport Security,即 HTTP 严格传输安全。也就是强制使用 https 访问网站。之前有过配置,但现在 Chrome 有内置离线数据库支持 HSTS,直接在 Chrome 安装时就知道指定的域名开启了 HSTS。
HPKP 是 HTTP Public Key Pinning,即 HTTP 公钥固定。让浏览器可以缓存服务器证书指纹,因为服务器证书会经常性更新,所以一般提供的指纹是上级颁发者的中级证书指纹。
加上前段时间配置了 IPv6 访问,现在剩下的就只有 DNSCrypt 没有配置了。

使用 Caddy 和 Dnspod 自动申请 Let’s Encrypt 证书

Let’s Encrypt 申请证书的 ACME 协议支持三种认证,分别是:

  1. 基于 80 端口的 http-01
  2. 基于 443 端口的 tls-sni-02
  3. 无需端口的 dns-01

dns-01 需要在 DNS 服务器增加对应的 TXT 记录来完成验证。

Caddy 现在有官方的 tls.dns.dnspod 插件支持托管在 Dnspod 的域名使用 dns-01 来申请 Let’s Encrypt 证书。

首先,需要在 Dnspod 用户中心的安全设置中申请 API Token,复制其 ID 和 TOKEN。

然后,修改 Caddy 服务配置脚本,比如 sysvinit 系统的 /etc/init.d/caddyexport CADDYPATH=/etc/ssl/caddy 后面增加一行:


export DNSPOD_API_KEY="$ID,$TOKEN"

就是用 ID 和 TOKEN 以英文逗号分割的字符串。

最后,就是在对应的 Caddyfile 文件配置中启用:


tls {
dns dnspod
}

如果有配置多个域名,第一次启动会比较缓慢。因为需要每个域名依次申请证书。

题外话:

  • 树莓派 1 代在下载 Caddy 时需要在 PLATFORM 选择 Linux ARMv6,然后在 PLUGINS 中选择 tls.dns.dnspod 即可。
  • 如果 Dnspod 自己支持 DDNS 接口,不过一般路由器比如 TP-LINK 系都会支持花生壳 DDNS,自动在路由连接时登记,比定时脚本要靠谱很多。自己的域名只需要在 Dnspod 中 CNAME 到花生壳的免费域名。
  • 一般情况,运营商不会开放 80 端口,但 443 端口是开放的。只需要在路由器将 443 端口转发给内网设备。
  • Caddy 可以作为前端反向代理系统的其他的 http 服务,只需要每个服务多建一个域名即可。

完全使用 Let’s Encrypt 证书

因为众所周知的原因,StartSSL 已经不合适再继续使用了。而且 Let’s Encrypt 也足够好用。

Ubuntu 下直接使用 ppa:certbot/certbot 即可。只是因为脚本各种更新导致配置凌乱,现在应该稳定了。

并且,出于安全原因,90 天有效的证书似乎更好~

服务器升级到 ubuntu 16.04,php 7.0

上半年就计划升级了,但是正好遇上换工作,连 GitLab 的事情都耽搁下来,也就一直拖着。

工作的事情算是稍微告一段落,至少可以把自己用编码上摘出来。再加上前段时间把开发环境也试着转移到 xenial 的 7.0 下。所以,最终决定把服务器转移,并升级到新系统、新环境。

看了一下博客,已经是半年时间没有写过任何东西。长期以来,这里只是偶尔间随笔一样的东西。但这段时间都没坚持。

毕竟,最近越来越感觉到生活的压力。

将私人的 git 仓库从 gitlab 切换成 gogs

只有 1G 内存的 openvz VPS 又不能自由配置 swap 实在是跑不起 GitLab。
常年 90% 以上的内存占有率导致 php5-fpm 总是新进程申请不到足够的内存可用,导致 nginx 502。

考虑到私人 git 所需功能不多,就将原本跑在树莓派上的 gogs 迁移到 vps。然后直接在服务器上找到原来 gitlab 的 bare 目录,一个一个 git push –mirror 到 gogs 地址。