## 引语
本指南旨在为最原始的树莓派烧写操作系统、配置 Docker 运行环境并验证环境是否运行完备。
期间将会为 Raspberry Pi 1B 烧写 Raspberry Pi OS Lite (32-bit) 操作系统,安装 Docker 运行环境,并使用 Docker 容器布设 AdGuard Home 广告拦截器。全程并无任何操作难度,适合树莓派新用户熟悉树莓派完整初始化配置流程之用。
## 为树莓派挑选合适的内存卡
当前(2022 年 12 月)任何版本的树莓派均推荐使用不超过 32GiB 的内存卡,这可以免去许多更高级的分区格式配置操作。
为树莓派购置合适的内存卡后,需要拥有对应该内存卡的读卡器,并使用它将内存卡与你的计算机相连。
## 第一章 烧写操作系统
为树莓派烧写操作系统通常是将指定的操作系统镜像烧写至树莓派使用的内存卡内,树莓派在上电自动启动后,将会从内存卡内尝试读取操作系统并运行。
树莓派官方提供了一个简单的工具用于烧写操作系统,它的名称为 Raspberry Pi Imager,你可以 [点击此处](https://www.raspberrypi.com/software/) 前往官方发布页面下载适用于你计算机系统的 Raspberry Pi Imager。
以下为 Raspberry Pi Imager 的页面:
![Raspberry Pi Imager](//image.lceda.cn/pullimage/ovlaHdASUCbNHtXeu6rxW7fFjfUjp747CO8h6erP.png)
首先,点击 **选择操作系统** 按钮,由于本指南所使用的树莓派版本较旧,所以需要使用 32 位的操作系统,且由于我们不需要桌面环境(桌面环境会增加系统占用),此处点击 **Raspberry Pi OS (other)** 并继续选择 **Raspberry Pi OS Lite (32-bit)**。
在完成以上选择后,我们需要对所选的操作系统进行初始化配置,点选页面右下角的 ⚙ 图标按钮进入 **高级设置**。
![高级设置](//image.lceda.cn/pullimage/v84QtrR6tvflTRtu3IvLtY0CdSf99dga3kkKqAK2.png)
在高级设置中应用以下设置:
-----
> - ☑️ 设置主机名:raspberrypi.local
> - ☑️ 开启 SSH 服务
> - 🔵 使用密码登录
> - ☑️ 设置用户名和密码
> - 用户名:pi
> - 密码:*\*你的自定义密码*
> - ☑️ 配置 WiFi *\*仅当你使用的树莓派支持 WiFi 时勾选该选项*
> - 热点名:*\*你的 WiFi 热点名称*
> - 密码:*\*该 WiFi 热点对应的密码*
> - WiFi 国家:CN
> - ☑️ 语言设置
> - 时区:Asia/Shanghai
> - 键盘布局:us
-----
完成以上设置后点击 **保存** 即可,高级设置页面将会关闭。
之后,点击 **选择 SD 卡** 按钮并在弹出的窗口内选择你的内存卡(如果未显示任何内容,请首先确保你的内存卡已与你的计算机相连)。
最后,点击 **烧录** 按钮等待程序自动烧录完成,待程序提示烧录完成后即可将内存卡取下,并插入树莓派的卡槽内。
## 第二章 尝试与树莓派建立 SSH 连接
在开始这一章节前,请确保你有一个完整的树莓派,并且有一张已经烧录了操作系统的内存卡与之相连,将该树莓派接上电源后,电源指示灯(通常为红色)亮起,不支持 WiFi 的树莓派已使用 RJ45 接口网线与正常运行中的交换机(或路由器)相连。
进行 SSH 连接,首先需要一个 SSH 软件,本文以 Tabby 为例,你可以 [点击此处下载 Tabby](https://github.com/Eugeny/tabby/releases)。
![Tabby](//image.lceda.cn/pullimage/4x1WdejMtzZ13NqW98UIey8yQ3tcZMBednTCvvZa.png)
在 Tabby 首页点击右上角的 ⚙ 图标进入配置,并在 **配置和连接** 中选择 **新配置**,下拉找到 **SSH 连接**:
![SSH 连接](//image.lceda.cn/pullimage/7HvOn8m1Y81Y0TjjgGqy2V7N1NeWshzYt6A9fTop.png)
按下图进行配置,其中 **主机** 可以为 `raspberrypi.local`,也可以为你在交换机(或路由器)后台查询到的树莓派设备的 IP 地址:
![Tabby 配置](//image.lceda.cn/pullimage/mLmV4EttoEXpTyPvsUMn5kZOjH8CEvFqwv8ten0Y.png)
配置完成后点击 **保存** 按钮,等待配置页面关闭后,点击新建的配置右侧的 ▶ 符号建立 SSH 连接,一切顺利的话,Tabby 将会弹窗提示你输入连接的密码,此处你应该输入上一章节设置的自定义密码。如果密码没有问题,你将收到来自 Raspberry Pi OS 的欢迎信息:
![来自 Raspberry Pi OS 的欢迎信息](//image.lceda.cn/pullimage/9QaAoSj7Q5it54RHiUBPbCfIdVv1A4Z926xmamc6.png)
## 第三章 安装 Docker
在 Raspberry Pi OS 内安装 Docker 是一件非常简单的事情,你只需要在 SSH 命令提示符(通常为 `pi@raspberrypi:~ $`)后输入以下指令并执行:
```bash
sudo -i && curl -sSL https://get.docker.com | sh
```
等待安装完成,SSH 命令提示符将重新出现在页面最下方。
## 第四章 布设 AdGuard Home 广告拦截器
接下来的步骤和正常的 Linux 操作并没有什么不同,使用 Docker 布设 AdGuard Home 容器:
```bash
mkdir -p /dockerdirectory/adguardhome/conf/ && mkdir -p /dockerdirectory/adguardhome/work/ && docker container run --cpu-shares=1024 --detach --name=adguardhome --network=bridge --publish=53:53/tcp --publish=53:53/udp -p 3000:3000/tcp --restart=always --volume=/dockerdirectory/adguardhome/conf/:/opt/adguardhome/conf/ --volume=/dockerdirectory/adguardhome/work/:/opt/adguardhome/work/ docker.io/adguard/adguardhome:latest
```
你的 AdGuard Home 实例名称为 `adguardhome`,静态文件保存在 `/dockerdirectory/adguardhome/` 目录内,开放的 53 端口为 DNS 服务器被动端口,3000 端口为 AdGuard Home 后台管理页面端口,你需要访问 [http://raspberrypi.local:3000/](http://raspberrypi.local:3000/) 或 `IP:3000` 进行 AdGuard Home 的初始化及后续设置。
如果希望该 AdGuard Home 实例实现无人值守运行,还需要确保其能够稳定跟随官方更新,这时候,可以继续执行以下指令部署 Watchtower 容器,Watchtower 将会与 Docker.socket 建立连接,并自动更新所有正在运行的容器实例。
```bash
docker container run --cpu-shares=1024 --detach --name=watchtower --network=bridge --restart=always --volume=/var/run/docker.sock:/var/run/docker.sock docker.io/containrrr/watchtower:latest
```
以上,指南结束。
-----
本文初始发表在 [小汐技术栈](https://tech.soraharu.com/archives/97/),遵循 CC-BY-NC-SA 4.0 创作共用许可协议。