← Todos los posts

Infraestructura · · Lectura de 12 min

Instala NetBox en Debian con Docker, Nginx y TLS

Esta guía instala una instancia única de NetBox desde la release oficial netbox-docker. Empieza privada y solo publica HTTPS después de obtener un certificado.

Antes de empezar

Usa Debian 12 o 13 con Docker Engine y el plugin Compose moderno. Elige un dominio completo y crea DNS antes de solicitar TLS.

  • La pila contiene NetBox, worker, PostgreSQL, Valkey, Nginx y Certbot.
  • 4 GiB RAM, 2 vCPU y 40 GiB libres son una referencia práctica; el pre-check alerta sin bloquear laboratorios menores.
  • El instalador no crea DNS ni reglas de firewall.

Usa el instalador versionado

El instalador valida el host, prepara una release fija de netbox-docker, solicita la primera cuenta administrativa sin mostrar la contraseña e inicia NetBox solo en localhost antes de TLS.

sh
curl -fsSL https://scripts.lrq.lat/netbox/v1/install.sh | sudo bash

Descarga la ruta estable v1 y abre el menú portátil.

sh
curl -fsSL https://scripts.lrq.lat/netbox/v1/install.sh | sudo bash -s -- preflight --yes

Comprueba plataforma, Docker, puertos, recursos, hora e instalaciones parciales sin cambiar el host.

sh
curl -fsSL https://scripts.lrq.lat/netbox/v1/install.sh | sudo bash -s -- tls

Solicita o repite TLS después de preparar DNS y TCP 80/443.

Instalación manual y segura

Usa este camino cuando cada modificación requiera revisión. Emplea la release oficial 5.0.2 de netbox-docker y mantiene archivos y secretos restringidos bajo /opt/lrqnet/netbox.

sh
sudo apt update
sudo apt install -y ca-certificates git openssl
sudo install -d -m 0750 /opt/lrqnet/netbox
sudo git clone --depth 1 --branch 5.0.2 https://github.com/netbox-community/netbox-docker.git /opt/lrqnet/netbox/netbox-docker
sudo git -C /opt/lrqnet/netbox/netbox-docker rev-parse HEAD

Instala herramientas de revisión, clona la release oficial fija y muestra el commit para verificarlo.

sh
sudo install -d -m 0750 /opt/lrqnet/netbox/netbox-docker/env
read -rsp 'Contraseña inicial del administrador NetBox: ' NETBOX_ADMIN_PASSWORD; printf '\n'
read -rsp 'Confirma la contraseña: ' NETBOX_ADMIN_PASSWORD_CONFIRM; printf '\n'
[ "$NETBOX_ADMIN_PASSWORD" = "$NETBOX_ADMIN_PASSWORD_CONFIRM" ] || { echo 'Las contraseñas no coinciden' >&2; exit 1; }
[ "${#NETBOX_ADMIN_PASSWORD}" -ge 12 ] || { echo 'Usa al menos 12 caracteres' >&2; exit 1; }
NETBOX_SECRET_KEY="$(openssl rand -base64 48 | tr -d '\n')"

Crea un directorio restringido, solicita la contraseña sin eco y genera el secreto localmente. No guardes valores en historial, tickets o respaldos sin cifrar.

sh
sudo docker compose --project-directory /opt/lrqnet/netbox/netbox-docker config
sudo docker compose --project-directory /opt/lrqnet/netbox/netbox-docker up -d
sudo docker compose --project-directory /opt/lrqnet/netbox/netbox-docker ps

Valida la configuración resuelta, inicia los servicios persistentes y muestra el estado. Revisa el override Nginx/Certbot antes de publicar el servicio.

TLS, validación y mantenimiento

TLS usa Nginx y Certbot HTTP-01. Si la emisión falla, se elimina el listener público y NetBox queda privado. Un timer systemd renueva certificados y recarga Nginx.

sh
sudo systemctl status lrqnet-netbox-renew.timer --no-pager
sudo docker compose --project-directory /opt/lrqnet/netbox/netbox-docker ps
sudo docker compose --project-directory /opt/lrqnet/netbox/netbox-docker logs --tail=100 netbox netbox-worker

Comprueba renovación, salud y logs recientes. Revísalos localmente porque pueden incluir contexto privado.

sh
sudo docker compose --project-directory /opt/lrqnet/netbox/netbox-docker down

Detiene la pila sin eliminar volúmenes. No uses --volumes sin querer borrar datos.

Script y release