Installation de Technitium DNS Server sous Alpine Linux

Installation de Technitium DNS Server sous Alpine Linux

🧭 Contexte

Officiellement, Technitium DNS Server ne dispose pas de documentation officielle pour Alpine Linux.
Ce guide a donc pour objectif de vous proposer une méthode non officielle mais fonctionnelle pour installer et exécuter Technitium sous Alpine 3.20.


🧱 Prérequis

  • Alpine Linux 3.20 minimum
  • Accès root ou sudo
  • Connexion Internet active

⚙️ Installation des paquets nécessaires

1️⃣ Ajouter les dépôts Edge

Éditez le fichier des dépôts :

1
vi /etc/apk/repositories

Ajoutez les dépôts Edge :

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

2️⃣ Installer les dépendances

1
apk add aspnetcore8-runtime bash sudo tar unzip curl

3️⃣ Télécharger et installer Technitium DNS

1
2
3
4
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 service OpenRC

Créez le fichier de service :

1
vi /etc/init.d/technitium-dns

ℹ️ Remarque : le script ci-dessous utilise un kill -9 pour forcer l’arrêt du processus.
C’est un peu “sale”, mais nécessaire ici à cause de la gestion incomplète du signal TERM par dotnet sous Alpine.


Contenu du script /etc/init.d/technitium-dns

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/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}
    eend $?
}

stop() {
    ebegin "Stopping ${name}"
    if [ -f "${pidfile}" ]; then
        PID=$(cat ${pidfile})
        kill -9 $PID
        sleep 2
        if ps -p $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
}

🚀 Activer et démarrer le service

Rendez le script exécutable et ajoutez-le au démarrage :

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

🌐 Accès à l’interface d’administration

Une fois le service démarré, accédez à l’interface Web de Technitium via :

http://IP_SERVEUR:5380/


✅ Conclusion

Vous disposez maintenant d’un serveur DNS complet et léger fonctionnant sous Alpine Linux grâce à Technitium DNS Server.
Malgré l’absence de documentation officielle, cette méthode s’avère fiable pour un usage personnel ou en labo.