Files
docker-images/images/netbox/README.md
Damien Arnodo 277761107d
All checks were successful
Build and Push Docker Images / build (push) Successful in 5s
docs(netbox): add branching configuration and version compatibility matrix
2026-01-07 13:43:43 +00:00

4.2 KiB

NetBox Docker Image avec Plugins

Image Docker NetBox personnalisée avec plugins pré-installés, construite automatiquement via Gitea Actions.

Plugins inclus

Par défaut, les plugins suivants sont installés :

Plugin Description Version (pour NetBox 4.4.x)
netbox-branching Branching et change management (NetBox Labs) 0.7.x
netbox-bgp Gestion des sessions BGP, peers, communities 0.17.x
netbox-secrets Gestion sécurisée des secrets et mots de passe latest
netbox-topology-views Visualisation de topologie réseau latest

Utilisation

Pull depuis le registry

# Dernière version
docker pull gitea.arnodo.fr/damien/netbox:latest

# Version spécifique
docker pull gitea.arnodo.fr/damien/netbox:v4.4

Avec Docker Compose

Créer un docker-compose.override.yml pour utiliser l'image personnalisée :

services:
  netbox:
    image: gitea.arnodo.fr/damien/netbox:v4.4
    pull_policy: always
  netbox-worker:
    image: gitea.arnodo.fr/damien/netbox:v4.4
    pull_policy: always
  netbox-housekeeping:
    image: gitea.arnodo.fr/damien/netbox:v4.4
    pull_policy: always

⚠️ Configuration requise pour netbox-branching

Le plugin netbox-branching nécessite une configuration spéciale de la base de données. Tu dois modifier ta configuration NetBox pour wrapper DATABASES avec DynamicSchemaDict.

Dans ton configuration.py ou via variables d'environnement :

from netbox_branching.utilities import DynamicSchemaDict

DATABASES = DynamicSchemaDict({
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'netbox',
        'USER': 'netbox',
        'PASSWORD': 'password',
        'HOST': 'postgres',
        'PORT': '',
    }
})

DATABASE_ROUTERS = [
    'netbox_branching.database.BranchAwareRouter',
]

Permissions PostgreSQL requises

L'utilisateur PostgreSQL doit avoir la permission de créer des schemas :

GRANT CREATE ON DATABASE netbox TO netbox;

Voir la documentation officielle netbox-branching pour plus de détails.

Gestion des versions

La version de NetBox est définie dans le fichier NETBOX_VERSION. Pour changer de version :

  1. Modifier le fichier NETBOX_VERSION avec la version souhaitée (ex: v4.4)
  2. Mettre à jour les versions des plugins dans plugin_requirements.txt si nécessaire
  3. Commit et push
  4. Le CI va automatiquement :
    • Builder l'image avec cette version de NetBox
    • Tagger l'image avec latest ET avec la version (ex: v4.4)

Compatibilité plugins / NetBox

NetBox netbox-branching netbox-bgp
4.4.x 0.7.x 0.17.x
4.5.x 0.8.x+ 0.18.x+

Personnalisation des plugins

Ajouter un plugin

  1. Éditer plugin_requirements.txt et ajouter le package PyPI
  2. Éditer plugins.py et ajouter le plugin à la liste PLUGINS
  3. Configurer le plugin dans PLUGINS_CONFIG si nécessaire
  4. Commit et push - l'image sera rebuild automatiquement

Structure des fichiers

images/netbox/
├── Dockerfile              # Image principale
├── NETBOX_VERSION          # Version de NetBox à utiliser
├── plugin_requirements.txt # Liste des plugins PyPI (avec versions)
├── plugins.py              # Configuration des plugins
└── README.md               # Cette documentation

Plugins - Liens et documentation

Notes

  • L'image utilise uv pip pour l'installation des plugins (méthode officielle NetBox Docker)
  • Les assets statiques sont collectés au premier démarrage (pas au build)
  • Compatible avec NetBox >= 4.0 (netbox-branching requiert NetBox 4.1+)
  • Le fichier NETBOX_VERSION contrôle la version de base et le tag de l'image
  • Les versions des plugins sont fixées pour garantir la compatibilité