# 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 ```bash # 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 : ```yaml 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 : ```python 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 : ```sql GRANT CREATE ON DATABASE netbox TO netbox; ``` Voir la [documentation officielle netbox-branching](https://netboxlabs.com/docs/extensions/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 - **netbox-branching** : https://github.com/netboxlabs/netbox-branching - **netbox-bgp** : https://github.com/netbox-community/netbox-bgp - **netbox-secrets** : https://github.com/Onemind-Services-LLC/netbox-secrets - **netbox-topology-views** : https://github.com/netbox-community/netbox-topology-views ## 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é