Cheatsheets

作弊条:在 Nginx 中正确配置自定义 404 页面

最近给 blog 增加了一个自定义的 404 错误页面。像 Hugo 这样的静态网站生成器在构建时, 默认会把渲染好的 404 页面直接输出在网站根目录下,即 /404.html

针对这类页面,我们通常希望:

  1. 当访客访问不存在的网址时,服务器呈现该页面的内容,并且 HTTP 状态码必须是 404
  2. 当有人(或爬虫)直接在浏览器中访问 /404.html 时,同样呈现其内容,但返回的 HTTP 状态码依然必须是 404,而不是 200 OK
阅读全文… ( 本文约 1234 字,阅读大致需要 3 分钟 )

改善大量重复内容文件的 tarball 压缩效率

(最后修改: Cheatsheets #tarball #xz #Compression #hardlink #tar #文件压缩

有时,我们会希望分发包含大量重复文件的 tarball。绝大多数情况下,tarball 都会进行压缩, 进行适当的预处理有助于显著地提高压缩效率。

数据压缩的基本原理是利用数据中的冗余,通过更短的编码或规则表示重复或可预测的内容, 从而减少存储或传输所需的空间。简单的例子中,比如连续重复的字符「AAAAAA」可以表达为「6A」, 然而,当重复数据分布在较长范围内时,压缩算法很难直接发现和利用这些远距离的关联, 因为需要额外记录位置或匹配信息,这种匹配开销很大,做的话会严重影响压缩速度并且可能收益不高。 对于文本文件来说,其中的许多内容会高频率地出现,而如果一个 tarball 中包括数个内容一样的大型二进制文件,压缩算法很难有效地检测并对他们进行正确的处理。

阅读全文… ( 本文约 658 字,阅读大致需要 2 分钟 )

记一笔 paperless-ngx

(最后修改: Cheatsheets #Cheatsheet #paperless-ngx #FreeBSD #Self-hosting #PostgreSQL #redis #nginx #DMS

其实想搭一套 paperless-ngx 已经挺久的了, 趁着四月底休假的时候搞了一动。

我们经常会有一些各式各样的 PDF 文档,例如和各种供应商、公司之间签署的文件、账单, 以及参加一些学术会议时留下的幻灯、资料等等。比较自然的办法就是创建不同的文件夹来分门别类地保存。 然而,简单地用文件系统来保存这些文件有这样一些问题:

阅读全文… ( 本文约 1781 字,阅读大致需要 4 分钟 )

如何:重建根 zpool

(最后修改: Cheatsheets #FreeBSD #ZFS #SysAdmin #Storage #ashift #gpart

这篇和较早的 线上重做 FreeBSD GPT 引导分区 情况有些类似,但略有不同。

前段时间 Andriy Gapon 为 Samsung 860 / 870 SSD 增加了一个 quirk。 Samsung 的 SSD 内部使用的是 8K 或 16K 的存储页,但为了和业界标准兼容, 它的控制器为 4K 扇区做了优化。

阅读全文… ( 本文约 1655 字,阅读大致需要 4 分钟 )

Google Domain 域名转让备忘

(最后修改: Life Cheatsheets #Google Domains #DNS #Domains #Cheatsheet #域名

这里记录一下过程备忘。

我在 2011 年注册了一个比较技术宅的 .org 的域名,但一直没有实际投入使用, 最近宏观经济形势不太好,所以索性把不用的域名出一批来减少持续的花销, 周四终于出现了一位愿意接手的朋友,于是我们找时间做了一次域名转让的操作。

阅读全文… ( 本文约 823 字,阅读大致需要 2 分钟 )

迁移到了基于 Remark42 的评论系统

(最后修改: Cheatsheets #remark42 #Hugo #Cheatsheet #isso #Comments #Migration #Go #Self-hosting #评论系统 #迁移

上回书 说到启用了基于 isso 的评论系统,其实当时还发现了一个功能相当强的评论系统 remark42, 但该系统是 Go 写的,并且依赖的其他软件包要比 isso 多不少,因此当时没有下定决心换成这个。

阅读全文… ( 本文约 2067 字,阅读大致需要 5 分钟 )

作弊条:SSH 的 ProxyJump 跳板服务

(最后修改: Security Cheatsheets #Cheatsheet #OpenSSH #SSH #Proxy #Networking

问题

有些环境中,SSH 服务器可能无法从 Internet 直接访问(例如,SSH 服务器可能使用的是一个私有 IP 地址,或是 Internet 服务提供商没有提供 IPv6 服务,而 SSH 服务器只提供 IPv6 服务)。

考虑到 SSH 已经进行了相互认证(连接时客户端会验证服务器的公钥是否与已知公钥,例如 ~/.ssh/known_hosts, 或是通过 DNSsec 发布的 SSHFP RR 匹配;服务器端则会验证用户是否能证明自己拥有与授权公钥对应的私钥), 因此比较常见的解决方法便是使用 VPN、在防火墙上穿孔,或是使用代理服务器。

由于 SSH 自身也提供了许多转发功能,因此如果中间的跳板服务器也提供 SSH 服务, 便可以使用这些跳转服务器直接作为代理服务器来用。与前面那些传统方法相比, 这样做的优点是避免了安装额外的软件,也不需要特别指定端口。

阅读全文… ( 本文约 1412 字,阅读大致需要 3 分钟 )

作弊条: ldapmodify 删除项目属性

(最后修改: Cheatsheets #Cheatsheet #OpenLDAP #LDAP #ldif

随便记一笔,备忘。

形如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
dn: mail=foo@somedomain.org,ou=somedomain.org,ou=org,ou=MailAccounts,dc=somehost
mail: foo@somedomain.org
accountstatus: alias
sn: Foo
cn: Foo account at somedomain.org
objectClass: postfixAlias
objectClass: person
maildrop: delphij@delphij.net
maildrop: someone@example.org
maildrop: someoneelse@example.edu
maildrop: anotherperson@somewhere.com

这样一个项目,希望把后三项删掉。

阅读全文… ( 本文约 330 字,阅读大致需要 1 分钟 )