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.


Note de transparence
Cet article est basé sur mon contenu original.
La mise en forme et certaines reformulations ont été réalisées avec l’aide d’un outil d’IA.