Add adguardhome

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-07-08 13:29:40 +01:00
parent 4f3b71e2a0
commit a18ce54dc4
6 changed files with 221 additions and 1 deletions

View File

@@ -0,0 +1,36 @@
{ pkgs, ... }:
let
entrypoint = pkgs.writeTextFile {
name = "entrypoint";
executable = true;
destination = "/bin/entrypoint";
text = builtins.readFile ./entrypoint.sh;
};
in
pkgs.dockerTools.buildImage {
name = "adguardhome";
fromImage = import ../base { inherit pkgs; };
copyToRoot = pkgs.buildEnv {
name = "root";
paths = with pkgs; [
entrypoint
adguardhome
apacheHttpd
yq-go
];
pathsToLink = [ "/bin" ];
};
config = {
Entrypoint = [ "entrypoint" ];
ExposedPorts = {
"53/tcp" = { };
"53/udp" = { };
"80/tcp" = { };
};
Volumes = {
"/var/lib/adguard" = { };
};
};
}

View File

@@ -0,0 +1,34 @@
#!/usr/bin/env sh
set -o errexit
set -o nounset
ADGUARD_ADMIN_USERNAME=${ADGUARD_ADMIN_USERNAME:-admin}
mkdir -p /etc/adguard
touch /etc/adguard/config.yaml
if [ -f /etc/adguard/config.yaml.default ]; then
cp /etc/adguard/config.yaml.default /etc/adguard/config.yaml
fi
password="$(htpasswd -B -C 10 -n -b "$ADGUARD_ADMIN_USERNAME" "$ADGUARD_ADMIN_PASSWORD" | cut -d ':' -f2-)"
yq eval -i ".users = [{\"name\": \"$ADGUARD_ADMIN_USERNAME\", \"password\": \"$password\"}]" /etc/adguard/config.yaml
LOG_PIPE="$(mktemp -u)"
mkfifo "$LOG_PIPE"
(
while IFS= read -r line; do
if echo "$line" | grep -qEi "\[(WARN|ERROR|FATAL)\]"; then
echo "$line" >&2
else
echo "$line"
fi
done < "$LOG_PIPE"
) &
exec AdGuardHome \
-c /etc/adguard/config.yaml \
-w /var/lib/adguard \
"$@" > "$LOG_PIPE" 2>&1