diff --git a/docs/ftldns/compile.md b/docs/ftldns/compile.md index 317bdaa..4684fbf 100644 --- a/docs/ftldns/compile.md +++ b/docs/ftldns/compile.md @@ -27,16 +27,34 @@ sudo dnf install git wget ca-certificates gcc gmp-devel gmp-static m4 cmake libi Compile and install a recent version using: ```bash -wget https://ftp.gnu.org/gnu/nettle/nettle-3.8.1.tar.gz -tar -xzf nettle-3.8.1.tar.gz -cd nettle-3.8.1 -./configure --libdir=/usr/local/lib +wget https://ftp.gnu.org/gnu/nettle/nettle-3.9.tar.gz +tar -xzf nettle-3.9.tar.gz +cd nettle-3.9 +./configure --libdir=/usr/local/lib --enable-static --disable-shared --disable-openssl --disable-mini-gmp -disable-gcov --disable-documentation make -j $(nproc) sudo make install ``` 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`. +## Compile `libmbedtls` from source + +*FTL*DNS uses another cryptographic library (`libmbedtls`) containing cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocols used for serving the web interface and the API over HTTPS. + +Compile and install a recent version using: + +```bash +wget https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v3.4.1.tar.gz -O mbedtls-3.4.1.tar.gz +tar -xzf mbedtls-3.4.1.tar.gz +cd mbedtls-3.4.1 +sed -i '/#define MBEDTLS_THREADING_C/s*^//**g' include/mbedtls/mbedtls_config.h +sed -i '/#define MBEDTLS_THREADING_PTHREAD/s*^//**g' include/mbedtls/mbedtls_config.h +make -j $(nproc) +sudo make install +``` + +The `sed` commands are necessary to enable multi-threading support in `libmbedtls` as there is no `configure` script to do this for us (see also [here](https://github.com/Mbed-TLS/mbedtls#configuration)). + ## Get the source Now, clone the *FTL*DNS repo (or your own fork) to get the source code of *FTL*DNS: @@ -48,7 +66,7 @@ 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, like ```bash -git checkout development +git checkout development-v6 ``` ## Compile the source