树莓派Pi-hole实操安装教程

2023-12-09 01:40
文章标签 安装 教程 实操 树莓 pi hole

本文主要是介绍树莓派Pi-hole实操安装教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

树莓派Pi-hole实操安装教程

目录

  • 树莓派Pi-hole实操安装教程
  • 前言
    • 速览
    • 材料
  • 安装
    • 方法1(适合在港澳台以及国外的读者)
    • 方法2 (适合中国大陆的读者)
      • 1. 手动编译FTL
      • 2. 下载basic-install.sh的脚本文件
      • 3. 在脚本文件中,修改`FTLinstall()`
  • 验证
  • 引用

前言

Pi-hole 是一款开源且免费的 DNS 沉洞服务器(DNS sinkhole),能够在不安装任何客户端侧软件的前提下为设备提供网络内容屏蔽服务,非常轻量易用。搭配上家中吃灰已久的树莓派,我们就能够轻松打造属于自己的广告屏蔽助手。1
但我们该如何真正的配置它呢?在实操中会出现很多的问题,下面将为大家带来自己的一点操作流程以及体会。

速览

本文主要参考教程为此网站,并在此网站的基础上为大家排个雷。大家可以边看它边操作,出现的问题可以来对照解决。

材料

  • 树莓派3B x 1
  • 笔记本 x 1
  • 家用路由器 x 1

安装

首先我们需要将树莓派接入路由器,有线或无线均可,然后远程登录到树莓派上:

(现在默认大家已经来到了ssh或者远程连接的位置。 如果在这方面有所疑惑可以查询树莓派的SSH连接和 Windows远程桌面连接树莓派。

方法1(适合在港澳台以及国外的读者)

Pi-hole 提供了一键安装脚本:

curl -sSL https://install.pi-hole.net | bash

当然我们也可以试试,因为这网络啊实在是太太太难成功了……

方法2 (适合中国大陆的读者)

  • 首先提升通过修改hosts或者别的什么途径来提高你连接境外服务器的速度。(请读者自行查阅)
  • 做完了第一步后,你会发现……这样下载的网络永远会被FTL给卡断,所以我们查阅Github的官方文档,得到了以下的解决方案:

1. 手动编译FTL

  • Debian / Ubuntu / Raspbian,下载依赖
sudo apt install build-essential libgmp-dev m4 cmake libidn11-dev libreadline-dev
  • 从源文件编译 libnettle
wget https://ftp.gnu.org/gnu/nettle/nettle-3.6.tar.gz
tar -xzf nettle-3.6.tar.gz
cd nettle-3.6
./configure --libdir=/usr/local/lib
make -j $(nproc)
sudo make install
  • Clone FTL
git clone https://github.com/pi-hole/FTL.git && cd FTL
  • 编译 FTL
./build.sh

注意:这里可能会等很长一段时间,不要担心,你的树莓派没有坏掉,只是……慢……
你可以选择:砸掉买台新的泡杯茶打几把游戏 ,然后等待他慢慢的成功

  • 安装 FTL并重启服务
./build.sh install
sudo service pihole-FTL restart

注:如果一切顺利,此时你应该已经成功下载好了FTL了

2. 下载basic-install.sh的脚本文件

wget -O basic-install.sh https://install.pi-hole.net

3. 在脚本文件中,修改FTLinstall()

  • basic-install.sh中,按下ctrl+F,输入FTLinstall(),搜索到该函数,在函数的第一行添加return 0
    如:
FTLinstall() {return 0 # 这里是我添加的return代码# Local, named variableslocal latesttaglocal str="Downloading and Installing FTL"printf "  %b %s..." "${INFO}" "${str}"# Move into the temp ftl directorypushd "$(mktemp -d)" > /dev/null || { printf "Unable to make temporary directory for FTL binary download\\n"; return 1; }# Always replace pihole-FTL.serviceinstall -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.service" "/etc/init.d/pihole-FTL"local ftlBranchlocal urlif [[ -f "/etc/pihole/ftlbranch" ]];thenftlBranch=$(</etc/pihole/ftlbranch)elseftlBranch="master"filocal binarybinary="${1}"# Determine which version of FTL to downloadif [[ "${ftlBranch}" == "master" ]];thenurl="https://github.com/pi-hole/ftl/releases/latest/download"elseurl="https://ftl.pi-hole.net/${ftlBranch}"fi# If the download worked,if curl -sSL --fail "${url}/${binary}" -o "${binary}"; then# get sha1 of the binary we just downloaded for verification.curl -sSL --fail "${url}/${binary}.sha1" -o "${binary}.sha1"# If we downloaded binary file (as opposed to text),if sha1sum --status --quiet -c "${binary}".sha1; thenprintf "transferred... "# Before stopping FTL, we download the macvendor databasecurl -sSL "https://ftl.pi-hole.net/macvendor.db" -o "${PI_HOLE_CONFIG_DIR}/macvendor.db" || truechmod 644 "${PI_HOLE_CONFIG_DIR}/macvendor.db"chown pihole:pihole "${PI_HOLE_CONFIG_DIR}/macvendor.db"# Stop pihole-FTL service if availablestop_service pihole-FTL &> /dev/null# Install the new version with the correct permissionsinstall -T -m 0755 "${binary}" /usr/bin/pihole-FTL# Move back into the original directory the user was inpopd > /dev/null || { printf "Unable to return to original directory after FTL binary download.\\n"; return 1; }# Installed the FTL serviceprintf "%b  %b %s\\n" "${OVER}" "${TICK}" "${str}"return 0# Otherwise,else# the download failed, so just go back to the original directorypopd > /dev/null || { printf "Unable to return to original directory after FTL binary download.\\n"; return 1; }printf "%b  %b %s\\n" "${OVER}" "${CROSS}" "${str}"printf "  %bError: Download of %s/%s failed (checksum error)%b\\n" "${COL_LIGHT_RED}" "${url}" "${binary}" "${COL_NC}"return 1fi# Otherwise,elsepopd > /dev/null || { printf "Unable to return to original directory after FTL binary download.\\n"; return 1; }printf "%b  %b %s\\n" "${OVER}" "${CROSS}" "${str}"# The URL could not be foundprintf "  %bError: URL %s/%s not found%b\\n" "${COL_LIGHT_RED}" "${url}" "${binary}" "${COL_NC}"return 1fi
}
  • 再次运行下载程序,这次应该就成了
sudo bash basic-install.sh

验证

我们输入http://树莓派ip/admin,可以看到界面就展现在我们眼前了:
Pi-Hole

引用


  1. 基于树莓派的全能广告屏蔽助手 —— Pi-hole ↩︎

这篇关于树莓派Pi-hole实操安装教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/472033

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根