Installation Technitium DNS Server sous Alpine Linux

Installation Technitium DNS Server sous Alpine Linux

Alpine Linux Technitium DNS Server DNS

Installation Technitium DNS Server sous Alpine Linux

Contexte

1 Officiellement Technitium n'a pas de guide officiel pour être installé sous Alpine Linux. c'est donc un guide non officiel mais fonctionnelle pour installer Technitium sous Alpine.

Prérequis

  • Alpine 3.20 min

Installation des paquets


Éditer le fichier des dépôts :

vi /etc/apk/repositories


Ajouter les dépôts Edge :

http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
http://dl-cdn.alpinelinux.org/alpine/edge/testing


Installation des dépendances :

apk add aspnetcore8-runtime bash sudo tar unzip curl


Installation de Technitium :

curl -O https://download.technitium.com/dns/DnsServerPortable.tar.gz
sudo mkdir -p /opt/technitium/dns
sudo tar -zxf DnsServerPortable.tar.gz -C /opt/technitium/dns
chmod +x /opt/technitium/dns/start.sh


Création du fichier de "service" :

vi /etc/init.d/technitium-dns

Pour information le script de service est un peu sale (oui je kill...) car cela poser des soucis pour l'arrêt du processus...

#!/sbin/openrc-run

name="Technitium DNS Server"
description="Technitium DNS Server using dotnet"
command="/usr/bin/dotnet"
command_args="/opt/technitium/dns/DnsServerApp.dll"
command_user="root"
pidfile="/var/run/technitium-dns.pid"
directory="/opt/technitium/dns"

depend() {
    need net
}

start_pre() {
    if [ ! -f "${directory}/DnsServerApp.dll" ]; then
        eerror "DnsServerApp.dll not found in ${directory}"
        return 1
    fi
    export DOTNET_ROOT=/usr/lib/dotnet
    export PATH=$PATH:/usr/lib/dotnet
    return 0
}

start() {
    ebegin "Starting ${name}"
    ${command} ${command_args} > /opt/technitium/dns/technitium-dns.log 2>&1 &
    echo $! > ${pidfile}  # Enregistre le PID dans le fichier de PID
    eend $?
}

stop() {
    ebegin "Stopping ${name}"
    if [ -f "${pidfile}" ]; then
        PID=$(cat ${pidfile})
        # Envoyer un signal TERM pour arrêter le processus
        kill -9 $PID
        sleep 2  # Attendre un peu pour s'assurer que le processus se termine
        # Vérifier si le processus existe encore
        if ps -o pid | grep $PID > /dev/null; then
            eerror "Failed to stop ${name}. Process is still running."
            eend 1
        else
            rm -f ${pidfile}
            eend 0
        fi
    else
        eerror "No PID file found. Is the service running?"
        eend 1
    fi
}


On mets les droits qui vont bien, on rajoute le service au démarrage de la machine :

sudo chmod +x /etc/init.d/technitium-dns
sudo rc-update add technitium-dns
sudo rc-service technitium-dns start


Connexion à l'interface admin :

http://IP_SERVER:5380/

Article précédent Article suivant