Что такое NetBird
Если вам нужен современный VPN без сложной настройки WireGuard, постоянного редактирования конфигураций и ручного обмена ключами, NetBird — одно из лучших решений.
В отличие от классического WireGuard, где администратор самостоятельно управляет каждым пиром, NetBird автоматизирует практически весь процесс:
- обмен ключами;
- регистрацию новых устройств;
- управление доступом;
- маршрутизацию;
- работу через NAT;
- ACL;
- подключение новых пользователей.
В результате вы получаете корпоративную VPN-сеть, которую можно масштабировать от двух устройств до нескольких тысяч.

Когда стоит использовать NetBird
NetBird отлично подходит для:
- домашней лаборатории (Homelab);
- удаленного доступа к серверу;
- объединения нескольких офисов;
- безопасного подключения сотрудников;
- доступа к Kubernetes;
- защищенного SSH;
- DevOps-инфраструктуры;
- резервного VPN между дата-центрами.

Почему именно Docker
Официальная self-hosted версия NetBird распространяется именно через Docker Compose.
Это дает множество преимуществ.
- быстрое развертывание
- простое обновление
- изоляция сервисов
- удобное резервное копирование
- переносимость между VPS
Практически вся установка занимает несколько минут.
Вариант 1: Запуск клиента NetBird (Agent)
Этот сценарий подходит, если у вас уже есть развернутый экземпляр NetBird (облачный или self-hosted), и вы хотите добавить к нему новую машину через Docker.
1. Базовый запуск с Setup Key
Для подключения к сети вам понадобится Setup Key, который можно создать в веб-интерфейсе вашего экземпляра NetBird .
Самый простой способ запустить клиента — использовать переменную окружения NB_SETUP_KEY:
bash
docker run --rm --name netbird-client \ --hostname my-docker-host \ --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --cap-add=SYS_RESOURCE \ -d \ -e NB_SETUP_KEY="<ВАШ_SETUP_KEY>" \ -v netbird-client:/var/lib/netbird \ netbirdio/netbird:latest
Разбор параметров:
--cap-add=...: Добавляет необходимые ядерные возможности для работы WireGuard и eBPF .-v netbird-client:/var/lib/netbird: Создает том для сохранения состояния клиента (ключи, конфигурация), чтобы при перезапуске контейнера не требовалась повторная авторизация .NB_SETUP_KEY: Ключ для регистрации пира в сети .
Если вы используете Self-Hosted версию, необходимо указать URL вашего сервера через переменную NB_MANAGEMENT_URL:
bash
docker run ... -e NB_SETUP_KEY="..." -e NB_MANAGEMENT_URL="https://ваш-домен:443" ...
2. Запуск через Docker Compose
Для более удобного управления конфигурацией можно использовать docker-compose.yml :
yaml
services:
netbird-client:
container_name: netbird-client
hostname: my-docker-host
cap_add:
- NET_ADMIN
- SYS_ADMIN
- SYS_RESOURCE
devices:
- /dev/net/tun
network_mode: host
environment:
- NB_SETUP_KEY=<ВАШ_SETUP_KEY>
- NB_MANAGEMENT_URL=https://ваш-домен:443 # Опционально для self-hosted
volumes:
- netbird-client:/var/lib/netbird
image: netbirdio/netbird:latest
volumes:
netbird-client:
name: netbird-client
Важно: Режим
network_mode: hostчасто требуется для корректной работы и упрощения маршрутизации, особенно если вы планируете использовать контейнер как роутер для трафика других сервисов на хосте .
3. Беспривилегированный режим (Rootless)
Если вы не можете или не хотите выдавать контейнеру повышенные привилегии, существует образ rootless. Он использует пользовательский стек WireGuard (Netstack) и не требует NET_ADMIN.
bash
docker run --rm --name netbird-client \ -e NB_SETUP_KEY="<ВАШ_SETUP_KEY>" \ -v netbird-client:/var/lib/netbird \ netbirdio/netbird:rootless-latest
Ограничение: Rootless-режим подходит для входящих подключений, но может не поддерживать исходящий трафик в обход SOCKS-прокси .
4. Проверка статуса
Чтобы проверить, подключился ли клиент, выполните команду внутри контейнера:
bash
docker exec -it netbird-client netbird status
Вариант 2: Развертывание сервера NetBird (Self-Hosted)
Этот сценарий разворачивает полную инфраструктуру NetBird (Management, Signal, Relay, Dashboard) на вашем собственном сервере.
1. Быстрый старт (Quickstart Script)
Разработчики NetBird предлагают официальный скрипт быстрой установки, который автоматически генерирует файлы docker-compose.yml и config.yaml .
- Скачайте и запустите скрипт:bashbash <(curl -s https://raw.githubusercontent.com/netbirdio/netbird/main/scripts/quickstart.sh)Либо клонируйте репозиторий вручную:bashgit clone —depth 1 —branch $LATEST_TAG https://github.com/netbirdio/netbird.git cd netbird/infrastructure_files/ ./configure.sh
- Во время работы скрипт запросит:
2. Структура сгенерированных файлов
После выполнения скрипта в папке появятся файлы :
docker-compose.yml: Оркестрация контейнеров.config.yaml: Основная конфигурация сервера (порты, хранилище, настройки аутентификации).dashboard.env: Переменные окружения для веб-интерфейса.
3. Запуск и управление сервисами
Запустите все сервисы командой:
bash
docker compose up -d
| Команда | Описание |
|---|---|
docker compose ps | Проверить статус контейнеров |
docker compose logs -f | Посмотреть логи всех сервисов |
docker compose pull && docker compose up -d | Обновить образы и перезапустить сервисы |
docker compose down --volumes | Осторожно! Остановить и удалить все данные (включая БД) |
4. Начальная настройка
После запуска откройте в браузере https://ваш-домен. Вы будете перенаправлены на страницу /setup для создания первого администратора (если пользователей еще нет) .
Persistent Volume: Том
netbird_data хранит базу данных SQLite. Обязательно делайте резервные копии этого тома, чтобы не потерять конфигурацию пиров и политик .
Управление ключами: Для автоматизации создания пиров используйте Setup Keys, а не интерактивный логин через браузер .