Portainer: Визуальное управление Docker-контейнерами для вашего домашнего сервера

Пошаговая инструкция по установке и настройке Portainer для визуального управления Docker-контейнерами на домашнем сервере. Упростите работу с Docker на Raspberry Pi, Orange Pi.
Если вы, как и я, увлекаетесь домашними серверами на одноплатниках вроде Raspberry Pi или Orange Pi, то наверняка сталкивались с Docker. Эта технология — настоящая магия: она позволяет запускать приложения в изолированных «контейнерах», не засоряя основную систему. Но по мере роста числа контейнеров управление ими через командную строку становится громоздким. Именно здесь на сцену выходит Portainer — легковесный и мощный веб-интерфейс для управления Docker. Сегодня я подробно расскажу, как установить и настроить Portainer, чтобы вы могли управлять своими контейнерами буквально в пару кликов из браузера.
Что такое Portainer и зачем он мне?
Portainer — это открытое программное обеспечение с веб-интерфейсом, которое предоставляет наглядную панель управления для Docker (и Kubernetes). Вместо того чтобы запоминать многочисленные команды docker run, docker ps или docker-compose up, вы можете делать всё это через интуитивно понятный GUI.
Зачем это нужно энтузиасту умного дома или DIY-проектов?
* Наглядность: Видите все запущенные контейнеры, образы, сети и тома на одной панели.
* Удобство: Запуск, остановка, перезагрузка контейнеров, просмотр логов, доступ к консоли — всё в браузере.
* Безопасность: Можно создавать пользователей с разными правами доступа (если к вашему серверу имеют доступ другие члены семьи или проекта).
* Экономия времени: Развёртывание стека из нескольких контейнеров (например, для Home Assistant с его аддонами) происходит через загрузку готового docker-compose.yml файла.
Если вы уже используете Home Assistant для автоматизации, то Portainer станет для него отличным компаньоном, позволяя легко управлять его контейнером и соседними сервисами.
Установка Docker
Portainer — это тоже контейнер. Поэтому первым делом нужно установить сам Docker Engine. Команды приведены для Debian/Ubuntu и производных (Raspberry Pi OS, DietPi, Armbian).
-
Обновляем репозитории и устанавливаем зависимости:
bash sudo apt update && sudo apt upgrade -y sudo apt install -y ca-certificates curl gnupg -
Добавляем официальный GPG-ключ Docker:
bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg -
Настраиваем репозиторий:
bash echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullПримечание: Эта команда автоматически определит архитектуру (arm64 для Raspberry Pi 3/4, armv7 для Pi 2) и версию ОС. -
Устанавливаем Docker:
bash sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Проверяем установку:
bash sudo docker run hello-worldЕсли вы увидите сообщение «Hello from Docker!», значит, всё установлено корректно.
Типичная ошибка: Пропуск шага добавления репозитория и установка старой версии Docker из репозитория ОС. Это может привести к проблемам с совместимостью. Всегда используйте официальный репозиторий.
Установка Portainer: два варианта
Portainer состоит из двух частей: Portainer Server (основной управляющий сервер) и Portainer Agent (легковесный компонент для удалённых Docker-хостов). Для управления одним сервером (самым распространённым сценарием в домашней лаборатории) достаточно Portainer Server.
Вариант 1: Установка Portainer Server (рекомендуется для начала)
Создаём volume для сохранения данных Portainer (чтобы настройки не пропали при обновлении контейнера) и запускаем контейнер.
sudo docker volume create portainer_data
sudo docker run -d
-p 8000:8000
-p 9443:9443
--name portainer
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_dаta:/data
portainer/portainer-ce:latest
Разберём команду по частям:
* -d – запуск в фоновом режиме (демон).
* -p 8000:8000 -p 9443:9443 – проброс портов. 9443 для основного HTTPS-интерфейса, 8000 для туннеля к агенту (пока не используется).
* --name portainer – имя контейнера.
* --restart=always – политика перезапуска. Контейнер автоматически запустится после перезагрузки системы.
* -v /var/run/docker.sock:/var/run/docker.sock – Ключевой момент. Это монтирование Docker-сокета хоста в контейнер. Именно это даёт Portainer'у возможность управлять Docker-демоном.
* -v portainer_dаta:/data – монтирование тома для хранения данных.
* portainer/portainer-ce:latest – образ Community Edition.
Вариант 2: Установка с Docker Compose (более структурированный способ)
Я предпочитаю этот способ для всех своих сервисов. Создаём файл docker-compose.yml.
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_dаta:/data
volumes:
portainer_dаta:
Запускаем стек:
sudo docker compose up -d
Первоначальная настройка Portainer
-
Откройте браузер и перейдите по адресу:
https://<IP_ВАШЕГО_СЕРВЕРА>:9443.- Например:
https://192.168.1.100:9443. - Браузер предупредит о самоподписанном сертификате — это нормально. Смело продолжайте (обычно кнопка «Дополнительно» -> «Перейти на сайт»).
- Например:
-
Создание администратора: На первой странице вам предложат создать учётную запись администратора. Заполните поля «Username» и «Password». Запомните эти данные!
-
Подключение к Docker: На следующем экране выберите «Get Started» в карточке «Local». Portainer автоматически подключится к Docker-демону через смонтированный сокет.
Типичная ошибка: Не получается зайти по IP-адресу. Убедитесь, что:
* Вы указали правильный IP-адрес вашего одноплатника (узнать можно командой hostname -I).
* На хосте не блокирует порт 9443 фаервол (например, ufw). Для открытия выполните sudo ufw allow 9443.
Обзор интерфейса и базовые операции
После входа вы попадёте в дашборд. Слева — основное меню.
Контейнеры (Containers)
Здесь отображается список всех контейнеров. Для каждого доступны кнопки быстрых действий: запуск (▶️), остановка (⏹️), перезагрузка (↻). Кликнув на имя контейнера, вы попадёте в детальное управление:
* Logs: Просмотр журнала в реальном времени. Незаменимо для отладки.
* Console: Прямой доступ к командной строке контейнера. Можно выполнить ls, cat и другие команды.
* Inspect: Вся низкоуровневая информация о контейнере в формате JSON.
* Stats: Графики потребления CPU, памяти и сети.
Практика: Попробуйте остановить и снова запустить какой-нибудь контейнер.
Образы (Images)
Раздел для управления Docker-образами. Здесь можно загрузить новый образ (Pull), удалить неиспользуемые, посмотреть историю.
Практика: Загрузим образ для теста. В поле «Pull image» введите nginx:alpine и нажмите «Pull the image». Через мгновение легковесный образ веб-сервера появится в списке.
Сети (Networks) и Тома (Volumes)
Тут всё интуитивно. Можно создавать пользовательские сети для изоляции группы контейнеров (например, отдельная сеть для сервисов умного дома) и управлять томами для хранения данных.
Развёртывание нового контейнера через Portainer
Давайте запустим только что загруженный Nginx.
- Перейдите в Containers и нажмите «Add container».
- Имя контейнера:
my-web-test. - Образ:
nginx:alpine. - Порты: В секции «Manual network port publishing» нажмите «Map additional port». Укажите
8080как Host port и80как Container port. Теперь веб-сервер будет доступен на порту 8080 вашего хоста. - Прокрутите вниз и нажмите «Deploy the container».
Проверка результата:
Откройте браузер и перейдите по адресу http://<IP_ВАШЕГО_СЕРВЕРА>:8080. Вы должны увидеть стартовую страницу «Welcome to nginx!». Поздравляю, вы только что запустили контейнер через веб-интерфейс!
Работа с Docker Compose в Portainer
Это одна из самых мощных функций. Допустим, у вас есть готовый docker-compose.yml файл для развёртывания Node-RED, который вы хотите подключить к Home Assistant.
- В левом меню выберите Stacks.
- Нажмите «Add stack».
- Дайте стеку имя, например,
nodered-stack. - В поле «Web editor» вставьте содержимое вашего
docker-compose.ymlфайла. Например:yaml version: '3.8' services: nodered: image: nodered/node-red:latest container_name: nodered restart: unless-stopped ports: - "1880:1880" volumes: - node_red_dаta:/data volumes: node_red_dаta: - Нажмите «Deploy the stack».
Portainer развернёт все сервисы, описанные в файле, как единое целое. Управлять стеком (остановить, запустить, удалить) можно также централизованно.
Безопасность и рекомендации
- Смените порт по умолчанию (опционально): Если 9443 занят, вы можете изменить его в команде
docker runили вdocker-compose.yml(например, на-p 8443:9443). - Используйте HTTPS: Portainer по умолчанию использует самоподписанный сертификат. Для серьёзного использования настройте свой сертификат (например, от Let's Encrypt) через опцию
-v /path/to/certs:/certsи соответствующие переменные окружения (--ssl). - Резервное копирование: Ваши настройки Portainer хранятся в томе
portainer_data. Чтобы сделать бэкап, используйте команду:bash sudo docker run --rm -v portainer_dаta:/data -v $(pwd):/backup alpine tar czf /backup/portainer-backup-$(date +%Y%m%d).tar.gz -C /data .Это создаст архив в текущей директории. Восстановление похоже на принципы, описанные в статье про надёжный бэкап Home Assistant.
Заключение
Portainer кардинально упрощает жизнь любому, кто работает с Docker на домашнем сервере — будь то медиасервер на NanoPi M4V2 или платформа для умного дома на Raspberry Pi. Он заменяет десятки сложных команд нажатием кнопок, предоставляет наглядную информацию и снижает порог входа для новичков.
Потратьте полчаса на его установку — и вы больше не захотите возвращаться к чистому CLI для рутинных операций. А когда освоитесь, попробуйте подключить через Portainer Agent другие ваши одноплатники (например, с ESP32 Web Server) для создания единой панели управления всей вашей DIY-инфраструктурой.
Удачи в экспериментах!
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
VPN только для выбранных сайтов и устройств в OpenWrt: раздельная маршрутизация трафика
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
ZeroBlock для OpenWrt: настройка VPN и маршрутизации на Routerich
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
Как выбрать LTE/5G-модем для Routerich AX3000: от простого E3372 до T77W968, T99W175 и FM350