From dd5747d4f5d9be3310a50d22feb1f699dc12f5a3 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 27 May 2020 19:10:07 +0200 Subject: [PATCH 1/9] Update build instructions for cmake-based compilation. Signed-off-by: DL6ER --- docs/ftldns/compile.md | 67 ++++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 18 deletions(-) diff --git a/docs/ftldns/compile.md b/docs/ftldns/compile.md index 1aecf47..1389603 100644 --- a/docs/ftldns/compile.md +++ b/docs/ftldns/compile.md @@ -1,51 +1,82 @@ We pre-compile *FTL*DNS for you to save you the trouble of compiling anything yourself. However, sometimes you may want to make your own modifications. To test them, you have to compile *FTL*DNS from source. Luckily, you don't have to be a programmer to build *FTL*DNS from source and install it on your system; you only have to know the basics we provide in here. With just a few commands, you can build *FTL*DNS from source like a pro. -#### Installing the Required Software +## Installing the Required Software First, we'll install the basic software you'll need to compile from source, like the GCC compiler and other utilities. Install them by running the following command in a terminal: -##### Debian / Ubuntu / Raspbian +**Debian / Ubuntu / Raspbian** ```bash -sudo apt install build-essential libgmp-dev m4 +sudo apt install build-essential libgmp-dev m4 cmake ``` -##### Fedora +**Fedora** ```bash -sudo dnf install gcc gmp-devel gmp-static m4 +sudo dnf install gcc gmp-devel gmp-static m4 cmake ``` ---- +### Install `libnettle` -You'll also need to compile `nettle` as *FTL*DNS uses `libnettle` for handling DNSSEC. Compile and install a recent version of `nettle` (we tested and recommend 3.6): +*FTL*DNS uses a cryptographic library (`libnettle`) for handling DNSSEC signatures. +Compile and install a recent version using: ```bash wget https://ftp.gnu.org/gnu/nettle/nettle-3.6.tar.gz -tar -xvzf nettle-3.6.tar.gz +tar -xzf nettle-3.6.tar.gz cd nettle-3.6 -./configure -make +./configure --libdir=/usr/local/lib +make -j $(nproc) sudo make install ``` -#### Get the *FTL*DNS source +Since Ubuntu 20.04, you need to specify the library directory explicitly. Otherwise, the library will be installed in custom locations where it would not be found by `cmake`. + +## Get the source Now, clone the *FTL*DNS repo (or your own fork) to get the source code of *FTL*DNS: ```bash -git clone https://github.com/pi-hole/FTL.git -cd FTL +git clone https://github.com/pi-hole/FTL.git && cd FTL ``` -If you want to build another branch and not `master`, use checkout to get to this branch (e.g. `git checkout development`). - -*FTL*DNS can now be compiled and installed: +If you want to build another branch and not `master`, use checkout to get to this branch, like ```bash -make -j $(nproc) -sudo make install +git checkout development +``` + +## Compile the source + +*FTL*DNS can now be compiled using either the build script + +```bash +./build.sh +``` + +or manually + +```bash +mkdir -p cmake && cd cmake +cmake .. +cmake --build . -- -j $(nproc) +``` + +Note that both ways are exactly equivalent and that you do not need `root` priviledges here. + +## Install the new binary system-wide + +Install the new binary using either + +```bash +./build.sh install +``` + +or + +```bash +cd cmake && sudo make install ``` Finally, restart *FTL*DNS to use the new binary: From 9b9b331dfac1a701a97648577846dda7f35a3198 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sat, 6 Jun 2020 21:46:03 +0300 Subject: [PATCH 2/9] Update compile.md --- docs/ftldns/compile.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ftldns/compile.md b/docs/ftldns/compile.md index 1389603..6b02966 100644 --- a/docs/ftldns/compile.md +++ b/docs/ftldns/compile.md @@ -5,13 +5,13 @@ We pre-compile *FTL*DNS for you to save you the trouble of compiling anything yo First, we'll install the basic software you'll need to compile from source, like the GCC compiler and other utilities. Install them by running the following command in a terminal: -**Debian / Ubuntu / Raspbian** +### Debian / Ubuntu / Raspbian ```bash sudo apt install build-essential libgmp-dev m4 cmake ``` -**Fedora** +### Fedora ```bash sudo dnf install gcc gmp-devel gmp-static m4 cmake From 7633b1e846f40a4a5158aba631b9aeac55fbfae4 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Sun, 7 Jun 2020 12:05:57 +0100 Subject: [PATCH 3/9] add info box about OS compatibility check Signed-off-by: Adam Warner --- docs/images/OSWarning.png | Bin 0 -> 9443 bytes docs/main/prerequisites.md | 14 ++++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 docs/images/OSWarning.png diff --git a/docs/images/OSWarning.png b/docs/images/OSWarning.png new file mode 100644 index 0000000000000000000000000000000000000000..84cf98c8275d91232ba99b4844067b27dc8ab29a GIT binary patch literal 9443 zcmb7qdpOho|9&N@6z@VJZJm>foMLmBa*9F=iP$T=u3dXJ@7^)d1^@t5Dir|0V2D(lIe*}-1&mJo}M1}Jpdp%f9FneT@!$N0X37ty_m|~L;%cjm^bxqVVY6U6cPTM5_hzk$63IN&%5^Jb+MF0S( z?e?8{T@@VwKu=v-$2S=O(5flTOsJzKg6^0{mT}1eK|!H#_3|6H{Y@mD000#C24}9> zCVUSm;u1-yOR$%g1SO%g0Frvtq7Svy8Y;EyGRS0JU(+|GhDs??m%j3$s1YFvxD#I7 zc3T4!@Qqp&0=NX42VF{Vx>XdS6<Ks7FrVxDd9snqbA=(??B4R+vuS|+Qm=MVgW|x$| zYu_2w0VUYOLog;E3_2ouG&js)$r~c=WjZ63Un+q2dnAFYgJ|Na`{btID zrShemys7WczgkB9w6dr$}1Pj(B8dsVf3llXtS#;Z9HOHI2Oq?5e z`6LuQ)2o(cxCYma-netSd^c1`_ta_Ji*)!<#;U_2uX=4=MaSpW(Ini%-OPO>Gq1 znF2}E_jR+7-WjG2{gLl8z}AOx$~MA|6GPFP!!8Zrc?+eVtrnuC1o>X(-Xulohhie@ zg-#g}FG!JxD*_hs+XUM%ZaGv6gJ~QQ)SQU_aouaO>CLVJFH~jss zR!Xp(tOEaKiv5tdy?v5=q?|(K$EuLd#3yU7lUCO*%PSh6E&Q67cV&8nUb-@aX&G=U zT@V=Xz1Fgw`m3K2&&IT{%U8As7``*UGn3bUl&be(U{SIcaLy5SosX^^KeW$}(#8&_ ziTVv8VAMX3;VPp=C!*=}`*sCpZ{W)+0t$NMjuKBM=U-rIMe!{|CCpdKn70lg(r23~CZyqiSwQ939 zG;ljm)PI8@p)2K*dXiM>?t89{xLm4owLFDZAtY8Dw&bc*!o%nNc2n?s_jAkZ^b;?W z-0-T;zDBJJ$z91xk74ZjRraX#g&BOArO-ff*YKCHFmYu6Po66mvPIlHvlsO zfGXRl55>*AUp#Jt5N=Lct88Ak$pF@?H?1uaDvO>kUB?`4@C*43+Qh`5)A~{H8!Lv(UY_pq{()L@Z<(o+VgQ0YZT<=or`~V47aNEHIsOzh+@xZN1y{QCJ6{ws$w#ZyhoYjSQlm~i@vd4cu1^tSfGnqXfMK8_fd)vGwWPOJHTpn&@L88Ws#aP=HwMDbwd zgHZBE15bzN?{$I~YF>PQyu;%pR#O4hpV3!ry`6#4BII_6^Wq1L+9zswEoFL>6*IyJ z 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 literal 0 HcmV?d00001 diff --git a/docs/main/prerequisites.md b/docs/main/prerequisites.md index 0fcc40b..03144cf 100644 --- a/docs/main/prerequisites.md +++ b/docs/main/prerequisites.md @@ -30,6 +30,20 @@ The following operating systems are **officially** supported: | Fedora | 31 / 32 | ARM / x86_64 | | CentOS | 7 / 8 | x86_64 | + +!!! info + One of the first tasks the install script has is to determine your Operating System's compatibility with Pi-hole + + It is possible that Pi-hole will install and run on variants of the above, but we cannot test them all. If you are using an operating system not on this list you may see the following message: + + ![](../images/OSWarning.png) + + You can disable this check by setting an environment variable named `PIHOLE_SKIP_OS_CHECK` to `true`, however Pi-hole may have issues installing. + If you choose to use this environment variable, please use the [Community Help](https://discourse.pi-hole.net/c/bugs-problems-issues/community-help/36) topic on Discourse to troubleshoot any installation issues you may (or may not!) have. + + + + ### IP Addressing Pi-hole needs a static IP address to properly function (a DHCP reservation is just fine). Users may run into issues because **we currently install `dhcpcd5`, which may conflict with other running network managers** such as `dhclient`, `dhcpcd`, `networkmanager`, and `systemd-networkd`. From e7dce01da54f1abaa9e596a4d04ac5d78b8b2a42 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Sun, 7 Jun 2020 12:13:28 +0100 Subject: [PATCH 4/9] Add alt attribute to image Signed-off-by: Adam Warner --- docs/main/prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/main/prerequisites.md b/docs/main/prerequisites.md index 03144cf..76c1588 100644 --- a/docs/main/prerequisites.md +++ b/docs/main/prerequisites.md @@ -36,7 +36,7 @@ The following operating systems are **officially** supported: It is possible that Pi-hole will install and run on variants of the above, but we cannot test them all. If you are using an operating system not on this list you may see the following message: - ![](../images/OSWarning.png) + ![non-supported OS warning](../images/OSWarning.png) You can disable this check by setting an environment variable named `PIHOLE_SKIP_OS_CHECK` to `true`, however Pi-hole may have issues installing. If you choose to use this environment variable, please use the [Community Help](https://discourse.pi-hole.net/c/bugs-problems-issues/community-help/36) topic on Discourse to troubleshoot any installation issues you may (or may not!) have. From 48d58c7d2a9129106a2d958099c9ec388c19f703 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sun, 7 Jun 2020 14:15:57 +0300 Subject: [PATCH 5/9] Improve image compression --- docs/images/OSWarning.png | Bin 9443 -> 8915 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/OSWarning.png b/docs/images/OSWarning.png index 84cf98c8275d91232ba99b4844067b27dc8ab29a..eaac33fb9ceb95863b946247ce9f697f9676042f 100644 GIT binary patch literal 8915 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 z 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 From 4822c7eeb469a6fc254b1ab8c6f6500a23a09459 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 9 Jun 2020 09:34:58 +0300 Subject: [PATCH 6/9] Update compile.md --- docs/ftldns/compile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ftldns/compile.md b/docs/ftldns/compile.md index 6b02966..cefb9f9 100644 --- a/docs/ftldns/compile.md +++ b/docs/ftldns/compile.md @@ -17,7 +17,7 @@ sudo apt install build-essential libgmp-dev m4 cmake sudo dnf install gcc gmp-devel gmp-static m4 cmake ``` -### Install `libnettle` +## Compile `libnettle` from source *FTL*DNS uses a cryptographic library (`libnettle`) for handling DNSSEC signatures. Compile and install a recent version using: From 8f073c29d5e272c4128c82229a9a29108bdd2cb3 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 5 Jul 2020 09:46:33 +0200 Subject: [PATCH 7/9] Update description for AAAA_QUERY_ANALYSIS Signed-off-by: DL6ER --- docs/ftldns/configfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ftldns/configfile.md b/docs/ftldns/configfile.md index 44a3d61..915a4ba 100755 --- a/docs/ftldns/configfile.md +++ b/docs/ftldns/configfile.md @@ -34,7 +34,7 @@ Should `FTL` ignore queries coming from the local machine? #### `AAAA_QUERY_ANALYSIS=yes|no` {#aaaa_query_analysis data-toc-label='AAAA Query Analysis'} -Allow `FTL` to analyze AAAA queries from pihole.log? +Should FTL analyze `AAAA` queries? The DNS server will handle `AAAA` queries the same way, reglardless of this setting. All this does is ignoring `AAAA` queries when computing the statistics of Pi-hole. This setting is considered obsolete may may be removed in a future version. #### `ANALYZE_ONLY_A_AND_AAAA=false|true` {#analyze_only_a_and_aaaa data-toc-label='Analyze A and AAAA Only'} From 79743cd0e85d3fd997ff25eaddb635cef5edeace Mon Sep 17 00:00:00 2001 From: DL6ER Date: Thu, 16 Jul 2020 00:14:24 +0200 Subject: [PATCH 8/9] Add libidn dependency. Signed-off-by: DL6ER --- docs/ftldns/compile.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ftldns/compile.md b/docs/ftldns/compile.md index cefb9f9..f27677f 100644 --- a/docs/ftldns/compile.md +++ b/docs/ftldns/compile.md @@ -8,13 +8,13 @@ Install them by running the following command in a terminal: ### Debian / Ubuntu / Raspbian ```bash -sudo apt install build-essential libgmp-dev m4 cmake +sudo apt install build-essential libgmp-dev m4 cmake libidn11-dev ``` ### Fedora ```bash -sudo dnf install gcc gmp-devel gmp-static m4 cmake +sudo dnf install gcc gmp-devel gmp-static m4 cmake libidn-devel ``` ## Compile `libnettle` from source From b8e4248b986ee58ebd7584732b5d7636b0c93457 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Thu, 16 Jul 2020 00:15:41 +0200 Subject: [PATCH 9/9] Change supported Ubuntus from 16/18 to 16/18/20 Signed-off-by: DL6ER --- docs/main/prerequisites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/main/prerequisites.md b/docs/main/prerequisites.md index 76c1588..cd55a05 100644 --- a/docs/main/prerequisites.md +++ b/docs/main/prerequisites.md @@ -25,7 +25,7 @@ The following operating systems are **officially** supported: | Distribution | Release | Architecture | | ------------ | ---------------- | ------------------- | | Raspbian | Stretch / Buster | ARM | -| Ubuntu | 16.x / 18.x | ARM / x86_64 | +| Ubuntu | 16.x / 18.x / 20.x | ARM / x86_64 | | Debian | 9 / 10 | ARM / x86_64 / i386 | | Fedora | 31 / 32 | ARM / x86_64 | | CentOS | 7 / 8 | x86_64 |