# Homelab

## DDNS

推荐使用 <https://dns.he.net/>。

以你的域名为 example.com 为例，先在上述网站注册账号，然后为你的一个子域名设置 NS 记录为 **ns1, ns2, ns3, ns4 and ns5.he.net**。下面详细介绍步骤


1. 将 dyn.example.com 添加上述 NS。注意这个子域名只用来设置 DDNS，不用于访问。
2. 在 [dns.he.net](https://dns.he.net/) 中添加域名，然后添加下级子域名 A 记录（IPv4）和 AAAA 记录（IPv6），取决于你的 IP 版本。“Name”随意设置，例如“homelab”，这样完整的域名就是“homelab.dyn.example.com”。
3. 添加记录时勾选“Enable entry for dynamic dns”，地址可以设置为 0.0.0.0 或者 ::，或者不更改。
4. 点击记录旁边的刷新图标，点“Generate a key”，然后把 key 复制下来，点“Submit”提交。

   **注意：完全相同的域名的 A 记录和 AAAA 记录共享同一个 key，但是不同域名不共享。**例如，如果此后创建 homelab2，完整域名为 homelab2.dyn.example.com，则会使用单独的 key。
5. 编写以下脚本，把其中的域名替换成你的域名，保存为文件，例如 he_ddns.sh。

   ```bash
   curl -4 "https://homelab.dyn.example.com:password@dyn.dns.he.net/nic/update?hostname=homelab.dyn.example.com"
   curl -6 "https://homelab.dyn.example.com:password@dyn.dns.he.net/nic/update?hostname=homelab.dyn.example.com"
   ```
6. 给 he_ddns.sh 设置执行权限，然后添加到 crontab 里：

   ```bash
   chmod +x he_ddns.sh
   ```

   添加 crontab，运行 crontab -e，把下面内容添加到文件末尾：

   ```none
   */10 * * * * ~/he_ddns.sh
   ```

   假定你的文件位于 \~/he_ddns.sh，请修改为实际位置
7. 将你访问要使用的域名设置 CNAME 到 DDNS 域名，例如将 homelab.example.com 域名 CNAME 到 homelab.dyn.example.com。访问时使用 homelab.example.com。

这么做的好处是，你依然可以使用你原本的解析商的其他功能，例如运行相关脚本签发证书。

---

**Documents**

- [搭建 Derp 的 Docker Compose](https://notes.bleatingsheep.org/s/homelab/doc/derp-docker-compose-k3FykRXsfi)
- [零刻 Ser5 MAX (5800H) 更新 CPU 微码缓解漏洞](https://notes.bleatingsheep.org/s/homelab/doc/ser5-max-5800h-cpu-GR2hAdvi0h)