[RAW] 2023-03-29 使用 Leap Micro 5.4 Beta 在家中体验无广告网上冲浪


author: Hanjingxue Boling
date: 2023-03-29 07:30:00 +0800
layout: post
license: CC-BY-SA-3.0
title: 使用 Leap Micro 5.4 Beta 在家中体验无广告网上冲浪
image: /assets/posts/2023-03/leapmicro54-beta-pi-hole-deploy.png
categories:

  • 社区新闻
    tags:
  • Leap
  • 翻译作品
  • 官方新闻

我们的不可变主机操作系统 Leap Micro 5.4 Beta 版现已推出。该更新使 SELinux 默认进入强制模式并进行了调整。Leap Micro 不是传统的发行版,而是用于运行虚拟机和容器化工作负载的轻量级主机操作系统。

Leap Micro 是 SUSE 的 SLE Micro 的 openSUSE 等价物。

在本文中,我想向您展示如何实际使用它来增强您在家中的日常无广告体验。我能够在 15 分钟内在虚拟机中复制整个设置,包括下载镜像。

我对 Leap Micro 的个人用例是尽可能多的无广告浏览、本地服务的 DNS 条目以及一个 Nextcloud 实例,作为在我妻子的 iPhone、儿童平板电脑和我的 Android 手机之间共享图片和视频的桥梁。

我的私人家庭服务器配置是 Raspberry Pi 4 8GB 和一块通过 USB 3.0 转 SATA III 连接至 Raspberry 的 1TB SDD。我通过 TP Link Deco X20 接入网络。我还使用 Deco 的端口映射和静态公网 IP 向公网公开服务。

RPI 有一个基于其 Mac 地址的保留地址,以保持简单配置。如果你有一个动态公网 IP,你可以考虑一些动态 DNS(DDNS)解决方案。

我个人很高兴在装载有 Leap Micro 5.3 以及 Pi-hole 的 Raspberry Pi 4 8GB 上使用所描述的设置,以实现无广告浏览和将我的 NextCloud 实例映射到本地地址。

如果您只想测试一下,虚拟机也可以运行此方案;只需确保虚拟机的虚拟网络接口处于桥接模式或使用传入连接转发。您只需单击两次,即可使用 NetworkManager 轻松完成设置。 否则,您将无法访问虚拟机服务的 Web 管理,并且这篇文章变得毫无意义。

我在使用 Leap Micro 时得到的好处是机器不需要我的任何关注。该系统有自动更新和自我修复功能。电脑会在(默认设置)定义的维护窗口期内自动重新启动到更新的快照,如果有需要我注意的问题,那么我只需通过 Web 浏览器中的 Cockpit 界面解决它。

Leap Micro 是一个具有只读根目录的不可变操作系统。openSUSE 通过 btrfs 快照和工具解决了这个问题,这些工具在系统识别到引导至新快照失败时,自动回滚并引导到以前的快照。

获取 Leap Micro 5.4 Beta

什么是自安装镜像(self-install image)?

自安装镜像本质上是一个将 Leap Micro 的预配置镜像写入磁盘并将系统分区扩大到磁盘大小的可引导镜像。因此,在虚拟机中的安装耗时不到两分钟(虚拟硬盘也是一个文件,我将其存放在一块 pcie 4.0 M.2 SSD 上)。

请从 https://get.opensuse.org/leapmicro/5.4/ 下载自安装镜像;请确保为 arm 设备选择正确的 x86-64AArch64 架构。因为本文使用虚拟机进行演示,我们将使用 x86-64 自安装镜像。

如果您使用的是物理设备,请使用 zypper 安装镜像烧录工具。其他发行版的用户可以安装(例如来自 Flathub 的)Fedora Media Writer。请使用您选择的工具将下载的镜像写入 USB 闪存驱动器。


$ sudo zypper in imagewriter # 对于 openSUSE 用户

$ flatpak --user install org.fedoraproject.MediaWriter # 对于其他发行版用户

如果您在 Windows 上阅读本文,请按照 此说明 操作。

注意:对于未启用 USB 引导的情况下使用 Raspberry Pi 的用户:请直接下载预配置镜像并通过以下命令将其写入 SD 卡。其余步骤相同。


xzcat [image].raw.xz | dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct status=progress; sync

在安装过程中需要避免用户交互吗?

希望在安装过程中避免用户交互的用户(例如,没有将外围控制设备连接到机器)可以使用 IgnitionCombustion 为系统进行初始设置。对于该用例,请使用预配置镜像写入您自己的磁盘驱动器。自安装媒介需要用户确认覆盖磁盘。请查看 此视频教程 以获取更多信息。

将自安装镜像写入 USB 驱动器

如果您使用的是虚拟机,则可以跳过此步骤。如果您在使用一个不可变系统并不希望重启设备,请确保有一个用于将镜像写入驱动器的工具,例如我们的 镜像烧录工具 或 flathub 上的 Fedora Media Writer

启动镜像

出于演示目的,我将使用在 GNOME Boxes 中运行的 Leap Micro 5.4 Beta x86-64 自安装镜像。

自安装镜像非常简单。如上文,它本质上是一个将 Leap Micro 的预配置映像写入磁盘并将系统分区扩大到磁盘大小的可启动镜像。

大约一分钟后,我们已经启动到已部署的 Leap Micro 5.4 Beta。

系统需要几秒钟启动,我们正在进入一个(从我们的最小图像(以前称为 JeOS)中借鉴而来的)简单的首次启动向导。

首次启动向导让您选择时区、语言和 root 密码,然后您的 Leap Micro 5.4 就可以使用了(您可以通过 Ignition/Combustion 实现自动化)。完成初始配置(大约两分钟)后,我们就可以启动服务了。

进入 cockpit

今日消息 (MOTD) 建议您启用 cockpit 网络。您可以通过 此服务器的 IP 地址:9090 访问系统,并以 root 身份登录到 cockpit。

注意:对于家庭用途,我强烈建议不要将此端口公开至公网,并仅将其保留在本地网络中用于管理(至少我是这样设置的)。您可以完全跳过 SSH,因为 cockpit 允许您通过网络浏览器访问终端。


$ systemctl enable --now cockpit.socket

Podman vs Docker

在本教程中,我们将 Pi-hole 作为容器化工作负载运行。Leap Micro 默认使用 podman。Cockpit 有一个很棒的 podman 插件,因此您可以直接从 cockpit 拉取并运行容器。

除非建议的部署非常以 Docker 为中心,否则您应该能使用 podman-docker 将 docker 容器逐个替换为 podman 容器,同时负载不受影响。

Pi-hole 在其示例中使用了 Docker;我们可以借此机会向您展示如何在 transactional-update 系统上安装附加软件。

您可以使用 transactional-update pkg install docker 或最好使用 transactional-update shell;它会 chroot 至新创建的快照并为您提供一个 shell 会话。您可以在那里继续工作,就像在传统系统中一样。


# sudo transactional-update shell

# zypper install docker

# systemctl enable docker

# exit

# reboot

要退出 transactional-update shell,请键入 exit 然后 reboot。所有更改都已在当前环境的 btrfs 快照中完成,因此我们必须重新启动系统才能看到更改。幸运的是,原始的 Leap Micro 的重启时间不到 10 秒。

注意:在不重启的情况下安装附加工具的推荐方法是使用 Distrobox

部署 Pi-hole

我们将按照 https://github.com/pi-hole/docker-pi-hole#readme 中的说明进行操作。这部分花了我两分钟的时间。

这本质上是从在后台运行 Pi-hole 容器的自述文件中复制粘贴的。请更改密码并设置您的时区。请特别注意 host-to-container 的 -p HOST_PORT:CONTAINER_PORT 端口映射,尤其是在运行多个工作负载时。

-p 8888:80 表示我们正在将主机的端口 8888 映射到容器中的端口 80(Web 管理界面)。端口 53(DNS)映射到容器中的同一端口。

您可以将其存储在包装器中,例如 /root/pihole_deploy.sh

Docker 卷

在此示例中,我们将本地 /root/etc-pihole/root/etc-dnsmaq.d 目录作为 Docker 卷传递给容器,它们将分别作为 /etc/pihole/etc/dnsmasq.d 存在:


# mkdir -p /root/etc-pihole /root/etc-dnsmasq.d

# docker run -d \

--name pihole \

-p 53:53/tcp -p 53:53/udp \

-p 8888:80 \

-e TZ="Europe/Prague" \

-e WEBPASSWORD="CHANGEME" \

-v "/root/etc-pihole:/etc/pihole" \

-v "/root/etc-dnsmasq.d:/etc/dnsmasq.d" \

--dns=127.0.0.1 --dns=1.1.1.1 \

--restart=unless-stopped \

--hostname pi.hole \

-e VIRTUAL_HOST="pi.hole" \

-e PROXY_LOCATION="pi.hole" \

-e FTLCONF_LOCAL_IPV4="127.0.0.1" \

pihole/pihole:latest

请等待状态变为健康。您可以使用以下命令主动检查状态。


# docker inspect -f "" pihole

如果你搞错了配置,请运行:


# docker rm -f pihole # ^ re-do the above

进入 Pi-hole 网页管理

此时容器化的 Pi-hole 已经被 daemon 化了,您可以通过 此服务器的 IP 地址:8888/admin 访问接口。

有一个默认列表;但是,我觉得它不足以让我获得无广告的 YouTube 体验。您可以使用内置工具查找更多广告列表。

使用外部域名访问具有本地 IP 的服务

这在我们后面的 Nextcloud 示例中特别有用。在这里,我使用本地 IP 为我的公共域创建本地 DNS 记录,因此我可以使用外部域名访问我的 NextCloud 实例,但与本地 IP 交互。

使用带有广告列表的新家庭 DNS 服务器

最后一步是将路由器的 DHCP 服务器配置为使用新的 pi-hole 实例作为 DNS 服务器。 请仔细检查您的终端设备是否将其用作 DNS 服务器。否则,它将没有效果。在示例案例中,我在 TP-Link Deco 的 DHCP 设置中手动将 DNS 条目设置为(在我的示例中为)192.168.68.69。

提示:我发现这个功能是为了在我试图调试访问某些网站的问题时,暂时禁止阻断。

至此,我们完成了。祝你玩得开心!


原文:Hands-on, Ad-free browsing at your home with Leap Micro 5.4 Beta,作者:Lubos Kocma

4赞