🐳 Installer Oxidized avec Docker sur Debian/Ubuntu

🐳 Installer Oxidized avec Docker sur Debian/Ubuntu

Oxidized est l’outil de référence pour sauvegarder et versionner les configurations de vos équipements réseau (Cisco, Juniper, Huawei…).
Le faire tourner dans un conteneur Docker est la méthode la plus propre, rapide et maintenable.

Ce guide est valable pour Debian 11/12 et Ubuntu 20.04/22.04/24.04.


1. Prérequis

  • Un serveur ou VM avec Docker installébashsudo apt update && sudo apt install docker.io -y sudo systemctl enable –now docker sudo usermod -aG docker $USER # puis déconnectez/reconnectez-vous
  • Un répertoire pour la configuration d’Oxidized, par exemple ~/oxidized-config
  • Connaissance de base des droits de fichiers (nous utiliserons l’UID 30000)

2. Gérer les permissions (UID 30000)

À l’intérieur du conteneur, Oxidized tourne sous l’utilisateur oxidized (UID 30000).
Les fichiers créés dans le volume monté appartiendront à cet UID sur l’hôte.

Pour que Docker puisse écrire dans ~/oxidized-config :

mkdir -p ~/oxidized-config
sudo chown 30000:30000 ~/oxidized-config

3. Générer un fichier de configuration initial

Lancez une première fois Oxidized avec un volume monté. Il va créer un fichier d’exemple config qu’il vous demandera de modifier.

docker run --rm \
-v ~/oxidized-config:/home/oxidized/.config/oxidized \
docker.io/oxidized/oxidized:latest \
su - oxidized -c oxidized

Le message indique :

edit /home/oxidized/.config/oxidized/config

Sur votre hôte, éditez ~/oxidized-config/config selon vos besoins (sources, authentification, sorties Git, API…).
Créez également un fichier ~/oxidized-config/router.db (si vous utilisez la source CSV) ou configurez une autre source (NetBox, SQL).


4. Lancer le conteneur en service

Une fois la configuration prête, lancez Oxidized avec redémarrage automatique et exposition du port API (8888).

docker run --restart always \
--name oxidized \
-v ~/oxidized-config:/home/oxidized/.config/oxidized \
-p 8888:8888/tcp \
-d \
docker.io/oxidized/oxidized:latest

Important : Pour que l’API REST et l’interface web soient accessibles depuis l’extérieur, éditez ~/oxidized-config/config et remplacez rest: 127.0.0.1:8888 par rest: 0.0.0.0:8888. Ensuite redémarrez le conteneur.

Vérifiez les logs :

docker logs oxidized

5. Utiliser docker-compose (recommandé pour la production)

Créez un fichier docker-compose.yml :

version: "3"
services:
oxidized:
restart: always
image: docker.io/oxidized/oxidized:latest
container_name: oxidized
ports:
- "8888:8888/tcp"
environment:
CONFIG_RELOAD_INTERVAL: 86400 # recharge la source (ex: NetBox) toutes les 24h
volumes:
- ~/oxidized-config/config:/home/oxidized/.config/oxidized/

Démarrez le service

docker-compose up -d

6. Configurations avancées (sous Docker)

Rechargement automatique de la configuration

Ajoutez la variable d’environnement CONFIG_RELOAD_INTERVAL (en secondes) :

-e CONFIG_RELOAD_INTERVAL=3600

Utiliser une autorité de certification interne

Montez votre fichier .crt et activez la mise à jour :

-v /etc/ssl/certs/ma-ca.crt:/usr/local/share/ca-certificates/ma-ca.crt \
-e UPDATE_CA_CERTIFICATES=true

Passphrase SSH pour un dépôt Git distant

bash

-e OXIDIZED_SSH_PASSPHRASE="ma_passphrase"

Stocker les clés SSH pour le hook githubrepo

Montez un répertoire ~/oxidized-ssh vers /home/oxidized/.ssh :

  1. Créez la clé SSH (sur l’hôte) :bashmkdir -p ~/oxidized-ssh ssh-keygen -q -t ed25519 -C « Oxidized Push Key » -N « VOTRE_PASSPHRASE » -m PEM -f ~/oxidized-ssh/oxidized-key
  2. Récupérez la clé publique de votre serveur Git :bashssh-keyscan git-server.exemple.com > ~/oxidized-ssh/known_hosts
  3. Ajustez les droits pour l’UID 30000 :bashsudo chown -R 30000:30000 ~/oxidized-ssh
  4. Montez le volume au lancement :bash-v ~/oxidized-ssh:/home/oxidized/.ssh

✅ Vérification et accès

Une fois le conteneur lancé :

  • API REST : http://votre-serveur:8888
  • Liste des nœuds : curl http://votre-serveur:8888/nodes

Oxidized va maintenant sauvegarder périodiquement les équipements listés dans votre source (router.db, NetBox…).


🧹 Supprimer et recréer le conteneur

docker stop oxidized
docker rm oxidized
# relancer la commande docker run ou docker-compose up -d

🔗 Liens utiles


Cet article est une adaptation Debian/Ubuntu + Docker de la documentation officielle Oxidized.

Share

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Post comment