1
Actualización
groales edited this page 2025-12-04 10:20:42 +01:00
This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Actualización

Mantén NetBox y sus componentes actualizados de forma segura.

Antes de Actualizar

1. Backup Completo

# Ejecutar script de backup
/root/backup-netbox.sh

# O manualmente
docker exec netbox-db pg_dump -U netbox netbox | gzip > netbox-pre-update-$(date +%Y%m%d).sql.gz

2. Verificar Notas de Release

3. Planificar Ventana de Mantenimiento

  • Actualizar en horario de bajo uso
  • Informar a usuarios
  • Preparar rollback si es necesario

Actualizar NetBox

Método 1: Pull de Imagen

# 1. Backup
docker exec netbox-db pg_dump -U netbox netbox > netbox-pre-update.sql

# 2. Detener stack
docker stop netbox netbox-redis netbox-db

# 3. Actualizar imágenes
docker pull lscr.io/linuxserver/netbox:latest

# 4. Iniciar stack
docker start netbox-db
sleep 10
docker start netbox-redis
sleep 5
docker start netbox

# 5. Verificar logs
docker logs -f netbox

Método 2: Recrear Contenedores (Portainer)

  1. Ve al stack en Portainer
  2. Click en Pull and redeploy
  3. Verifica logs del contenedor

Verificar Actualización

# Ver versión actual
docker exec netbox python /app/netbox/manage.py version

# Ver logs de migración
docker logs netbox | grep -i migration

# Verificar en UI
# Admin → System → About

Actualizar PostgreSQL

De PostgreSQL 16 a 18

Si vienes de una versión anterior con PostgreSQL 16:

# 1. BACKUP CRÍTICO
docker exec netbox-db pg_dump -U netbox netbox > netbox-pg-migration-$(date +%Y%m%d).sql

# 2. Detener NetBox y Redis
docker stop netbox netbox-redis

# 3. Detener y eliminar PostgreSQL 16
docker stop netbox-db
docker rm netbox-db

# 4. Eliminar volumen antiguo
docker volume rm netbox_db

# 5. Recrear volumen
docker volume create netbox_db

# 6. Actualizar compose a postgres:18-alpine
# Editar docker-compose.yml si es necesario

# 7. Iniciar PostgreSQL 18
docker compose up -d netbox-db

# 8. Esperar que esté listo
sleep 10
docker exec netbox-db pg_isready -U netbox

# 9. Restaurar datos
cat netbox-pg-migration-20250101.sql | docker exec -i netbox-db psql -U netbox netbox

# 10. Iniciar servicios
docker start netbox-redis
sleep 5
docker start netbox

# 11. Verificar
docker logs -f netbox

Actualizar Redis

Redis 7 es muy estable, pero si necesitas actualizar:

# 1. Detener NetBox
docker stop netbox

# 2. Actualizar Redis
docker stop netbox-redis
docker pull redis:7-alpine
docker start netbox-redis

# 3. Reiniciar NetBox
docker start netbox

Redis solo almacena caché, no es crítico hacer backup


Actualizar Plugins

# Entrar al contenedor
docker exec -it netbox bash

# Ver plugins instalados
pip list | grep netbox

# Actualizar plugin específico
pip install --upgrade netbox-topology-views

# Actualizar todos los plugins
pip list --outdated | grep netbox- | cut -d' ' -f1 | xargs pip install --upgrade

# Salir
exit

# Reiniciar NetBox
docker restart netbox

Rollback (Si Algo Falla)

Rollback Rápido

# 1. Detener NetBox
docker stop netbox

# 2. Restaurar base de datos
gunzip < netbox-pre-update-20250101.sql.gz | docker exec -i netbox-db psql -U netbox netbox

# 3. Volver a imagen anterior (si guardaste el tag)
docker tag lscr.io/linuxserver/netbox:3.6.9 lscr.io/linuxserver/netbox:latest

# 4. Recrear contenedor
docker stop netbox
docker rm netbox
docker compose up -d netbox

# 5. Verificar
docker logs -f netbox

Rollback Completo

# Restaurar desde backup completo
# Ver sección "Restauración Completa" en Backup y Restauración

Automatizar Actualizaciones

Watchtower (No Recomendado para Producción)

Si quieres auto-actualizar (úsalo solo en dev/test):

services:
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 86400 --cleanup

Script de Actualización Controlada

#!/bin/bash
# /root/update-netbox.sh

# Backup pre-actualización
docker exec netbox-db pg_dump -U netbox netbox | gzip > /backups/netbox/netbox-pre-update-$(date +%Y%m%d).sql.gz

# Detener
docker stop netbox netbox-redis

# Actualizar imágenes
docker pull lscr.io/linuxserver/netbox:latest
docker pull redis:7-alpine

# Iniciar
docker start netbox-redis
sleep 5
docker start netbox

# Verificar
sleep 10
if docker ps | grep -q netbox; then
    echo "✓ NetBox actualizado correctamente"
else
    echo "✗ Error en actualización - revisar logs"
    exit 1
fi

Ejecuta manualmente o programa:

# Cron mensual (primer domingo a las 3 AM)
0 3 1-7 * 0 /root/update-netbox.sh >> /var/log/netbox-update.log 2>&1

Verificación Post-Actualización

Checklist

  • NetBox accesible vía web
  • Login funciona
  • API responde: curl -H "Authorization: Token TOKEN" https://netbox.example.com/api/
  • Plugins funcionan
  • Datos intactos (verificar dispositivos/IPs)
  • Webhooks operativos
  • Scripts personalizados funcionan

Comandos de Verificación

# Versión
docker exec netbox python /app/netbox/manage.py version

# Migraciones pendientes
docker exec netbox python /app/netbox/manage.py showmigrations | grep "\[ \]"

# Estado de servicios
docker ps -a | grep netbox

# Uso de recursos
docker stats netbox netbox-db netbox-redis --no-stream

Próximos Pasos

  1. Backup - Automatiza backups post-actualización
  2. Solución de Problemas - Si encuentras problemas