Custom builds netbox for work with Yandex Cloud
129
Образ NetBox (5.0.1) на базе официального netboxcommunity/netbox. Поднимается через Docker Compose вместе с PostgreSQL и Valkey (Redis-совместимое хранилище для очереди задач и кэша). Все секреты генерируются автоматически — никакой ручной настройки для запуска не требуется.
Образ: ralexan33/netbox:latest-5.0.1
| Сервис | Назначение |
|---|---|
| netbox | веб-приложение netbox |
| netbox-worker | фоновый обработчик задач (rqworker) |
| postgres | база данных PostgreSQL 18 |
| redis | Valkey — очередь задач (BD 0) |
| redis-cache | Valkey — кэш (BD 1) |
Все сервисы изолированы в отдельной сети netbox-net. Наружу открыт только веб-интерфейс NetBox (порт 8000); база и Valkey доступны лишь внутри сети. Данные хранятся в именованных томах и переживают перезапуск контейнеров.
sudo apt update
sudo apt upgrade
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh
sudo mkdir /opt/docker
sudo mkdir /opt/docker/netbox && cd /opt/docker/netbox
docker-compose.ymlsudo nano docker-compose.yml
Скопируйте в него содержимое целиком:
networks:
netbox-net:
name: netbox-net
driver: bridge
volumes:
netbox-postgres-data:
netbox-redis-data:
netbox-redis-cache-data:
netbox-media:
netbox-scripts:
netbox-reports:
services:
postgres:
image: docker.io/postgres:18-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- netbox-postgres-data:/var/lib/postgresql
networks:
- netbox-net
healthcheck:
test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER
start_period: 20s
timeout: 30s
interval: 10s
retries: 5
restart: unless-stopped
redis:
image: docker.io/valkey/valkey:9.0-alpine
command:
- sh
- -c
- valkey-server --appendonly yes --requirepass $$REDIS_PASSWORD
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD}
volumes:
- netbox-redis-data:/data
networks:
- netbox-net
healthcheck: &redis-healthcheck
test: '[ $$(valkey-cli --pass "$${REDIS_PASSWORD}" ping) = ''PONG'' ]'
start_period: 5s
timeout: 3s
interval: 1s
retries: 5
restart: unless-stopped
redis-cache:
image: docker.io/valkey/valkey:9.0-alpine
command:
- sh
- -c
- valkey-server --requirepass $$REDIS_PASSWORD
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD}
volumes:
- netbox-redis-cache-data:/data
networks:
- netbox-net
healthcheck: *redis-healthcheck
restart: unless-stopped
netbox: &netbox
image: ralexan33/netbox:latest-5.0.1
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
redis-cache:
condition: service_healthy
environment:
DB_HOST: postgres
DB_NAME: ${POSTGRES_DB}
DB_USER: ${POSTGRES_USER}
DB_PASSWORD: ${POSTGRES_PASSWORD}
REDIS_HOST: redis
REDIS_PORT: "6379"
REDIS_DATABASE: "0"
REDIS_PASSWORD: ${REDIS_PASSWORD}
REDIS_CACHE_HOST: redis-cache
REDIS_CACHE_PORT: "6379"
REDIS_CACHE_DATABASE: "1"
REDIS_CACHE_PASSWORD: ${REDIS_PASSWORD}
SECRET_KEY: ${SECRET_KEY}
ALLOWED_HOSTS: "*"
SKIP_SUPERUSER: "false"
SUPERUSER_NAME: admin
SUPERUSER_EMAIL: [email protected]
SUPERUSER_PASSWORD: ${SUPERUSER_PASSWORD_NETBOX}
volumes:
- netbox-media:/opt/netbox/netbox/media:rw
- netbox-scripts:/opt/netbox/netbox/scripts:rw
- netbox-reports:/opt/netbox/netbox/reports:rw
ports:
- "8000:8080"
networks:
- netbox-net
healthcheck:
test: ["CMD", "/opt/netbox/venv/bin/python", "-c", "import sys,urllib.request; sys.exit(0 if urllib.request.urlopen('http://localhost:8080/login/', timeout=5).status==200 else 1)"]
start_period: 300s
interval: 15s
timeout: 10s
retries: 5
restart: unless-stopped
netbox-worker:
<<: *netbox
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/venv/bin/python
- /opt/netbox/netbox/manage.py
- rqworker
ports: []
healthcheck:
disable: true
.env со случайными секретамиЭта команда создаёт .env рядом с docker-compose.yml и заполняет все пароли и ключ случайными значениями. Ничего вручную править не нужно:
sudo tee .env > /dev/null <<ENVEOF
# PostgreSQL
POSTGRES_DB=netbox
POSTGRES_USER=netbox
POSTGRES_PASSWORD=$(openssl rand -hex 16)
# Valkey (Redis)
REDIS_PASSWORD=$(openssl rand -hex 16)
# NetBox
SECRET_KEY=$(openssl rand -hex 32)
SUPERUSER_PASSWORD_NETBOX=$(openssl rand -hex 12)
ENVEOF
sudo docker compose up -d
Первый запуск идёт 2–3 минуты: NetBox применяет все миграции базы и строит поисковый индекс. Команда
up -dбудет «висеть» всё это время и завершится сама, когдаnetboxстанет healthy. Это нормально — дайте ей доработать.
Логин администратора — admin, пароль был сгенерирован в шаге 3. Посмотреть его:
sudo grep SUPERUSER_PASSWORD_NETBOX .env
Откройте в браузере http://<адрес-сервера>:8000 и войдите под admin с этим паролем.
Проверить статус сервисов в любой момент:
sudo docker compose ps
sudo docker compose stop # остановить (данные сохраняются)
sudo docker compose start # запустить снова
sudo docker compose logs -f # смотреть логи всех сервисов
sudo docker compose down # остановить и удалить контейнеры (тома остаются)
sudo docker compose down -v # удалить всё вместе с данными
Для запуска ничего из этого не нужно — NetBox использует значения по умолчанию. Но при необходимости любые переменные NetBox можно добавить в блок environment сервиса netbox. Например:
environment:
# ...существующие переменные...
GRANIAN_WORKERS: "4" # число воркеров веб-сервера
EMAIL_SERVER: smtp.example.com # настройки почты
EMAIL_PORT: "587"
EMAIL_USE_TLS: "true"
Замечание: при первом запуске в логах есть предупреждение API_TOKEN_PEPPERS is not defined — это не ошибка, оно лишь означает, что API-токены v2 отключены. Чтобы их включить и убрать предупреждение, добавьте переменную API_TOKEN_PEPPER_1 со случайным значением.
Конфигурация рассчитана на быстрый старт. Для боевого окружения:
ALLOWED_HOSTS: "*" на ваш реальный домен;.env вне системы контроля версий и регулярно ротируйте секреты.Content type
Image
Digest
sha256:22a809937…
Size
244.9 MB
Last updated
4 months ago
docker pull ralexan33/netbox